"{\"numFailedTestSuites\":0,\"numFailedTests\":0,\"numPassedTestSuites\":11,\"numPassedTests\":102,\"numPendingTestSuites\":0,\"numPendingTests\":0,\"numRuntimeErrorTestSuites\":0,\"numTodoTests\":0,\"numTotalTestSuites\":11,\"numTotalTests\":102,\"openHandles\":[],\"snapshot\":{\"added\":0,\"didUpdate\":false,\"failure\":false,\"filesAdded\":0,\"filesRemoved\":0,\"filesRemovedList\":[],\"filesUnmatched\":0,\"filesUpdated\":0,\"matched\":0,\"total\":0,\"unchecked\":0,\"uncheckedKeysByFile\":[],\"unmatched\":0,\"updated\":0},\"startTime\":1615204299882,\"success\":false,\"testResults\":[{\"leaks\":false,\"numFailingTests\":0,\"numPassingTests\":12,\"numPendingTests\":0,\"numTodoTests\":0,\"openHandles\":[],\"perfStats\":{\"end\":1615204305247,\"runtime\":5263,\"slow\":true,\"start\":1615204299984},\"skipped\":false,\"snapshot\":{\"added\":0,\"fileDeleted\":false,\"matched\":0,\"unchecked\":0,\"unmatched\":0,\"updated\":0,\"uncheckedKeys\":[]},\"testFilePath\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\tests\\\\users.test.js\",\"testResults\":[{\"ancestorTitles\":[\"Admin SignUp & Login\"],\"duration\":95,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Admin SignUp & Login Admin SignUp - Validation error - 403\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"Admin SignUp - Validation error - 403\"},{\"ancestorTitles\":[\"Admin SignUp & Login\"],\"duration\":288,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Admin SignUp & Login Admin SignUp - 200\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"Admin SignUp - 200\"},{\"ancestorTitles\":[\"Admin SignUp & Login\"],\"duration\":13,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Admin SignUp & Login Admin SignUp - Already Existing - 403\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"Admin SignUp - Already Existing - 403\"},{\"ancestorTitles\":[\"Admin SignUp & Login\"],\"duration\":330,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Admin SignUp & Login Admin Login with wrong credentials - wrong username - 401\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"Admin Login with wrong credentials - wrong username - 401\"},{\"ancestorTitles\":[\"Admin SignUp & Login\"],\"duration\":229,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Admin SignUp & Login Admin Login with wrong credentials - wrong password - 401\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"Admin Login with wrong credentials - wrong password - 401\"},{\"ancestorTitles\":[\"Admin SignUp & Login\"],\"duration\":278,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Admin SignUp & Login Admin Login with correct credentials - 200\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"Admin Login with correct credentials - 200\"},{\"ancestorTitles\":[\"User Login\"],\"duration\":224,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"User Login User Login with correct credentials - 200\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"User Login with correct credentials - 200\"},{\"ancestorTitles\":[\"User Login\"],\"duration\":249,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"User Login User Login with wrong credentials - wrong password - 401\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"User Login with wrong credentials - wrong password - 401\"},{\"ancestorTitles\":[\"User Login\"],\"duration\":24,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"User Login User Login with wrong credentials - wrong username - 401\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"User Login with wrong credentials - wrong username - 401\"},{\"ancestorTitles\":[\"change password\"],\"duration\":11,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"change password requires Authorization - 401\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"requires Authorization - 401\"},{\"ancestorTitles\":[\"change password\"],\"duration\":46,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"change password user Not found - 404\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"user Not found - 404\"},{\"ancestorTitles\":[\"change password\"],\"duration\":244,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"change password with Authorization - 200\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"with Authorization - 200\"}],\"failureMessage\":null,\"v8Coverage\":[{\"codeTransformResult\":{\"code\":\"var createError = require('http-errors');\\n\\nvar express = require('express');\\n\\nconst cors = require('cors');\\n\\nvar path = require('path');\\n\\nconst bodyParser = require('body-parser');\\n\\nconst expressValidator = require('express-validator');\\n\\nvar session = require('express-session');\\n\\nvar FileStore = require('session-file-store')(session);\\n\\nvar cookieParser = require('cookie-parser');\\n\\nvar logger = require('morgan');\\n\\nvar passport = require('passport');\\n\\nconst mongoose = require('mongoose');\\n\\nrequire('dotenv').config();\\n\\nvar userRouter = require('./routes/userRouter');\\n\\nvar employeeRouter = require('./routes/employeeRouter');\\n\\nvar placeRouter = require('./routes/placeRouter');\\n\\nvar scheduleRouter = require('./routes/scheduleRouter');\\n\\nvar touristRouter = require('./routes/touristRouter');\\n\\nvar dashboardRouter = require('./routes/dashboardRouter');\\n\\nvar app = express(); // view engine setup\\n\\napp.set('views', path.join(__dirname, 'views'));\\napp.set('view engine', 'jade');\\napp.use(cors());\\napp.use(passport.initialize());\\napp.use(bodyParser.json());\\napp.use(cookieParser('the-immortal-coils')); // app.use(logger('dev'));\\n\\napp.use(express.json());\\napp.use(express.urlencoded({\\n extended: false\\n}));\\napp.use(cookieParser()); // app.use(express.static('build'));\\n\\napp.use(express.static(path.join(__dirname, 'build')));\\nvar url = process.env.mongoUrl;\\n\\nif (process.env.NODE_ENV === 'test') {\\n url = process.env.testMongoUrl;\\n}\\n\\nmongoose.connect(url, {\\n useNewUrlParser: true,\\n useCreateIndex: true,\\n useUnifiedTopology: true\\n}).then(db => {}, err => {\\n if (err) {\\n console.log('👺 Error connecting to MongoDB');\\n } else {\\n console.log('✅ Connected to MongoDB');\\n }\\n});\\napp.use('/users', userRouter);\\napp.use('/employees', employeeRouter);\\napp.use('/places', placeRouter);\\napp.use('/schedules', scheduleRouter);\\napp.use('/tourists', touristRouter);\\napp.use('/dashboard', dashboardRouter); // catch 404 and forward to error handler\\n\\napp.use(function (req, res, next) {\\n next(createError(404));\\n}); // error handler\\n\\napp.use(function (err, req, res, next) {\\n // set locals, only providing error in development\\n res.locals.message = err.message;\\n res.locals.error = req.app.get('env') === 'development' ? err : {}; // render the error page\\n\\n res.status(err.status || 500);\\n res.render('error');\\n});\\nmodule.exports = app;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC5qcyJdLCJuYW1lcyI6WyJjcmVhdGVFcnJvciIsInJlcXVpcmUiLCJleHByZXNzIiwiY29ycyIsInBhdGgiLCJib2R5UGFyc2VyIiwiZXhwcmVzc1ZhbGlkYXRvciIsInNlc3Npb24iLCJGaWxlU3RvcmUiLCJjb29raWVQYXJzZXIiLCJsb2dnZXIiLCJwYXNzcG9ydCIsIm1vbmdvb3NlIiwiY29uZmlnIiwidXNlclJvdXRlciIsImVtcGxveWVlUm91dGVyIiwicGxhY2VSb3V0ZXIiLCJzY2hlZHVsZVJvdXRlciIsInRvdXJpc3RSb3V0ZXIiLCJkYXNoYm9hcmRSb3V0ZXIiLCJhcHAiLCJzZXQiLCJqb2luIiwiX19kaXJuYW1lIiwidXNlIiwiaW5pdGlhbGl6ZSIsImpzb24iLCJ1cmxlbmNvZGVkIiwiZXh0ZW5kZWQiLCJzdGF0aWMiLCJ1cmwiLCJwcm9jZXNzIiwiZW52IiwibW9uZ29VcmwiLCJOT0RFX0VOViIsInRlc3RNb25nb1VybCIsImNvbm5lY3QiLCJ1c2VOZXdVcmxQYXJzZXIiLCJ1c2VDcmVhdGVJbmRleCIsInVzZVVuaWZpZWRUb3BvbG9neSIsInRoZW4iLCJkYiIsImVyciIsImNvbnNvbGUiLCJsb2ciLCJyZXEiLCJyZXMiLCJuZXh0IiwibG9jYWxzIiwibWVzc2FnZSIsImVycm9yIiwiZ2V0Iiwic3RhdHVzIiwicmVuZGVyIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsSUFBSUEsV0FBVyxHQUFHQyxPQUFPLENBQUMsYUFBRCxDQUF6Qjs7QUFDQSxJQUFJQyxPQUFPLEdBQUdELE9BQU8sQ0FBQyxTQUFELENBQXJCOztBQUNBLE1BQU1FLElBQUksR0FBR0YsT0FBTyxDQUFDLE1BQUQsQ0FBcEI7O0FBQ0EsSUFBSUcsSUFBSSxHQUFHSCxPQUFPLENBQUMsTUFBRCxDQUFsQjs7QUFDQSxNQUFNSSxVQUFVLEdBQUdKLE9BQU8sQ0FBQyxhQUFELENBQTFCOztBQUNBLE1BQU1LLGdCQUFnQixHQUFHTCxPQUFPLENBQUMs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a0JWLFVBQWxCO0FBQ0FNLEdBQUcsQ0FBQ0ksR0FBSixDQUFRLFlBQVIsRUFBc0JULGNBQXRCO0FBQ0FLLEdBQUcsQ0FBQ0ksR0FBSixDQUFRLFNBQVIsRUFBbUJSLFdBQW5CO0FBQ0FJLEdBQUcsQ0FBQ0ksR0FBSixDQUFRLFlBQVIsRUFBc0JQLGNBQXRCO0FBQ0FHLEdBQUcsQ0FBQ0ksR0FBSixDQUFRLFdBQVIsRUFBcUJOLGFBQXJCO0FBQ0FFLEdBQUcsQ0FBQ0ksR0FBSixDQUFRLFlBQVIsRUFBc0JMLGVBQXRCLEUsQ0FFQTs7QUFDQUMsR0FBRyxDQUFDSSxHQUFKLENBQVEsVUFBVXFCLEdBQVYsRUFBZUMsR0FBZixFQUFvQkMsSUFBcEIsRUFBMEI7QUFDaENBLEVBQUFBLElBQUksQ0FBQy9DLFdBQVcsQ0FBQyxHQUFELENBQVosQ0FBSjtBQUNELENBRkQsRSxDQUlBOztBQUNBb0IsR0FBRyxDQUFDSSxHQUFKLENBQVEsVUFBVWtCLEdBQVYsRUFBZUcsR0FBZixFQUFvQkMsR0FBcEIsRUFBeUJDLElBQXpCLEVBQStCO0FBQ3JDO0FBQ0FELEVBQUFBLEdBQUcsQ0FBQ0UsTUFBSixDQUFXQyxPQUFYLEdBQXFCUCxHQUFHLENBQUNPLE9BQXpCO0FBQ0FILEVBQUFBLEdBQUcsQ0FBQ0UsTUFBSixDQUFXRSxLQUFYLEdBQW1CTCxHQUFHLENBQUN6QixHQUFKLENBQVErQixHQUFSLENBQVksS0FBWixNQUF1QixhQUF2QixHQUF1Q1QsR0FBdkMsR0FBNkMsRUFBaEUsQ0FIcUMsQ0FLckM7O0FBQ0FJLEVBQUFBLEdBQUcsQ0FBQ00sTUFBSixDQUFXVixHQUFHLENBQUNVLE1BQUosSUFBYyxHQUF6QjtBQUNBTixFQUFBQSxHQUFHLENBQUNPLE1BQUosQ0FBVyxPQUFYO0FBQ0QsQ0FSRDtBQVVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUJuQyxHQUFqQiIsInNvdXJjZXNDb250ZW50IjpbInZhciBjcmVhdGVFcnJvciA9IHJlcXVpcmUoJ2h0dHAtZXJyb3JzJyk7XHJcbnZhciBleHByZXNzID0gcmVxdWlyZSgnZXhwcmVzcycpO1xyXG5jb25zdCBjb3JzID0gcmVxdWlyZSgnY29ycycpO1xyXG52YXIgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcclxuY29uc3QgYm9keVBhcnNlciA9IHJlcXVpcmUoJ2JvZHktcGFyc2VyJylcclxuY29uc3QgZXhwcmVzc1ZhbGlkYXRvciA9IHJlcXVpcmUoJ2V4cHJlc3MtdmFsaWRhdG9yJylcclxudmFyIHNlc3Npb24gPSByZXF1aXJlKCdleHByZXNzLXNlc3Npb24nKTtcclxudmFyIEZpbGVTdG9yZSA9IHJlcXVpcmUoJ3Nlc3Npb24tZmlsZS1zdG9yZScpKHNlc3Npb24pO1xyXG52YXIgY29va2llUGFyc2VyID0gcmVxdWlyZSgnY29va2llLXBhcnNlcicpO1xyXG52YXIgbG9nZ2VyID0gcmVxdWlyZSgnbW9yZ2FuJyk7XHJcbnZhciBwYXNzcG9ydCA9IHJlcXVpcmUoJ3Bhc3Nwb3J0Jyk7XHJcbmNvbnN0IG1vbmdvb3NlID0gcmVxdWlyZSgnbW9uZ29vc2UnKTtcclxucmVxdWlyZSgnZG90ZW52JykuY29uZmlnKClcclxuXHJcbnZhciB1c2VyUm91dGVyID0gcmVxdWlyZSgnLi9yb3V0ZXMvdXNlclJvdXRlcicpO1xyXG52YXIgZW1wbG95ZWVSb3V0ZXIgPSByZXF1aXJlKCcuL3JvdXRlcy9lbXBsb3llZVJvdXRlcicpO1xyXG52YXIgcGxhY2VSb3V0ZXIgPSByZXF1aXJlKCcuL3JvdXRlcy9wbGFjZVJvdXRlcicpO1xyXG52YXIgc2NoZWR1bGVSb3V0ZXIgPSByZXF1aXJlKCcuL3JvdXRlcy9zY2hlZHVsZVJvdXRlcicpO1xyXG52YXIgdG91cmlzdFJvdXRlciA9IHJlcXVpcmUoJy4vcm91dGVzL3RvdXJpc3RSb3V0ZXInKTtcclxudmFyIGRhc2hib2FyZFJvdXRlciA9IHJlcXVpcmUoJy4vcm91dGVzL2Rhc2hib2FyZFJvdXRlcicpO1xyXG5cclxudmFyIGFwcCA9IGV4cHJlc3MoKTtcclxuXHJcbi8vIHZpZXcgZW5naW5lIHNldHVwXHJcbmFwcC5zZXQoJ3ZpZXdzJywgcGF0aC5qb2luKF9fZGlybmFtZSwgJ3ZpZXdzJykpO1xyXG5hcHAuc2V0KCd2aWV3IGVuZ2luZScsICdqYWRlJyk7XHJcbmFwcC51c2UoY29ycygpKTtcclxuYXBwLnVzZShwYXNzcG9ydC5pbml0aWFsaXplKCkpO1xyXG5cclxuYXBwLnVzZShib2R5UGFyc2VyLmpzb24oKSk7XHJcblxyXG5hcHAudXNlKGNvb2tpZVBhcnNlcigndGhlLWltbW9ydGFsLWNvaWxzJykpO1xyXG4vLyBhcHAudXNlKGxvZ2dlcignZGV2JykpO1xyXG5hcHAudXNlKGV4cHJlc3MuanNvbigpKTtcclxuYXBwLnVzZShleHByZXNzLnVybGVuY29kZWQoeyBleHRlbmRlZDogZmFsc2UgfSkpO1xyXG5hcHAudXNlKGNvb2tpZVBhcnNlcigpKTtcclxuLy8gYXBwLnVzZShleHByZXNzLnN0YXRpYygnYnVpbGQnKSk7XHJcbmFwcC51c2UoZXhwcmVzcy5zdGF0aWMocGF0aC5qb2luKF9fZGlybmFtZSwgJ2J1aWxkJykpKTtcclxuXHJcbnZhciB1cmwgPSBwcm9jZXNzLmVudi5tb25nb1VybDtcclxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAndGVzdCcpIHtcclxuICB1cmwgPSBwcm9jZXNzLmVudi50ZXN0TW9uZ29Vcmw7XHJcbn1cclxubW9uZ29vc2UuY29ubmVjdCh1cmwsIHsgdXNlTmV3VXJsUGFyc2VyOiB0cnVlLCB1c2VDcmVhdGVJbmRleDogdHJ1ZSwgdXNlVW5pZmllZFRvcG9sb2d5OiB0cnVlIH0pLnRoZW4oKGRiKSA9PiB7XHJcbn0sIChlcnIpID0+IHtcclxuICBpZiAoZXJyKSB7XHJcbiAgICBjb25zb2xlLmxvZygn8J+RuiAgRXJyb3IgY29ubmVjdGluZyB0byBNb25nb0RCJyk7XHJcbiAgfSBlbHNlIHtcclxuICAgIGNvbnNvbGUubG9nKCfinIUgIENvbm5lY3RlZCB0byBNb25nb0RCJyk7XHJcbiAgfVxyXG59KTtcclxuXHJcbmFwcC51c2UoJy91c2VycycsIHVzZXJSb3V0ZXIpO1xyXG5hcHAudXNlKCcvZW1wbG95ZWVzJywgZW1wbG95ZWVSb3V0ZXIpO1xyXG5hcHAudXNlKCcvcGxhY2VzJywgcGxhY2VSb3V0ZXIpO1xyXG5hcHAudXNlKCcvc2NoZWR1bGVzJywgc2NoZWR1bGVSb3V0ZXIpO1xyXG5hcHAudXNlKCcvdG91cmlzdHMnLCB0b3VyaXN0Um91dGVyKTtcclxuYXBwLnVzZSgnL2Rhc2hib2FyZCcsIGRhc2hib2FyZFJvdXRlcik7XHJcblxyXG4vLyBjYXRjaCA0MDQgYW5kIGZvcndhcmQgdG8gZXJyb3IgaGFuZGxlclxyXG5hcHAudXNlKGZ1bmN0aW9uIChyZXEsIHJlcywgbmV4dCkge1xyXG4gIG5leHQoY3JlYXRlRXJyb3IoNDA0KSk7XHJcbn0pO1xyXG5cclxuLy8gZXJyb3IgaGFuZGxlclxyXG5hcHAudXNlKGZ1bmN0aW9uIChlcnIsIHJlcSwgcmVzLCBuZXh0KSB7XHJcbiAgLy8gc2V0IGxvY2Fscywgb25seSBwcm92aWRpbmcgZXJyb3IgaW4gZGV2ZWxvcG1lbnRcclxuICByZXMubG9jYWxzLm1lc3NhZ2UgPSBlcnIubWVzc2FnZTtcclxuICByZXMubG9jYWxzLmVycm9yID0gcmVxLmFwcC5nZXQoJ2VudicpID09PSAnZGV2ZWxvcG1lbnQnID8gZXJyIDoge307XHJcblxyXG4gIC8vIHJlbmRlciB0aGUgZXJyb3IgcGFnZVxyXG4gIHJlcy5zdGF0dXMoZXJyLnN0YXR1cyB8fCA1MDApO1xyXG4gIHJlcy5yZW5kZXIoJ2Vycm9yJyk7XHJcbn0pO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBhcHA7XHJcbiJdfQ==\",\"originalCode\":\"var createError = require('http-errors');\\r\\nvar express = require('express');\\r\\nconst cors = require('cors');\\r\\nvar path = require('path');\\r\\nconst bodyParser = require('body-parser')\\r\\nconst expressValidator = require('express-validator')\\r\\nvar session = require('express-session');\\r\\nvar FileStore = require('session-file-store')(session);\\r\\nvar cookieParser = require('cookie-parser');\\r\\nvar logger = require('morgan');\\r\\nvar passport = require('passport');\\r\\nconst mongoose = require('mongoose');\\r\\nrequire('dotenv').config()\\r\\n\\r\\nvar userRouter = require('./routes/userRouter');\\r\\nvar employeeRouter = require('./routes/employeeRouter');\\r\\nvar placeRouter = require('./routes/placeRouter');\\r\\nvar scheduleRouter = require('./routes/scheduleRouter');\\r\\nvar touristRouter = require('./routes/touristRouter');\\r\\nvar dashboardRouter = require('./routes/dashboardRouter');\\r\\n\\r\\nvar app = express();\\r\\n\\r\\n// view engine setup\\r\\napp.set('views', path.join(__dirname, 'views'));\\r\\napp.set('view engine', 'jade');\\r\\napp.use(cors());\\r\\napp.use(passport.initialize());\\r\\n\\r\\napp.use(bodyParser.json());\\r\\n\\r\\napp.use(cookieParser('the-immortal-coils'));\\r\\n// app.use(logger('dev'));\\r\\napp.use(express.json());\\r\\napp.use(express.urlencoded({ extended: false }));\\r\\napp.use(cookieParser());\\r\\n// app.use(express.static('build'));\\r\\napp.use(express.static(path.join(__dirname, 'build')));\\r\\n\\r\\nvar url = process.env.mongoUrl;\\r\\nif (process.env.NODE_ENV === 'test') {\\r\\n url = process.env.testMongoUrl;\\r\\n}\\r\\nmongoose.connect(url, { useNewUrlParser: true, useCreateIndex: true, useUnifiedTopology: true }).then((db) => {\\r\\n}, (err) => {\\r\\n if (err) {\\r\\n console.log('👺 Error connecting to MongoDB');\\r\\n } else {\\r\\n console.log('✅ Connected to MongoDB');\\r\\n }\\r\\n});\\r\\n\\r\\napp.use('/users', userRouter);\\r\\napp.use('/employees', employeeRouter);\\r\\napp.use('/places', placeRouter);\\r\\napp.use('/schedules', scheduleRouter);\\r\\napp.use('/tourists', touristRouter);\\r\\napp.use('/dashboard', dashboardRouter);\\r\\n\\r\\n// catch 404 and forward to error handler\\r\\napp.use(function (req, res, next) {\\r\\n next(createError(404));\\r\\n});\\r\\n\\r\\n// error handler\\r\\napp.use(function (err, req, res, next) {\\r\\n // set locals, only providing error in development\\r\\n res.locals.message = err.message;\\r\\n res.locals.error = req.app.get('env') === 'development' ? err : {};\\r\\n\\r\\n // render the error page\\r\\n res.status(err.status || 500);\\r\\n res.render('error');\\r\\n});\\r\\n\\r\\nmodule.exports = app;\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/01/app_010e21b7416079df77678cc6cb70a530.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"1596\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\app.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":10626,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":10623,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1632,\"endOffset\":1640,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1642,\"endOffset\":1776,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":2049,\"endOffset\":2104,\"count\":4}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":2133,\"endOffset\":2408,\"count\":4},{\"startOffset\":2313,\"endOffset\":2318,\"count\":0},{\"startOffset\":2375,\"endOffset\":2381,\"count\":0}],\"isBlockCoverage\":true}]}},{\"codeTransformResult\":{\"code\":\"var express = require('express');\\n\\nvar userRouter = express.Router();\\n\\nconst bodyParser = require('body-parser');\\n\\nvar upload = require('../controllers/upload');\\n\\nconst {\\n checkSchema\\n} = require('express-validator');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nvar validationRules = require('../middleware/validation');\\n\\nvar userController = require('../controllers/userController');\\n\\nconst cors = require('./cors');\\n\\nuserRouter.use(bodyParser.json());\\nuserRouter.options('*', cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n});\\nuserRouter.post('/signup/admin', cors.corsWithOptions, userController.signupAdmin);\\nuserRouter.post('/login', cors.corsWithOptions, userController.login);\\nuserRouter.post('/changepassoword/:id', authenticate.verifyUser, userController.changePassoword);\\nuserRouter.post(\\\"/updateprofilepicture/:id\\\", authenticate.verifyUser, upload.UploadUserImage);\\nuserRouter.get('/logout', authenticate.verifyUser, userController.logout);\\nmodule.exports = userRouter;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVzZXJSb3V0ZXIuanMiXSwibmFtZXMiOlsiZXhwcmVzcyIsInJlcXVpcmUiLCJ1c2VyUm91dGVyIiwiUm91dGVyIiwiYm9keVBhcnNlciIsInVwbG9hZCIsImNoZWNrU2NoZW1hIiwiYXV0aGVudGljYXRlIiwidmFsaWRhdGlvblJ1bGVzIiwidXNlckNvbnRyb2xsZXIiLCJjb3JzIiwidXNlIiwianNvbiIsIm9wdGlvbnMiLCJjb3JzV2l0aE9wdGlvbnMiLCJyZXEiLCJyZXMiLCJzZW5kU3RhdHVzIiwicG9zdCIsInNpZ251cEFkbWluIiwibG9naW4iLCJ2ZXJpZnlVc2VyIiwiY2hhbmdlUGFzc293b3JkIiwiVXBsb2FkVXNlckltYWdlIiwiZ2V0IiwibG9nb3V0IiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsSUFBSUEsT0FBTyxHQUFHQyxPQUFPLENBQUMsU0FBRCxDQUFyQjs7QUFDQSxJQUFJQyxVQUFVLEdBQUdGLE9BQU8sQ0FBQ0csTUFBUixFQUFqQjs7QUFFQSxNQUFNQyxVQUFVLEdBQUdILE9BQU8sQ0FBQyxhQUFELENBQTFCOztBQUNBLElBQUlJLE1BQU0sR0FBR0osT0FBTyxDQUFDLHVCQUFELENBQXBCOztBQUNBLE1BQU07QUFBRUssRUFBQUE7QUFBRixJQUFrQkwsT0FBTyxDQUFDLG1CQUFELENBQS9COztBQUNBLElBQUlNLFlBQVksR0FBR04sT0FBTyxDQUFDLDRCQUFELENBQTFCOztBQUNBLElBQUlPLGVBQWUsR0FBR1AsT0FBTyxDQUFDLDBCQUFELENBQTdCOztBQUNBLElBQUlRLGNBQWMsR0FBR1IsT0FBTyxDQUFDLCtCQUFELENBQTVCOztBQUNBLE1BQU1TLElBQUksR0FBR1QsT0FBTyxDQUFDLFFBQUQsQ0FBcEI7O0FBRUFDLFVBQVUsQ0FBQ1MsR0FBWCxDQUFlUCxVQUFVLENBQUNRLElBQVgsRUFBZjtBQUVBVixVQUFVLENBQUNXLE9BQVgsQ0FBbUIsR0FBbkIsRUFBd0JILElBQUksQ0FBQ0ksZUFBN0IsRUFBOEMsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEtBQWM7QUFBRUEsRUFBQUEsR0FBRyxDQUFDQyxVQUFKLENBQWUsR0FBZjtBQUFzQixDQUFwRjtBQUVBZixVQUFVLENBQUNnQixJQUFYLENBQWdCLGVBQWhCLEVBQWlDUixJQUFJLENBQUNJLGVBQXRDLEVBQXVETCxjQUFjLENBQUNVLFdBQXRFO0FBRUFqQixVQUFVLENBQUNnQixJQUFYLENBQWdCLFFBQWhCLEVBQTBCUixJQUFJLENBQUNJLGVBQS9CLEVBQWdETCxjQUFjLENBQUNXLEtBQS9EO0FBRUFsQixVQUFVLENBQUNnQixJQUFYLENBQWdCLHNCQUFoQixFQUF1Q1gsWUFBWSxDQUFDYyxVQUFwRCxFQUFnRVosY0FBYyxDQUFDYSxlQUEvRTtBQUVBcEIsVUFBVSxDQUFDZ0IsSUFBWCxDQUFnQiwyQkFBaEIsRUFBNENYLFlBQVksQ0FBQ2MsVUFBekQsRUFBcUVoQixNQUFNLENBQUNrQixlQUE1RTtBQUVBckIsVUFBVSxDQUFDc0IsR0FBWCxDQUFlLFNBQWYsRUFBeUJqQixZQUFZLENBQUNjLFVBQXRDLEVBQWtEWixjQUFjLENBQUNnQixNQUFqRTtBQUVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUJ6QixVQUFqQiIsInNvdXJjZXNDb250ZW50IjpbInZhciBleHByZXNzID0gcmVxdWlyZSgnZXhwcmVzcycpO1xyXG52YXIgdXNlclJvdXRlciA9IGV4cHJlc3MuUm91dGVyKCk7XHJcblxyXG5jb25zdCBib2R5UGFyc2VyID0gcmVxdWlyZSgnYm9keS1wYXJzZXInKTtcclxudmFyIHVwbG9hZCA9IHJlcXVpcmUoJy4uL2NvbnRyb2xsZXJzL3VwbG9hZCcpO1xyXG5jb25zdCB7IGNoZWNrU2NoZW1hIH0gPSByZXF1aXJlKCdleHByZXNzLXZhbGlkYXRvcicpO1xyXG52YXIgYXV0aGVudGljYXRlID0gcmVxdWlyZSgnLi4vbWlkZGxld2FyZS9hdXRoZW50aWNhdGUnKTtcclxudmFyIHZhbGlkYXRpb25SdWxlcyA9IHJlcXVpcmUoJy4uL21pZGRsZXdhcmUvdmFsaWRhdGlvbicpO1xyXG52YXIgdXNlckNvbnRyb2xsZXIgPSByZXF1aXJlKCcuLi9jb250cm9sbGVycy91c2VyQ29udHJvbGxlcicpO1xyXG5jb25zdCBjb3JzID0gcmVxdWlyZSgnLi9jb3JzJyk7XHJcblxyXG51c2VyUm91dGVyLnVzZShib2R5UGFyc2VyLmpzb24oKSk7XHJcblxyXG51c2VyUm91dGVyLm9wdGlvbnMoJyonLCBjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcblxyXG51c2VyUm91dGVyLnBvc3QoJy9zaWdudXAvYWRtaW4nLCBjb3JzLmNvcnNXaXRoT3B0aW9ucywgdXNlckNvbnRyb2xsZXIuc2lnbnVwQWRtaW4pO1xyXG5cclxudXNlclJvdXRlci5wb3N0KCcvbG9naW4nLCBjb3JzLmNvcnNXaXRoT3B0aW9ucywgdXNlckNvbnRyb2xsZXIubG9naW4pO1xyXG5cclxudXNlclJvdXRlci5wb3N0KCcvY2hhbmdlcGFzc293b3JkLzppZCcsYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIHVzZXJDb250cm9sbGVyLmNoYW5nZVBhc3Nvd29yZCk7XHJcblxyXG51c2VyUm91dGVyLnBvc3QoXCIvdXBkYXRlcHJvZmlsZXBpY3R1cmUvOmlkXCIsYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIHVwbG9hZC5VcGxvYWRVc2VySW1hZ2UpO1xyXG5cclxudXNlclJvdXRlci5nZXQoJy9sb2dvdXQnLGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCB1c2VyQ29udHJvbGxlci5sb2dvdXQpO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSB1c2VyUm91dGVyO1xyXG4iXX0=\",\"originalCode\":\"var express = require('express');\\r\\nvar userRouter = express.Router();\\r\\n\\r\\nconst bodyParser = require('body-parser');\\r\\nvar upload = require('../controllers/upload');\\r\\nconst { checkSchema } = require('express-validator');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\nvar validationRules = require('../middleware/validation');\\r\\nvar userController = require('../controllers/userController');\\r\\nconst cors = require('./cors');\\r\\n\\r\\nuserRouter.use(bodyParser.json());\\r\\n\\r\\nuserRouter.options('*', cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n\\r\\nuserRouter.post('/signup/admin', cors.corsWithOptions, userController.signupAdmin);\\r\\n\\r\\nuserRouter.post('/login', cors.corsWithOptions, userController.login);\\r\\n\\r\\nuserRouter.post('/changepassoword/:id',authenticate.verifyUser, userController.changePassoword);\\r\\n\\r\\nuserRouter.post(\\\"/updateprofilepicture/:id\\\",authenticate.verifyUser, upload.UploadUserImage);\\r\\n\\r\\nuserRouter.get('/logout',authenticate.verifyUser, userController.logout);\\r\\n\\r\\nmodule.exports = userRouter;\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/a6/userRouter_a6221ff3be20743fe1c0fd1dc9fd8435.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2377\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\userRouter.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":4566,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":4563,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":606,\"endOffset\":646,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const sharp = require('sharp');\\n\\nconst uid = require('uid');\\n\\nconst fs = require('fs');\\n\\nconst Users = require('../models/users');\\n\\nconst Places = require('../models/visitingPlaces');\\n\\nconst uploadFile = async (req, res) => {\\n try {\\n await upload(req, res);\\n\\n if (req.file == undefined) {\\n return res.send(`You must select a file.`);\\n }\\n\\n return res.send(`File has been uploaded.`);\\n } catch (error) {\\n return res.send(`Error when trying upload image: ${error}`);\\n }\\n};\\n\\nconst UploadUserImage = async (req, res, next) => {\\n try {\\n const user_id = req.params._id;\\n const user = await Users.findById(user_id);\\n console.log(req);\\n let imageUrl;\\n\\n if (req.file) {\\n imageUrl = `${uid()}__${req.file.originalname}`;\\n let filename = `images/userImages/${imageUrl}`;\\n let previousImagePath = `images/userImages/${user.image}`;\\n const imageExist = fs.existsSync(previousImagePath);\\n\\n if (imageExist) {\\n deleteImage(previousImagePath);\\n }\\n\\n await sharp(req.file.path).rotate().resize(500, 500).toFile(filename);\\n fs.unlink(req.file.path, err => {\\n if (err) {}\\n });\\n } else {\\n imageUrl = 'profile.png';\\n }\\n\\n user.image = imageUrl;\\n await user.save();\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n message: 'Successfully updated profile picture'\\n });\\n } catch (err) {\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Error while updating profile picture'\\n });\\n }\\n};\\n\\nconst uploadPlaceImage = async (req, res, next) => {\\n try {\\n const place_id = req.params._id;\\n const place = await Places.findById(place_id);\\n let imageUrl;\\n\\n if (req.file) {\\n imageUrl = `${uid()}__${req.file.originalname}`;\\n let filename = `images/placeImages/${imageUrl}`;\\n let previousImagePath = `images/placeImages/${place.image}`;\\n const imageExist = fs.existsSync(previousImagePath);\\n\\n if (imageExist) {\\n deleteImage(previousImagePath);\\n }\\n\\n await sharp(req.file.path).rotate().resize(500, 500).toFile(filename);\\n fs.unlink(req.file.path, err => {\\n if (err) {}\\n });\\n } else {\\n imageUrl = 'image.png';\\n }\\n\\n place.image = imageUrl;\\n await place.save();\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n message: 'Successfully updated profile picture'\\n });\\n } catch (err) {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Error while updating profile picture'\\n });\\n }\\n};\\n\\nexports.UploadUserImage = UploadUserImage;\\nexports.uploadFile = uploadFile;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVwbG9hZC5qcyJdLCJuYW1lcyI6WyJzaGFycCIsInJlcXVpcmUiLCJ1aWQiLCJmcyIsIlVzZXJzIiwiUGxhY2VzIiwidXBsb2FkRmlsZSIsInJlcSIsInJlcyIsInVwbG9hZCIsImZpbGUiLCJ1bmRlZmluZWQiLCJzZW5kIiwiZXJyb3IiLCJVcGxvYWRVc2VySW1hZ2UiLCJuZXh0IiwidXNlcl9pZCIsInBhcmFtcyIsIl9pZCIsInVzZXIiLCJmaW5kQnlJZCIsImNvbnNvbGUiLCJsb2ciLCJpbWFnZVVybCIsIm9yaWdpbmFsbmFtZSIsImZpbGVuYW1lIiwicHJldmlvdXNJbWFnZVBhdGgiLCJpbWFnZSIsImltYWdlRXhpc3QiLCJleGlzdHNTeW5jIiwiZGVsZXRlSW1hZ2UiLCJwYXRoIiwicm90YXRlIiwicmVzaXplIiwidG9GaWxlIiwidW5saW5rIiwiZXJyIiwic2F2ZSIsInN0YXR1c0NvZGUiLCJzZXRIZWFkZXIiLCJqc29uIiwic3VjY2VzcyIsIm1lc3NhZ2UiLCJ1cGxvYWRQbGFjZUltYWdlIiwicGxhY2VfaWQiLCJwbGFjZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLEtBQUssR0FBR0MsT0FBTyxDQUFDLE9BQUQsQ0FBckI7O0FBQ0EsTUFBTUMsR0FBRyxHQUFHRCxPQUFPLENBQUMsS0FBRCxDQUFuQjs7QUFDQSxNQUFNRSxFQUFFLEdBQUdGLE9BQU8sQ0FBQyxJQUFELENBQWxCOztBQUNBLE1BQU1HLEtBQUssR0FBR0gsT0FBTyxDQUFDLGlCQUFELENBQXJCOztBQUNBLE1BQU1JLE1BQU0sR0FBR0osT0FBTyxDQUFDLDBCQUFELENBQXRCOztBQUVBLE1BQU1LLFVBQVUsR0FBRyxPQUFPQyxHQUFQLEVBQVlDLEdBQVosS0FBb0I7QUFDbkMsTUFBSTtBQUNBLFVBQU1DLE1BQU0sQ0FBQ0YsR0FBRCxFQUFNQyxHQUFOLENBQVo7O0FBRUEsUUFBSUQsR0FBRyxDQUFDRyxJQUFKLElBQVlDLFNBQWhCLEVBQTJCO0FBQ3ZCLGFBQU9I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Q0FBQzhCLFVBQUosR0FBaUIsR0FBakI7QUFDQTlCLElBQUFBLEdBQUcsQ0FBQytCLFNBQUosQ0FBYyxjQUFkLEVBQThCLGtCQUE5QjtBQUNBL0IsSUFBQUEsR0FBRyxDQUFDZ0MsSUFBSixDQUFTO0FBQUVDLE1BQUFBLE9BQU8sRUFBRSxLQUFYO0FBQWtCQyxNQUFBQSxPQUFPLEVBQUU7QUFBM0IsS0FBVDtBQUNIO0FBQ0osQ0F6Q0Q7O0FBMkNBSSxPQUFPLENBQUNoQyxlQUFSLEdBQTBCQSxlQUExQjtBQUNBZ0MsT0FBTyxDQUFDeEMsVUFBUixHQUFxQkEsVUFBckIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBzaGFycCA9IHJlcXVpcmUoJ3NoYXJwJyk7XHJcbmNvbnN0IHVpZCA9IHJlcXVpcmUoJ3VpZCcpO1xyXG5jb25zdCBmcyA9IHJlcXVpcmUoJ2ZzJyk7XHJcbmNvbnN0IFVzZXJzID0gcmVxdWlyZSgnLi4vbW9kZWxzL3VzZXJzJyk7XHJcbmNvbnN0IFBsYWNlcyA9IHJlcXVpcmUoJy4uL21vZGVscy92aXNpdGluZ1BsYWNlcycpXHJcblxyXG5jb25zdCB1cGxvYWRGaWxlID0gYXN5bmMgKHJlcSwgcmVzKSA9PiB7XHJcbiAgICB0cnkge1xyXG4gICAgICAgIGF3YWl0IHVwbG9hZChyZXEsIHJlcyk7XHJcblxyXG4gICAgICAgIGlmIChyZXEuZmlsZSA9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlcy5zZW5kKGBZb3UgbXVzdCBzZWxlY3QgYSBmaWxlLmApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHJlcy5zZW5kKGBGaWxlIGhhcyBiZWVuIHVwbG9hZGVkLmApO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICByZXR1cm4gcmVzLnNlbmQoYEVycm9yIHdoZW4gdHJ5aW5nIHVwbG9hZCBpbWFnZTogJHtlcnJvcn1gKTtcclxuICAgIH1cclxufTtcclxuXHJcbmNvbnN0IFVwbG9hZFVzZXJJbWFnZSA9IGFzeW5jIChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgICBjb25zdCB1c2VyX2lkID0gcmVxLnBhcmFtcy5faWQ7XHJcbiAgICAgICAgY29uc3QgdXNlciA9IGF3YWl0IFVzZXJzLmZpbmRCeUlkKHVzZXJfaWQpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKHJlcSk7XHJcblxyXG4gICAgICAgIGxldCBpbWFnZVVybDtcclxuICAgICAgICBpZiAocmVxLmZpbGUpIHtcclxuICAgICAgICAgICAgaW1hZ2VVcmwgPSBgJHt1aWQoKX1fXyR7cmVxLmZpbGUub3JpZ2luYWxuYW1lfWA7XHJcbiAgICAgICAgICAgIGxldCBmaWxlbmFtZSA9IGBpbWFnZXMvdXNlckltYWdlcy8ke2ltYWdlVXJsfWA7XHJcbiAgICAgICAgICAgIGxldCBwcmV2aW91c0ltYWdlUGF0aCA9IGBpbWFnZXMvdXNlckltYWdlcy8ke3VzZXIuaW1hZ2V9YDtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGltYWdlRXhpc3QgPSBmcy5leGlzdHNTeW5jKHByZXZpb3VzSW1hZ2VQYXRoKTtcclxuICAgICAgICAgICAgaWYgKGltYWdlRXhpc3QpIHtcclxuICAgICAgICAgICAgICAgIGRlbGV0ZUltYWdlKHByZXZpb3VzSW1hZ2VQYXRoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBhd2FpdCBzaGFycChyZXEuZmlsZS5wYXRoKVxyXG4gICAgICAgICAgICAgICAgLnJvdGF0ZSgpXHJcbiAgICAgICAgICAgICAgICAucmVzaXplKDUwMCwgNTAwKVxyXG4gICAgICAgICAgICAgICAgLnRvRmlsZShmaWxlbmFtZSk7XHJcblxyXG4gICAgICAgICAgICBmcy51bmxpbmsocmVxLmZpbGUucGF0aCwgKGVycikgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGltYWdlVXJsID0gJ3Byb2ZpbGUucG5nJztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHVzZXIuaW1hZ2UgPSBpbWFnZVVybDtcclxuICAgICAgICBhd2FpdCB1c2VyLnNhdmUoKTtcclxuXHJcblxyXG4gICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCBtZXNzYWdlOiAnU3VjY2Vzc2Z1bGx5IHVwZGF0ZWQgcHJvZmlsZSBwaWN0dXJlJyB9KTtcclxuXHJcbiAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDUwMDtcclxuICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogZmFsc2UsIG1lc3NhZ2U6ICdFcnJvciB3aGlsZSB1cGRhdGluZyBwcm9maWxlIHBpY3R1cmUnIH0pO1xyXG4gICAgfVxyXG59O1xyXG5cclxuY29uc3QgdXBsb2FkUGxhY2VJbWFnZSA9IGFzeW5jIChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgICBjb25zdCBwbGFjZV9pZCA9IHJlcS5wYXJhbXMuX2lkO1xyXG4gICAgICAgIGNvbnN0IHBsYWNlID0gYXdhaXQgUGxhY2VzLmZpbmRCeUlkKHBsYWNlX2lkKTtcclxuXHJcbiAgICAgICAgbGV0IGltYWdlVXJsO1xyXG4gICAgICAgIGlmIChyZXEuZmlsZSkge1xyXG4gICAgICAgICAgICBpbWFnZVVybCA9IGAke3VpZCgpfV9fJHtyZXEuZmlsZS5vcmlnaW5hbG5hbWV9YDtcclxuICAgICAgICAgICAgbGV0IGZpbGVuYW1lID0gYGltYWdlcy9wbGFjZUltYWdlcy8ke2ltYWdlVXJsfWA7XHJcbiAgICAgICAgICAgIGxldCBwcmV2aW91c0ltYWdlUGF0aCA9IGBpbWFnZXMvcGxhY2VJbWFnZXMvJHtwbGFjZS5pbWFnZX1gO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgaW1hZ2VFeGlzdCA9IGZzLmV4aXN0c1N5bmMocHJldmlvdXNJbWFnZVBhdGgpO1xyXG4gICAgICAgICAgICBpZiAoaW1hZ2VFeGlzdCkge1xyXG4gICAgICAgICAgICAgICAgZGVsZXRlSW1hZ2UocHJldmlvdXNJbWFnZVBhdGgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGF3YWl0IHNoYXJwKHJlcS5maWxlLnBhdGgpXHJcbiAgICAgICAgICAgICAgICAucm90YXRlKClcclxuICAgICAgICAgICAgICAgIC5yZXNpemUoNTAwLCA1MDApXHJcbiAgICAgICAgICAgICAgICAudG9GaWxlKGZpbGVuYW1lKTtcclxuXHJcbiAgICAgICAgICAgIGZzLnVubGluayhyZXEuZmlsZS5wYXRoLCAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaW1hZ2VVcmwgPSAnaW1hZ2UucG5nJztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHBsYWNlLmltYWdlID0gaW1hZ2VVcmw7XHJcbiAgICAgICAgYXdhaXQgcGxhY2Uuc2F2ZSgpO1xyXG5cclxuXHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA1MDA7XHJcbiAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIG1lc3NhZ2U6ICdTdWNjZXNzZnVsbHkgdXBkYXRlZCBwcm9maWxlIHBpY3R1cmUnIH0pO1xyXG5cclxuICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogJ0Vycm9yIHdoaWxlIHVwZGF0aW5nIHByb2ZpbGUgcGljdHVyZScgfSk7XHJcbiAgICB9XHJcbn07XHJcblxyXG5leHBvcnRzLlVwbG9hZFVzZXJJbWFnZSA9IFVwbG9hZFVzZXJJbWFnZTtcclxuZXhwb3J0cy51cGxvYWRGaWxlID0gdXBsb2FkRmlsZTsiXX0=\",\"originalCode\":\"const sharp = require('sharp');\\r\\nconst uid = require('uid');\\r\\nconst fs = require('fs');\\r\\nconst Users = require('../models/users');\\r\\nconst Places = require('../models/visitingPlaces')\\r\\n\\r\\nconst uploadFile = async (req, res) => {\\r\\n try {\\r\\n await upload(req, res);\\r\\n\\r\\n if (req.file == undefined) {\\r\\n return res.send(`You must select a file.`);\\r\\n }\\r\\n\\r\\n return res.send(`File has been uploaded.`);\\r\\n } catch (error) {\\r\\n return res.send(`Error when trying upload image: ${error}`);\\r\\n }\\r\\n};\\r\\n\\r\\nconst UploadUserImage = async (req, res, next) => {\\r\\n try {\\r\\n const user_id = req.params._id;\\r\\n const user = await Users.findById(user_id);\\r\\n console.log(req);\\r\\n\\r\\n let imageUrl;\\r\\n if (req.file) {\\r\\n imageUrl = `${uid()}__${req.file.originalname}`;\\r\\n let filename = `images/userImages/${imageUrl}`;\\r\\n let previousImagePath = `images/userImages/${user.image}`;\\r\\n\\r\\n const imageExist = fs.existsSync(previousImagePath);\\r\\n if (imageExist) {\\r\\n deleteImage(previousImagePath);\\r\\n }\\r\\n await sharp(req.file.path)\\r\\n .rotate()\\r\\n .resize(500, 500)\\r\\n .toFile(filename);\\r\\n\\r\\n fs.unlink(req.file.path, (err) => {\\r\\n if (err) {\\r\\n }\\r\\n })\\r\\n } else {\\r\\n imageUrl = 'profile.png';\\r\\n }\\r\\n\\r\\n user.image = imageUrl;\\r\\n await user.save();\\r\\n\\r\\n\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, message: 'Successfully updated profile picture' });\\r\\n\\r\\n } catch (err) {\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Error while updating profile picture' });\\r\\n }\\r\\n};\\r\\n\\r\\nconst uploadPlaceImage = async (req, res, next) => {\\r\\n try {\\r\\n const place_id = req.params._id;\\r\\n const place = await Places.findById(place_id);\\r\\n\\r\\n let imageUrl;\\r\\n if (req.file) {\\r\\n imageUrl = `${uid()}__${req.file.originalname}`;\\r\\n let filename = `images/placeImages/${imageUrl}`;\\r\\n let previousImagePath = `images/placeImages/${place.image}`;\\r\\n\\r\\n const imageExist = fs.existsSync(previousImagePath);\\r\\n if (imageExist) {\\r\\n deleteImage(previousImagePath);\\r\\n }\\r\\n await sharp(req.file.path)\\r\\n .rotate()\\r\\n .resize(500, 500)\\r\\n .toFile(filename);\\r\\n\\r\\n fs.unlink(req.file.path, (err) => {\\r\\n if (err) {\\r\\n }\\r\\n })\\r\\n } else {\\r\\n imageUrl = 'image.png';\\r\\n }\\r\\n\\r\\n place.image = imageUrl;\\r\\n await place.save();\\r\\n\\r\\n\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, message: 'Successfully updated profile picture' });\\r\\n\\r\\n } catch (err) {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Error while updating profile picture' });\\r\\n }\\r\\n};\\r\\n\\r\\nexports.UploadUserImage = UploadUserImage;\\r\\nexports.uploadFile = uploadFile;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/7c/upload_7c4638f764653e4bdd79a0ce3f99ff41.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2378\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\upload.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":12934,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":12931,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"uploadFile\",\"ranges\":[{\"startOffset\":293,\"endOffset\":580,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"UploadUserImage\",\"ranges\":[{\"startOffset\":607,\"endOffset\":1726,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"uploadPlaceImage\",\"ranges\":[{\"startOffset\":1754,\"endOffset\":2858,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"var mongoose = require('mongoose');\\n\\nvar Schema = mongoose.Schema;\\n\\nvar passportLocalMongoose = require('passport-local-mongoose');\\n\\nvar User = new Schema({\\n firstname: {\\n type: String,\\n required: true\\n },\\n lastname: {\\n type: String,\\n required: true\\n },\\n email: {\\n type: String,\\n required: true,\\n unique: true\\n },\\n mobile: {\\n type: String\\n },\\n role: {\\n type: String,\\n default: \\\"user\\\",\\n enum: ['user', 'moderater', 'admin']\\n },\\n image: {\\n type: String\\n },\\n suite: {\\n type: String,\\n enum: ['gold', 'luxury', 'platinum']\\n },\\n rommnumber: {\\n type: String\\n },\\n userstate: {\\n type: String,\\n default: \\\"in\\\",\\n enum: ['in', 'out']\\n }\\n}, {\\n timestamps: true\\n});\\nUser.plugin(passportLocalMongoose);\\nUser.index({\\n '$**': 'text'\\n});\\nvar Users = mongoose.model('User', User);\\nmodule.exports = Users;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVzZXJzLmpzIl0sIm5hbWVzIjpbIm1vbmdvb3NlIiwicmVxdWlyZSIsIlNjaGVtYSIsInBhc3Nwb3J0TG9jYWxNb25nb29zZSIsIlVzZXIiLCJmaXJzdG5hbWUiLCJ0eXBlIiwiU3RyaW5nIiwicmVxdWlyZWQiLCJsYXN0bmFtZSIsImVtYWlsIiwidW5pcXVlIiwibW9iaWxlIiwicm9sZSIsImRlZmF1bHQiLCJlbnVtIiwiaW1hZ2UiLCJzdWl0ZSIsInJvbW1udW1iZXIiLCJ1c2Vyc3RhdGUiLCJ0aW1lc3RhbXBzIiwicGx1Z2luIiwiaW5kZXgiLCJVc2VycyIsIm1vZGVsIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsSUFBSUEsUUFBUSxHQUFHQyxPQUFPLENBQUMsVUFBRCxDQUF0Qjs7QUFDQSxJQUFJQyxNQUFNLEdBQUdGLFFBQVEsQ0FBQ0UsTUFBdEI7O0FBRUEsSUFBSUMscUJBQXFCLEdBQUdGLE9BQU8sQ0FBQyx5QkFBRCxDQUFuQzs7QUFFQSxJQUFJRyxJQUFJLEdBQUcsSUFBSUYsTUFBSixDQUFXO0FBQ2xCRyxFQUFBQSxTQUFTLEVBQUU7QUFDUEMsSUFBQUEsSUFBSSxFQUFFQyxNQURDO0FBRVBDLElBQUFBLFFBQVEsRUFBRTtBQUZILEdBRE87QUFLbEJDLEVBQUFBLFFBQVEsRUFBRTtBQUNOSCxJQUFBQSxJQUFJLEVBQUVDLE1BREE7QUFFTkMsSUFBQUEsUUFBUSxFQUFFO0FBRkosR0FMUTtBQVNsQkUsRUFBQUEsS0FBSyxFQUFFO0FBQ0hKLElBQUFBLElBQUksRUFBRUMsTUFESDtBQUVIQyxJQUFBQSxRQUFRLEVBQUUsSUFGUDtBQUdIRyxJQUFBQSxNQUFNLEVBQUU7QUFITCxHQVRXO0FBY2xCQyxFQUFBQSxNQUFNLEVBQUM7QUFDSE4sSUFBQUEsSUFBSSxFQUFFQztBQURILEdBZFc7QUFpQmxCTSxFQUFBQSxJQUFJLEVBQ0o7QUFDSVAsSUFBQUEsSUFBSSxFQUFFQyxNQURWO0FBRUlPLElBQUFBLE9BQU8sRUFBRSxNQUZiO0FBR0lDLElBQUFBLElBQUksRUFBQyxDQUFDLE1BQUQsRUFBUSxXQUFSLEVBQW9CLE9BQXBCO0FBSFQsR0FsQmtCO0FBdUJsQkMsRUFBQUEsS0FBSyxFQUFFO0FBQ0hWLElBQUFBLElBQUksRUFBRUM7QUFESCxHQXZCVztBQTBCbEJVLEVBQUFBLEtBQUssRUFBQztBQUNGWCxJQUFBQSxJQUFJLEVBQUVDLE1BREo7QUFFRlEsSUFBQUEsSUFBSSxFQUFDLENBQUMsTUFBRCxFQUFRLFFBQVIsRUFBaUIsVUFBakI7QUFGSCxHQTFCWTtBQThCbEJHLEVBQUFBLFVBQVUsRUFBQztBQUNQWixJQUFBQSxJQUFJLEVBQUVDO0FBREMsR0E5Qk87QUFpQ2xCWSxFQUFBQSxTQUFTLEVBQUM7QUFDTmIsSUFBQUEsSUFBSSxFQUFFQyxNQURBO0FBRU5PLElBQUFBLE9BQU8sRUFBRSxJQUZIO0FBR05DLElBQUFBLElBQUksRUFBQyxDQUFDLElBQUQsRUFBTSxLQUFOO0FBSEM7QUFqQ1EsQ0FBWCxFQXNDUjtBQUNDSyxFQUFBQSxVQUFVLEVBQUU7QUFEYixDQXRDUSxDQUFYO0FBMENBaEIsSUFBSSxDQUFDaUIsTUFBTCxDQUFZbEIscUJBQVo7QUFDQUMsSUFBSSxDQUFDa0IsS0FBTCxDQUFXO0FBQUMsU0FBTTtBQUFQLENBQVg7QUFDQSxJQUFJQyxLQUFLLEdBQUd2QixRQUFRLENBQUN3QixLQUFULENBQWUsTUFBZixFQUF1QnBCLElBQXZCLENBQVo7QUFFQXFCLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQkgsS0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgbW9uZ29vc2UgPSByZXF1aXJlKCdtb25nb29zZScpO1xyXG52YXIgU2NoZW1hID0gbW9uZ29vc2UuU2NoZW1hO1xyXG5cclxudmFyIHBhc3Nwb3J0TG9jYWxNb25nb29zZSA9IHJlcXVpcmUoJ3Bhc3Nwb3J0LWxvY2FsLW1vbmdvb3NlJyk7XHJcblxyXG52YXIgVXNlciA9IG5ldyBTY2hlbWEoe1xyXG4gICAgZmlyc3RuYW1lOiB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlXHJcbiAgICB9LFxyXG4gICAgbGFzdG5hbWU6IHtcclxuICAgICAgICB0eXBlOiBTdHJpbmcsXHJcbiAgICAgICAgcmVxdWlyZWQ6IHRydWVcclxuICAgIH0sXHJcbiAgICBlbWFpbDoge1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgICB1bmlxdWU6IHRydWVcclxuICAgIH0sXHJcbiAgICBtb2JpbGU6e1xyXG4gICAgICAgIHR5cGU6IFN0cmluZ1xyXG4gICAgfSxcclxuICAgIHJvbGU6XHJcbiAgICB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICAgIGRlZmF1bHQ6IFwidXNlclwiLFxyXG4gICAgICAgIGVudW06Wyd1c2VyJywnbW9kZXJhdGVyJywnYWRtaW4nXVxyXG4gICAgfSxcclxuICAgIGltYWdlOiB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nXHJcbiAgICB9LFxyXG4gICAgc3VpdGU6e1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICBlbnVtOlsnZ29sZCcsJ2x1eHVyeScsJ3BsYXRpbnVtJ11cclxuICAgIH0sXHJcbiAgICByb21tbnVtYmVyOntcclxuICAgICAgICB0eXBlOiBTdHJpbmdcclxuICAgIH0sXHJcbiAgICB1c2Vyc3RhdGU6e1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICBkZWZhdWx0OiBcImluXCIsXHJcbiAgICAgICAgZW51bTpbJ2luJywnb3V0J11cclxuICAgIH1cclxufSwge1xyXG4gICAgdGltZXN0YW1wczogdHJ1ZVxyXG59KTtcclxuXHJcblVzZXIucGx1Z2luKHBhc3Nwb3J0TG9jYWxNb25nb29zZSk7XHJcblVzZXIuaW5kZXgoeyckKionOid0ZXh0J30pO1xyXG52YXIgVXNlcnMgPSBtb25nb29zZS5tb2RlbCgnVXNlcicsIFVzZXIpO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBVc2VyczsiXX0=\",\"originalCode\":\"var mongoose = require('mongoose');\\r\\nvar Schema = mongoose.Schema;\\r\\n\\r\\nvar passportLocalMongoose = require('passport-local-mongoose');\\r\\n\\r\\nvar User = new Schema({\\r\\n firstname: {\\r\\n type: String,\\r\\n required: true\\r\\n },\\r\\n lastname: {\\r\\n type: String,\\r\\n required: true\\r\\n },\\r\\n email: {\\r\\n type: String,\\r\\n required: true,\\r\\n unique: true\\r\\n },\\r\\n mobile:{\\r\\n type: String\\r\\n },\\r\\n role:\\r\\n {\\r\\n type: String,\\r\\n default: \\\"user\\\",\\r\\n enum:['user','moderater','admin']\\r\\n },\\r\\n image: {\\r\\n type: String\\r\\n },\\r\\n suite:{\\r\\n type: String,\\r\\n enum:['gold','luxury','platinum']\\r\\n },\\r\\n rommnumber:{\\r\\n type: String\\r\\n },\\r\\n userstate:{\\r\\n type: String,\\r\\n default: \\\"in\\\",\\r\\n enum:['in','out']\\r\\n }\\r\\n}, {\\r\\n timestamps: true\\r\\n});\\r\\n\\r\\nUser.plugin(passportLocalMongoose);\\r\\nUser.index({'$**':'text'});\\r\\nvar Users = mongoose.model('User', User);\\r\\n\\r\\nmodule.exports = Users;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/fa/users_fa250a82bd410ffb1909f920e93eed19.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2448\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\models\\\\users.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":4633,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":4630,\"count\":1}],\"isBlockCoverage\":true}]}},{\"codeTransformResult\":{\"code\":\"const mongoose = require('mongoose');\\n\\nconst Schema = mongoose.Schema;\\nconst pointSchema = new Schema({\\n type: {\\n type: String,\\n enum: ['Point'],\\n required: true,\\n default: 'Point'\\n },\\n coordinates: {\\n type: [Number],\\n required: true\\n }\\n});\\nconst placeSchema = new Schema({\\n name: {\\n type: String,\\n required: true,\\n unique: true\\n },\\n description: {\\n type: String,\\n required: true\\n },\\n location: {\\n type: pointSchema,\\n index: '2dsphere',\\n required: true\\n },\\n distance: {\\n type: String,\\n required: true\\n },\\n timeToReach: {\\n type: String,\\n required: true\\n },\\n image: {\\n type: String\\n },\\n travellingMethods: [{\\n type: String,\\n enum: ['Bus', 'Car', 'Train', 'Threewheeler', 'Foot']\\n }]\\n}, {\\n timestamps: true\\n});\\nplaceSchema.index({\\n '$**': 'text'\\n});\\nvar Places = mongoose.model('Place', placeSchema);\\nmodule.exports = Places;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInZpc2l0aW5nUGxhY2VzLmpzIl0sIm5hbWVzIjpbIm1vbmdvb3NlIiwicmVxdWlyZSIsIlNjaGVtYSIsInBvaW50U2NoZW1hIiwidHlwZSIsIlN0cmluZyIsImVudW0iLCJyZXF1aXJlZCIsImRlZmF1bHQiLCJjb29yZGluYXRlcyIsIk51bWJlciIsInBsYWNlU2NoZW1hIiwibmFtZSIsInVuaXF1ZSIsImRlc2NyaXB0aW9uIiwibG9jYXRpb24iLCJpbmRleCIsImRpc3RhbmNlIiwidGltZVRvUmVhY2giLCJpbWFnZSIsInRyYXZlbGxpbmdNZXRob2RzIiwidGltZXN0YW1wcyIsIlBsYWNlcyIsIm1vZGVsIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsUUFBUSxHQUFHQyxPQUFPLENBQUMsVUFBRCxDQUF4Qjs7QUFDQSxNQUFNQyxNQUFNLEdBQUdGLFFBQVEsQ0FBQ0UsTUFBeEI7QUFFQSxNQUFNQyxXQUFXLEdBQUcsSUFBSUQsTUFBSixDQUFXO0FBQzNCRSxFQUFBQSxJQUFJLEVBQUU7QUFDRkEsSUFBQUEsSUFBSSxFQUFFQyxNQURKO0FBRUZDLElBQUFBLElBQUksRUFBRSxDQUFDLE9BQUQsQ0FGSjtBQUdGQyxJQUFBQSxRQUFRLEVBQUUsSUFIUjtBQUlGQyxJQUFBQSxPQUFPLEVBQUU7QUFKUCxHQURxQjtBQU8zQkMsRUFBQUEsV0FBVyxFQUFFO0FBQ1RMLElBQUFBLElBQUksRUFBRSxDQUFDTSxNQUFELENBREc7QUFFVEgsSUFBQUEsUUFBUSxFQUFFO0FBRkQ7QUFQYyxDQUFYLENBQXBCO0FBYUEsTUFBTUksV0FBVyxHQUFHLElBQUlULE1BQUosQ0FBVztBQUMzQlUsRUFBQUEsSUFBSSxFQUFFO0FBQ0ZSLElBQUFBLElBQUksRUFBRUMsTUFESjtBQUVGRSxJQUFBQSxRQUFRLEVBQUUsSUFGUjtBQUdGTSxJQUFBQSxNQUFNLEVBQUU7QUFITixHQURxQjtBQU0zQkMsRUFBQUEsV0FBVyxFQUFFO0FBQ1RWLElBQUFBLElBQUksRUFBRUMsTUFERztBQUVURSxJQUFBQSxRQUFRLEVBQUU7QUFGRCxHQU5jO0FBVTNCUSxFQUFBQSxRQUFRLEVBQUU7QUFDTlgsSUFBQUEsSUFBSSxFQUFFRCxXQURBO0FBRU5hLElBQUFBLEtBQUssRUFBRSxVQUZEO0FBR05ULElBQUFBLFFBQVEsRUFBRTtBQUhKLEdBVmlCO0FBZTNCVSxFQUFBQSxRQUFRLEVBQUU7QUFDTmIsSUFBQUEsSUFBSSxFQUFFQyxNQURBO0FBRU5FLElBQUFBLFFBQVEsRUFBRTtBQUZKLEdBZmlCO0FBbUIzQlcsRUFBQUEsV0FBVyxFQUFFO0FBQ1RkLElBQUFBLElBQUksRUFBRUMsTUFERztBQUVURSxJQUFBQSxRQUFRLEVBQUU7QUFGRCxHQW5CYztBQXVCM0JZLEVBQUFBLEtBQUssRUFDTDtBQUNJZixJQUFBQSxJQUFJLEVBQUVDO0FBRFYsR0F4QjJCO0FBMkIzQmUsRUFBQUEsaUJBQWlCLEVBQUUsQ0FDZjtBQUNJaEIsSUFBQUEsSUFBSSxFQUFFQyxNQURWO0FBRUlDLElBQUFBLElBQUksRUFBRSxDQUFDLEtBQUQsRUFBUSxLQUFSLEVBQWUsT0FBZixFQUF3QixjQUF4QixFQUF3QyxNQUF4QztBQUZWLEdBRGU7QUEzQlEsQ0FBWCxFQWlDakI7QUFDQ2UsRUFBQUEsVUFBVSxFQUFFO0FBRGIsQ0FqQ2lCLENBQXBCO0FBcUNBVixXQUFXLENBQUNLLEtBQVosQ0FBa0I7QUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJTSxNQUFNLEdBQUd0QixRQUFRLENBQUN1QixLQUFULENBQWUsT0FBZixFQUF3QlosV0FBeEIsQ0FBYjtBQUVBYSxNQUFNLENBQUNDLE9BQVAsR0FBaUJILE1BQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgbW9uZ29vc2UgPSByZXF1aXJlKCdtb25nb29zZScpO1xyXG5jb25zdCBTY2hlbWEgPSBtb25nb29zZS5TY2hlbWE7XHJcblxyXG5jb25zdCBwb2ludFNjaGVtYSA9IG5ldyBTY2hlbWEoe1xyXG4gICAgdHlwZToge1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICBlbnVtOiBbJ1BvaW50J10sXHJcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXHJcbiAgICAgICAgZGVmYXVsdDogJ1BvaW50J1xyXG4gICAgfSxcclxuICAgIGNvb3JkaW5hdGVzOiB7XHJcbiAgICAgICAgdHlwZTogW051bWJlcl0sXHJcbiAgICAgICAgcmVxdWlyZWQ6IHRydWVcclxuICAgIH1cclxufSk7XHJcblxyXG5jb25zdCBwbGFjZVNjaGVtYSA9IG5ldyBTY2hlbWEoe1xyXG4gICAgbmFtZToge1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgICB1bmlxdWU6IHRydWVcclxuICAgIH0sXHJcbiAgICBkZXNjcmlwdGlvbjoge1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICByZXF1aXJlZDogdHJ1ZVxyXG4gICAgfSxcclxuICAgIGxvY2F0aW9uOiB7XHJcbiAgICAgICAgdHlwZTogcG9pbnRTY2hlbWEsXHJcbiAgICAgICAgaW5kZXg6ICcyZHNwaGVyZScsXHJcbiAgICAgICAgcmVxdWlyZWQ6IHRydWVcclxuICAgIH0sXHJcbiAgICBkaXN0YW5jZToge1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICByZXF1aXJlZDogdHJ1ZVxyXG4gICAgfSxcclxuICAgIHRpbWVUb1JlYWNoOiB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlXHJcbiAgICB9LFxyXG4gICAgaW1hZ2U6XHJcbiAgICB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgfSxcclxuICAgIHRyYXZlbGxpbmdNZXRob2RzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXHJcbiAgICAgICAgICAgIGVudW06IFsnQnVzJywgJ0NhcicsICdUcmFpbicsICdUaHJlZXdoZWVsZXInLCAnRm9vdCddXHJcbiAgICAgICAgfVxyXG4gICAgXVxyXG59LCB7XHJcbiAgICB0aW1lc3RhbXBzOiB0cnVlXHJcbn0pO1xyXG5cclxucGxhY2VTY2hlbWEuaW5kZXgoeyAnJCoqJzogJ3RleHQnIH0pO1xyXG52YXIgUGxhY2VzID0gbW9uZ29vc2UubW9kZWwoJ1BsYWNlJywgcGxhY2VTY2hlbWEpO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBQbGFjZXM7Il19\",\"originalCode\":\"const mongoose = require('mongoose');\\r\\nconst Schema = mongoose.Schema;\\r\\n\\r\\nconst pointSchema = new Schema({\\r\\n type: {\\r\\n type: String,\\r\\n enum: ['Point'],\\r\\n required: true,\\r\\n default: 'Point'\\r\\n },\\r\\n coordinates: {\\r\\n type: [Number],\\r\\n required: true\\r\\n }\\r\\n});\\r\\n\\r\\nconst placeSchema = new Schema({\\r\\n name: {\\r\\n type: String,\\r\\n required: true,\\r\\n unique: true\\r\\n },\\r\\n description: {\\r\\n type: String,\\r\\n required: true\\r\\n },\\r\\n location: {\\r\\n type: pointSchema,\\r\\n index: '2dsphere',\\r\\n required: true\\r\\n },\\r\\n distance: {\\r\\n type: String,\\r\\n required: true\\r\\n },\\r\\n timeToReach: {\\r\\n type: String,\\r\\n required: true\\r\\n },\\r\\n image:\\r\\n {\\r\\n type: String,\\r\\n },\\r\\n travellingMethods: [\\r\\n {\\r\\n type: String,\\r\\n enum: ['Bus', 'Car', 'Train', 'Threewheeler', 'Foot']\\r\\n }\\r\\n ]\\r\\n}, {\\r\\n timestamps: true\\r\\n});\\r\\n\\r\\nplaceSchema.index({ '$**': 'text' });\\r\\nvar Places = mongoose.model('Place', placeSchema);\\r\\n\\r\\nmodule.exports = Places;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/c4/visitingPlaces_c4ccc91c117df8c4aeada72a82534688.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2459\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\models\\\\visitingPlaces.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":4920,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":4917,\"count\":1}],\"isBlockCoverage\":true}]}},{\"codeTransformResult\":{\"code\":\"var passport = require('passport');\\n\\nvar LocalStrategy = require('passport-local').Strategy;\\n\\nvar User = require('../models/users');\\n\\nvar JwtStrategy = require('passport-jwt').Strategy;\\n\\nvar ExtractJwt = require('passport-jwt').ExtractJwt;\\n\\nvar jwt = require('jsonwebtoken');\\n\\npassport.use(new LocalStrategy(User.authenticate()));\\npassport.serializeUser(User.serializeUser());\\npassport.deserializeUser(User.deserializeUser());\\n\\nexports.getToken = user => {\\n return jwt.sign(user, process.env.secretKey, {\\n expiresIn: 3600\\n });\\n};\\n\\nvar opts = {};\\nopts.jwtFromRequest = ExtractJwt.fromAuthHeaderAsBearerToken();\\nopts.secretOrKey = process.env.secretKey;\\nexports.jwtPassport = passport.use(new JwtStrategy(opts, (jwt_payload, done) => {\\n User.findOne({\\n _id: jwt_payload._id\\n }, (err, user) => {\\n if (err) {\\n return done(err, false);\\n } else if (user) {\\n return done(null, user);\\n } else {\\n return done(null, false);\\n }\\n });\\n}));\\nexports.verifyUser = passport.authenticate('jwt', {\\n session: false\\n});\\n\\nexports.verifyAdmin = (req, res, next) => {\\n if (req.user.role == 'admin') {\\n return next();\\n } else if (req.user.role != 'admin') {\\n err = new Error('You are not authorized to perform this operation!');\\n err.status = 403;\\n return next(err);\\n } else {\\n err = new Error('Admin Verification Failed!');\\n err.status = 500;\\n return next(err);\\n }\\n};\\n\\nexports.verifyModerater = (req, res, next) => {\\n if (req.user.role != 'user') {\\n return next();\\n } else if (req.user.role == 'user') {\\n err = new Error('You are not authorized to perform this operation!');\\n err.status = 403;\\n return next(err);\\n }\\n};\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF1dGhlbnRpY2F0ZS5qcyJdLCJuYW1lcyI6WyJwYXNzcG9ydCIsInJlcXVpcmUiLCJMb2NhbFN0cmF0ZWd5IiwiU3RyYXRlZ3kiLCJVc2VyIiwiSnd0U3RyYXRlZ3kiLCJFeHRyYWN0Snd0Iiwiand0IiwidXNlIiwiYXV0aGVudGljYXRlIiwic2VyaWFsaXplVXNlciIsImRlc2VyaWFsaXplVXNlciIsImV4cG9ydHMiLCJnZXRUb2tlbiIsInVzZXIiLCJzaWduIiwicHJvY2VzcyIsImVudiIsInNlY3JldEtleSIsImV4cGlyZXNJbiIsIm9wdHMiLCJqd3RGcm9tUmVxdWVzdCIsImZyb21BdXRoSGVhZGVyQXNCZWFyZXJUb2tlbiIsInNlY3JldE9yS2V5Iiwiand0UGFzc3BvcnQiLCJqd3RfcGF5bG9hZCIsImRvbmUiLCJmaW5kT25lIiwiX2lkIiwiZXJyIiwidmVyaWZ5VXNlciIsInNlc3Npb24iLCJ2ZXJpZnlBZG1pbiIsInJlcSIsInJlcyIsIm5leHQiLCJyb2xlIiwiRXJyb3IiLCJzdGF0dXMiLCJ2ZXJpZnlNb2RlcmF0ZXIiXSwibWFwcGluZ3MiOiJBQUFBLElBQUlBLFFBQVEsR0FBR0MsT0FBTyxDQUFDLFVBQUQsQ0FBdEI7O0FBQ0EsSUFBSUMsYUFBYSxHQUFHRCxPQUFPLENBQUMsZ0JBQUQsQ0FBUCxDQUEwQkUsUUFBOUM7O0FBQ0EsSUFBSUMsSUFBSSxHQUFHSCxPQUFPLENBQUMsaUJBQUQsQ0FBbEI7O0FBRUEsSUFBSUksV0FBVyxHQUFHSixPQUFPLENBQUMsY0FBRCxDQUFQLENBQXdCRSxRQUExQzs7QUFDQSxJQUFJRyxVQUFVLEdBQUdMLE9BQU8sQ0FBQyxjQUFELENBQVAsQ0FBd0JLLFVBQXpDOztBQUNBLElBQUlDLEdBQUcsR0FBR04sT0FBTyxDQUFDLGNBQUQsQ0FBakI7O0FBR0FELFFBQVEsQ0FBQ1EsR0FBVCxDQUFhLElBQUlOLGFBQUosQ0FBa0JFLElBQUksQ0FBQ0ssWUFBTCxFQUFsQixDQUFiO0FBQ0FULFFBQVEsQ0FBQ1UsYUFB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dCI6WyJ2YXIgcGFzc3BvcnQgPSByZXF1aXJlKCdwYXNzcG9ydCcpO1xyXG52YXIgTG9jYWxTdHJhdGVneSA9IHJlcXVpcmUoJ3Bhc3Nwb3J0LWxvY2FsJykuU3RyYXRlZ3k7XHJcbnZhciBVc2VyID0gcmVxdWlyZSgnLi4vbW9kZWxzL3VzZXJzJyk7XHJcblxyXG52YXIgSnd0U3RyYXRlZ3kgPSByZXF1aXJlKCdwYXNzcG9ydC1qd3QnKS5TdHJhdGVneTtcclxudmFyIEV4dHJhY3RKd3QgPSByZXF1aXJlKCdwYXNzcG9ydC1qd3QnKS5FeHRyYWN0Snd0O1xyXG52YXIgand0ID0gcmVxdWlyZSgnanNvbndlYnRva2VuJyk7XHJcblxyXG5cclxucGFzc3BvcnQudXNlKG5ldyBMb2NhbFN0cmF0ZWd5KFVzZXIuYXV0aGVudGljYXRlKCkpKTtcclxucGFzc3BvcnQuc2VyaWFsaXplVXNlcihVc2VyLnNlcmlhbGl6ZVVzZXIoKSk7XHJcbnBhc3Nwb3J0LmRlc2VyaWFsaXplVXNlcihVc2VyLmRlc2VyaWFsaXplVXNlcigpKTtcclxuXHJcbmV4cG9ydHMuZ2V0VG9rZW4gPSAodXNlcikgPT4ge1xyXG4gICAgcmV0dXJuIGp3dC5zaWduKHVzZXIsIHByb2Nlc3MuZW52LnNlY3JldEtleSxcclxuICAgICAgICB7IGV4cGlyZXNJbjogMzYwMCB9KTtcclxufTtcclxuXHJcbnZhciBvcHRzID0ge307XHJcbm9wdHMuand0RnJvbVJlcXVlc3QgPSBFeHRyYWN0Snd0LmZyb21BdXRoSGVhZGVyQXNCZWFyZXJUb2tlbigpO1xyXG5vcHRzLnNlY3JldE9yS2V5ID0gcHJvY2Vzcy5lbnYuc2VjcmV0S2V5O1xyXG5cclxuZXhwb3J0cy5qd3RQYXNzcG9ydCA9IHBhc3Nwb3J0LnVzZShuZXcgSnd0U3RyYXRlZ3kob3B0cyxcclxuICAgIChqd3RfcGF5bG9hZCwgZG9uZSkgPT4ge1xyXG4gICAgICAgIFVzZXIuZmluZE9uZSh7IF9pZDogand0X3BheWxvYWQuX2lkIH0sIChlcnIsIHVzZXIpID0+IHtcclxuICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRvbmUoZXJyLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAodXNlcikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRvbmUobnVsbCwgdXNlcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZG9uZShudWxsLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH0pKTtcclxuXHJcbmV4cG9ydHMudmVyaWZ5VXNlciA9IHBhc3Nwb3J0LmF1dGhlbnRpY2F0ZSgnand0JywgeyBzZXNzaW9uOiBmYWxzZSB9KTtcclxuXHJcbmV4cG9ydHMudmVyaWZ5QWRtaW4gPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIGlmIChyZXEudXNlci5yb2xlID09ICdhZG1pbicpIHtcclxuICAgICAgICByZXR1cm4gbmV4dCgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAocmVxLnVzZXIucm9sZSAhPSAnYWRtaW4nKSB7XHJcbiAgICAgICAgZXJyID0gbmV3IEVycm9yKCdZb3UgYXJlIG5vdCBhdXRob3JpemVkIHRvIHBlcmZvcm0gdGhpcyBvcGVyYXRpb24hJyk7XHJcbiAgICAgICAgZXJyLnN0YXR1cyA9IDQwMztcclxuICAgICAgICByZXR1cm4gbmV4dChlcnIpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgZXJyID0gbmV3IEVycm9yKCdBZG1pbiBWZXJpZmljYXRpb24gRmFpbGVkIScpO1xyXG4gICAgICAgIGVyci5zdGF0dXMgPSA1MDA7XHJcbiAgICAgICAgcmV0dXJuIG5leHQoZXJyKTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0cy52ZXJpZnlNb2RlcmF0ZXIgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIGlmIChyZXEudXNlci5yb2xlICE9ICd1c2VyJykge1xyXG4gICAgICAgIHJldHVybiBuZXh0KCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChyZXEudXNlci5yb2xlID09ICd1c2VyJykge1xyXG4gICAgICAgIGVyciA9IG5ldyBFcnJvcignWW91IGFyZSBub3QgYXV0aG9yaXplZCB0byBwZXJmb3JtIHRoaXMgb3BlcmF0aW9uIScpO1xyXG4gICAgICAgIGVyci5zdGF0dXMgPSA0MDM7XHJcbiAgICAgICAgcmV0dXJuIG5leHQoZXJyKTtcclxuICAgIH1cclxufVxyXG4iXX0=\",\"originalCode\":\"var passport = require('passport');\\r\\nvar LocalStrategy = require('passport-local').Strategy;\\r\\nvar User = require('../models/users');\\r\\n\\r\\nvar JwtStrategy = require('passport-jwt').Strategy;\\r\\nvar ExtractJwt = require('passport-jwt').ExtractJwt;\\r\\nvar jwt = require('jsonwebtoken');\\r\\n\\r\\n\\r\\npassport.use(new LocalStrategy(User.authenticate()));\\r\\npassport.serializeUser(User.serializeUser());\\r\\npassport.deserializeUser(User.deserializeUser());\\r\\n\\r\\nexports.getToken = (user) => {\\r\\n return jwt.sign(user, process.env.secretKey,\\r\\n { expiresIn: 3600 });\\r\\n};\\r\\n\\r\\nvar opts = {};\\r\\nopts.jwtFromRequest = ExtractJwt.fromAuthHeaderAsBearerToken();\\r\\nopts.secretOrKey = process.env.secretKey;\\r\\n\\r\\nexports.jwtPassport = passport.use(new JwtStrategy(opts,\\r\\n (jwt_payload, done) => {\\r\\n User.findOne({ _id: jwt_payload._id }, (err, user) => {\\r\\n if (err) {\\r\\n return done(err, false);\\r\\n }\\r\\n else if (user) {\\r\\n return done(null, user);\\r\\n }\\r\\n else {\\r\\n return done(null, false);\\r\\n }\\r\\n });\\r\\n }));\\r\\n\\r\\nexports.verifyUser = passport.authenticate('jwt', { session: false });\\r\\n\\r\\nexports.verifyAdmin = (req, res, next) => {\\r\\n if (req.user.role == 'admin') {\\r\\n return next();\\r\\n }\\r\\n else if (req.user.role != 'admin') {\\r\\n err = new Error('You are not authorized to perform this operation!');\\r\\n err.status = 403;\\r\\n return next(err);\\r\\n }\\r\\n else {\\r\\n err = new Error('Admin Verification Failed!');\\r\\n err.status = 500;\\r\\n return next(err);\\r\\n }\\r\\n}\\r\\n\\r\\nexports.verifyModerater = (req, res, next) => {\\r\\n if (req.user.role != 'user') {\\r\\n return next();\\r\\n }\\r\\n else if (req.user.role == 'user') {\\r\\n err = new Error('You are not authorized to perform this operation!');\\r\\n err.status = 403;\\r\\n return next(err);\\r\\n }\\r\\n}\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/17/authenticate_1749ed24acd3b9174e3e8d9c003de68d.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2460\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\middleware\\\\authenticate.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":8164,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":8161,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"Object.
.exports.getToken\",\"ranges\":[{\"startOffset\":536,\"endOffset\":622,\"count\":2}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":803,\"endOffset\":1050,\"count\":2}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":875,\"endOffset\":1046,\"count\":2},{\"startOffset\":905,\"endOffset\":943,\"count\":0},{\"startOffset\":997,\"endOffset\":1042,\"count\":0}],\"isBlockCoverage\":true},{\"functionName\":\"Object.
.exports.verifyAdmin\",\"ranges\":[{\"startOffset\":1150,\"endOffset\":1495,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
.exports.verifyModerater\",\"ranges\":[{\"startOffset\":1524,\"endOffset\":1761,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"var validationRules = {\\n id: {\\n in: ['params', 'query'],\\n errorMessage: 'ID is wrong',\\n isInt: true,\\n toInt: true\\n },\\n name: {\\n errorMessage: 'Name should be at least 2 chars long and maximum of 50 chars',\\n isLength: {\\n options: {\\n min: 2,\\n max: 50\\n }\\n },\\n trim: true\\n },\\n description: {\\n errorMessage: 'Description should be at least 2 chars long and maximum of 200 chars',\\n isLength: {\\n options: {\\n min: 2,\\n max: 200\\n }\\n },\\n trim: true\\n },\\n distance: {\\n errorMessage: 'Distance should be at least 1 chars long and maximum of 200 chars',\\n isLength: {\\n options: {\\n min: 1,\\n max: 200\\n }\\n },\\n trim: true\\n },\\n timeToReach: {\\n errorMessage: 'Time To Reach should be at least 2 chars long and maximum of 200 chars',\\n isLength: {\\n options: {\\n min: 2,\\n max: 200\\n }\\n },\\n trim: true\\n },\\n firstname: {\\n errorMessage: 'First Name should be at least 3 chars long and maximum of 50 chars',\\n isLength: {\\n options: {\\n min: 3,\\n max: 50\\n }\\n },\\n trim: true\\n },\\n lastname: {\\n errorMessage: 'Last Name should be at least 3 chars long and maximum of 50 chars',\\n isLength: {\\n options: {\\n min: 3,\\n max: 50\\n }\\n },\\n trim: true\\n },\\n email: {\\n errorMessage: 'Please enter a valid email address',\\n isEmail: true,\\n trim: true\\n },\\n mobile: {\\n errorMessage: 'Please enter Phone Number in 10 digits',\\n isLength: {\\n options: {\\n min: 10,\\n max: 10\\n }\\n },\\n matches: {\\n options: [/^\\\\d{10}$/],\\n errorMessage: \\\"Please enter digits\\\"\\n },\\n trim: true\\n },\\n password: {\\n isLength: {\\n errorMessage: 'Password should be at least 6 chars long',\\n options: {\\n min: 6\\n }\\n }\\n },\\n confirm_password: {\\n errorMessage: 'Must have the same value as the password field',\\n custom: {\\n options: (value, {\\n req\\n }) => value === req.body.password\\n }\\n },\\n suite: {\\n errorMessage: 'Please select suite type',\\n isIn: {\\n options: [['gold', 'luxury', 'platinum']]\\n }\\n },\\n roomnumber: {\\n errorMessage: 'Room Number should be at least 3 chars long and maximum of 50 chars',\\n isLength: {\\n options: {\\n min: 3,\\n max: 50\\n }\\n },\\n trim: true\\n },\\n state: {\\n errorMessage: 'Please select correct state',\\n isIn: {\\n options: [[\\\"new\\\", \\\"not-completed\\\", \\\"canceled\\\", \\\"completed\\\"]]\\n }\\n },\\n method: {\\n errorMessage: 'Please select correct travelling method',\\n isIn: {\\n options: [['Bus', 'Car', 'Train', 'Threewheeler', 'Foot']]\\n }\\n }\\n};\\nexports.validationRules = validationRules;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInZhbGlkYXRpb24uanMiXSwibmFtZXMiOlsidmFsaWRhdGlvblJ1bGVzIiwiaWQiLCJpbiIsImVycm9yTWVzc2FnZSIsImlzSW50IiwidG9JbnQiLCJuYW1lIiwiaXNMZW5ndGgiLCJvcHRpb25zIiwibWluIiwibWF4IiwidHJpbSIsImRlc2NyaXB0aW9uIiwiZGlzdGFuY2UiLCJ0aW1lVG9SZWFjaCIsImZpcnN0bmFtZSIsImxhc3RuYW1lIiwiZW1haWwiLCJpc0VtYWlsIiwibW9iaWxlIiwibWF0Y2hlcyIsInBhc3N3b3JkIiwiY29uZmlybV9wYXNzd29yZCIsImN1c3RvbSIsInZhbHVlIiwicmVxIiwiYm9keSIsInN1aXRlIiwiaXNJbiIsInJvb21udW1iZXIiLCJzdGF0ZSIsIm1ldGhvZCIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLElBQUlBLGVBQWUsR0FBRztBQUNsQkMsRUFBQUEsRUFBRSxFQUFFO0FBQ0FDLElBQUFBLEVBQUUsRUFBRSxDQUFDLFFBQUQsRUFBVyxPQUFYLENBREo7QUFFQUMsSUFBQUEsWUFBWSxFQUFFLGFBRmQ7QUFHQUMsSUFBQUEsS0FBSyxFQUFFLElBSFA7QUFJQUMsSUFBQUEsS0FBSyxFQUFFO0FBSlAsR0FEYztBQU9sQkMsRUFBQUEsSUFBSSxFQUFFO0FBQ0ZILElBQUFBLFlBQVksRUFBRSw4REFEWjtBQUVGSSxJQUFBQSxRQUFRLEVBQUU7QUFDTkMsTUFBQUEsT0FBTyxFQUFFO0FBQUVDLFFBQUFBLEdBQUcsRUFBRSxDQUFQO0FBQVVDLFFBQUFBLEdBQUcsRUFBRTtBQUFmO0FBREgsS0FGUjtBQUtGQyxJQUFBQSxJQUFJLEVBQUU7QUFMSixHQVBZO0FBY2xCQyxFQUFBQSxXQUFXLEVBQUU7QUFDVFQsSUFBQUEsWUFBWSxFQUFFLHNFQURMO0FBRVRJLElBQUFBLFFBQVEsRUFBRTtBQUNOQyxNQUFBQSxPQUFPLEVBQUU7QUFBRUMsUUFBQUEsR0FBRyxFQUFFLENBQVA7QUFBVUMsUUFBQUEsR0FBRyxFQUFFO0FBQWY7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RTtBQUFFQyxRQUFBQSxHQUFHLEVBQUUsQ0FBUDtBQUFVQyxRQUFBQSxHQUFHLEVBQUU7QUFBZjtBQURILEtBRkY7QUFLUkMsSUFBQUEsSUFBSSxFQUFFO0FBTEUsR0FuRk07QUEwRmxCbUIsRUFBQUEsS0FBSyxFQUFFO0FBQ0gzQixJQUFBQSxZQUFZLEVBQUUsNkJBRFg7QUFFSHlCLElBQUFBLElBQUksRUFBRTtBQUNGcEIsTUFBQUEsT0FBTyxFQUFFLENBQUMsQ0FBQyxLQUFELEVBQVEsZUFBUixFQUF5QixVQUF6QixFQUFxQyxXQUFyQyxDQUFEO0FBRFA7QUFGSCxHQTFGVztBQWdHbEJ1QixFQUFBQSxNQUFNLEVBQUU7QUFDSjVCLElBQUFBLFlBQVksRUFBRSx5Q0FEVjtBQUVKeUIsSUFBQUEsSUFBSSxFQUFFO0FBQ0ZwQixNQUFBQSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEtBQUQsRUFBUSxLQUFSLEVBQWUsT0FBZixFQUF3QixjQUF4QixFQUF3QyxNQUF4QyxDQUFEO0FBRFA7QUFGRjtBQWhHVSxDQUF0QjtBQXdHQXdCLE9BQU8sQ0FBQ2hDLGVBQVIsR0FBMEJBLGVBQTFCIiwic291cmNlc0NvbnRlbnQiOlsidmFyIHZhbGlkYXRpb25SdWxlcyA9IHtcclxuICAgIGlkOiB7XHJcbiAgICAgICAgaW46IFsncGFyYW1zJywgJ3F1ZXJ5J10sXHJcbiAgICAgICAgZXJyb3JNZXNzYWdlOiAnSUQgaXMgd3JvbmcnLFxyXG4gICAgICAgIGlzSW50OiB0cnVlLFxyXG4gICAgICAgIHRvSW50OiB0cnVlLFxyXG4gICAgfSxcclxuICAgIG5hbWU6IHtcclxuICAgICAgICBlcnJvck1lc3NhZ2U6ICdOYW1lIHNob3VsZCBiZSBhdCBsZWFzdCAyIGNoYXJzIGxvbmcgYW5kIG1heGltdW0gb2YgNTAgY2hhcnMnLFxyXG4gICAgICAgIGlzTGVuZ3RoOiB7XHJcbiAgICAgICAgICAgIG9wdGlvbnM6IHsgbWluOiAyLCBtYXg6IDUwIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHRyaW06IHRydWVcclxuICAgIH0sXHJcbiAgICBkZXNjcmlwdGlvbjoge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ0Rlc2NyaXB0aW9uIHNob3VsZCBiZSBhdCBsZWFzdCAyIGNoYXJzIGxvbmcgYW5kIG1heGltdW0gb2YgMjAwIGNoYXJzJyxcclxuICAgICAgICBpc0xlbmd0aDoge1xyXG4gICAgICAgICAgICBvcHRpb25zOiB7IG1pbjogMiwgbWF4OiAyMDAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHJpbTogdHJ1ZVxyXG4gICAgfSxcclxuICAgIGRpc3RhbmNlOiB7XHJcbiAgICAgICAgZXJyb3JNZXNzYWdlOiAnRGlzdGFuY2Ugc2hvdWxkIGJlIGF0IGxlYXN0IDEgY2hhcnMgbG9uZyBhbmQgbWF4aW11bSBvZiAyMDAgY2hhcnMnLFxyXG4gICAgICAgIGlzTGVuZ3RoOiB7XHJcbiAgICAgICAgICAgIG9wdGlvbnM6IHsgbWluOiAxLCBtYXg6IDIwMCB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICB0cmltOiB0cnVlXHJcbiAgICB9LFxyXG4gICAgdGltZVRvUmVhY2g6IHtcclxuICAgICAgICBlcnJvck1lc3NhZ2U6ICdUaW1lIFRvIFJlYWNoIHNob3VsZCBiZSBhdCBsZWFzdCAyIGNoYXJzIGxvbmcgYW5kIG1heGltdW0gb2YgMjAwIGNoYXJzJyxcclxuICAgICAgICBpc0xlbmd0aDoge1xyXG4gICAgICAgICAgICBvcHRpb25zOiB7IG1pbjogMiwgbWF4OiAyMDAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHJpbTogdHJ1ZVxyXG4gICAgfSxcclxuICAgIGZpcnN0bmFtZToge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ0ZpcnN0IE5hbWUgc2hvdWxkIGJlIGF0IGxlYXN0IDMgY2hhcnMgbG9uZyBhbmQgbWF4aW11bSBvZiA1MCBjaGFycycsXHJcbiAgICAgICAgaXNMZW5ndGg6IHtcclxuICAgICAgICAgICAgb3B0aW9uczogeyBtaW46IDMsIG1heDogNTAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHJpbTogdHJ1ZVxyXG4gICAgfSxcclxuICAgIGxhc3RuYW1lOiB7XHJcbiAgICAgICAgZXJyb3JNZXNzYWdlOiAnTGFzdCBOYW1lIHNob3VsZCBiZSBhdCBsZWFzdCAzIGNoYXJzIGxvbmcgYW5kIG1heGltdW0gb2YgNTAgY2hhcnMnLFxyXG4gICAgICAgIGlzTGVuZ3RoOiB7XHJcbiAgICAgICAgICAgIG9wdGlvbnM6IHsgbWluOiAzLCBtYXg6IDUwIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHRyaW06IHRydWVcclxuICAgIH0sXHJcbiAgICBlbWFpbDoge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ1BsZWFzZSBlbnRlciBhIHZhbGlkIGVtYWlsIGFkZHJlc3MnLFxyXG4gICAgICAgIGlzRW1haWw6IHRydWUsXHJcbiAgICAgICAgdHJpbTogdHJ1ZSxcclxuICAgIH0sXHJcbiAgICBtb2JpbGU6IHtcclxuICAgICAgICBlcnJvck1lc3NhZ2U6ICdQbGVhc2UgZW50ZXIgUGhvbmUgTnVtYmVyIGluIDEwIGRpZ2l0cycsXHJcbiAgICAgICAgaXNMZW5ndGg6IHtcclxuICAgICAgICAgICAgb3B0aW9uczogeyBtaW46IDEwLCBtYXg6IDEwIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIG1hdGNoZXM6IHtcclxuICAgICAgICAgICAgb3B0aW9uczogWy9eXFxkezEwfSQvXSxcclxuICAgICAgICAgICAgZXJyb3JNZXNzYWdlOiBcIlBsZWFzZSBlbnRlciBkaWdpdHNcIlxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHJpbTogdHJ1ZVxyXG4gICAgfSxcclxuICAgIHBhc3N3b3JkOiB7XHJcbiAgICAgICAgaXNMZW5ndGg6IHtcclxuICAgICAgICAgICAgZXJyb3JNZXNzYWdlOiAnUGFzc3dvcmQgc2hvdWxkIGJlIGF0IGxlYXN0IDYgY2hhcnMgbG9uZycsXHJcbiAgICAgICAgICAgIG9wdGlvbnM6IHsgbWluOiA2IH1cclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgY29uZmlybV9wYXNzd29yZDoge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ011c3QgaGF2ZSB0aGUgc2FtZSB2YWx1ZSBhcyB0aGUgcGFzc3dvcmQgZmllbGQnLFxyXG4gICAgICAgIGN1c3RvbToge1xyXG4gICAgICAgICAgICBvcHRpb25zOiAodmFsdWUsIHsgcmVxIH0pID0+IHZhbHVlID09PSByZXEuYm9keS5wYXNzd29yZFxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICBzdWl0ZToge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ1BsZWFzZSBzZWxlY3Qgc3VpdGUgdHlwZScsXHJcbiAgICAgICAgaXNJbjoge1xyXG4gICAgICAgICAgICBvcHRpb25zOiBbWydnb2xkJywgJ2x1eHVyeScsICdwbGF0aW51bSddXSxcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgcm9vbW51bWJlcjoge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ1Jvb20gTnVtYmVyIHNob3VsZCBiZSBhdCBsZWFzdCAzIGNoYXJzIGxvbmcgYW5kIG1heGltdW0gb2YgNTAgY2hhcnMnLFxyXG4gICAgICAgIGlzTGVuZ3RoOiB7XHJcbiAgICAgICAgICAgIG9wdGlvbnM6IHsgbWluOiAzLCBtYXg6IDUwIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHRyaW06IHRydWVcclxuICAgIH0sXHJcbiAgICBzdGF0ZToge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ1BsZWFzZSBzZWxlY3QgY29ycmVjdCBzdGF0ZScsXHJcbiAgICAgICAgaXNJbjoge1xyXG4gICAgICAgICAgICBvcHRpb25zOiBbW1wibmV3XCIsIFwibm90LWNvbXBsZXRlZFwiLCBcImNhbmNlbGVkXCIsIFwiY29tcGxldGVkXCJdXSxcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgbWV0aG9kOiB7XHJcbiAgICAgICAgZXJyb3JNZXNzYWdlOiAnUGxlYXNlIHNlbGVjdCBjb3JyZWN0IHRyYXZlbGxpbmcgbWV0aG9kJyxcclxuICAgICAgICBpc0luOiB7XHJcbiAgICAgICAgICAgIG9wdGlvbnM6IFtbJ0J1cycsICdDYXInLCAnVHJhaW4nLCAnVGhyZWV3aGVlbGVyJywgJ0Zvb3QnXV0sXHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxufVxyXG5cclxuZXhwb3J0cy52YWxpZGF0aW9uUnVsZXMgPSB2YWxpZGF0aW9uUnVsZXM7Il19\",\"originalCode\":\"var validationRules = {\\r\\n id: {\\r\\n in: ['params', 'query'],\\r\\n errorMessage: 'ID is wrong',\\r\\n isInt: true,\\r\\n toInt: true,\\r\\n },\\r\\n name: {\\r\\n errorMessage: 'Name should be at least 2 chars long and maximum of 50 chars',\\r\\n isLength: {\\r\\n options: { min: 2, max: 50 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n description: {\\r\\n errorMessage: 'Description should be at least 2 chars long and maximum of 200 chars',\\r\\n isLength: {\\r\\n options: { min: 2, max: 200 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n distance: {\\r\\n errorMessage: 'Distance should be at least 1 chars long and maximum of 200 chars',\\r\\n isLength: {\\r\\n options: { min: 1, max: 200 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n timeToReach: {\\r\\n errorMessage: 'Time To Reach should be at least 2 chars long and maximum of 200 chars',\\r\\n isLength: {\\r\\n options: { min: 2, max: 200 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n firstname: {\\r\\n errorMessage: 'First Name should be at least 3 chars long and maximum of 50 chars',\\r\\n isLength: {\\r\\n options: { min: 3, max: 50 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n lastname: {\\r\\n errorMessage: 'Last Name should be at least 3 chars long and maximum of 50 chars',\\r\\n isLength: {\\r\\n options: { min: 3, max: 50 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n email: {\\r\\n errorMessage: 'Please enter a valid email address',\\r\\n isEmail: true,\\r\\n trim: true,\\r\\n },\\r\\n mobile: {\\r\\n errorMessage: 'Please enter Phone Number in 10 digits',\\r\\n isLength: {\\r\\n options: { min: 10, max: 10 }\\r\\n },\\r\\n matches: {\\r\\n options: [/^\\\\d{10}$/],\\r\\n errorMessage: \\\"Please enter digits\\\"\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n password: {\\r\\n isLength: {\\r\\n errorMessage: 'Password should be at least 6 chars long',\\r\\n options: { min: 6 }\\r\\n }\\r\\n },\\r\\n confirm_password: {\\r\\n errorMessage: 'Must have the same value as the password field',\\r\\n custom: {\\r\\n options: (value, { req }) => value === req.body.password\\r\\n }\\r\\n },\\r\\n suite: {\\r\\n errorMessage: 'Please select suite type',\\r\\n isIn: {\\r\\n options: [['gold', 'luxury', 'platinum']],\\r\\n }\\r\\n },\\r\\n roomnumber: {\\r\\n errorMessage: 'Room Number should be at least 3 chars long and maximum of 50 chars',\\r\\n isLength: {\\r\\n options: { min: 3, max: 50 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n state: {\\r\\n errorMessage: 'Please select correct state',\\r\\n isIn: {\\r\\n options: [[\\\"new\\\", \\\"not-completed\\\", \\\"canceled\\\", \\\"completed\\\"]],\\r\\n }\\r\\n },\\r\\n method: {\\r\\n errorMessage: 'Please select correct travelling method',\\r\\n isIn: {\\r\\n options: [['Bus', 'Car', 'Train', 'Threewheeler', 'Foot']],\\r\\n }\\r\\n },\\r\\n}\\r\\n\\r\\nexports.validationRules = validationRules;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/4b/validation_4b7a8ff68e044daa8c6daa8312a761dc.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2493\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\middleware\\\\validation.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":11520,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":11517,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"options\",\"ranges\":[{\"startOffset\":2073,\"endOffset\":2134,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"var express = require('express');\\n\\nvar router = express.Router();\\n\\nvar Users = require('../models/users');\\n\\nvar passport = require('passport');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nconst signupAdmin = (req, res, next) => {\\n var admin = {\\n username: req.body.email,\\n firstname: req.body.firstname,\\n lastname: req.body.lastname,\\n email: req.body.email,\\n role: 'admin'\\n };\\n Users.register(new Users(admin), req.body.password, (err, user) => {\\n if (err) {\\n res.statusCode = 403;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n status: 'Registration Unsuccessful!'\\n });\\n } else {\\n if (req.body.firstname) user.firstname = req.body.firstname;\\n if (req.body.lastname) user.lastname = req.body.lastname;\\n user.save((err, user) => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n status: 'Registration Successful!'\\n });\\n });\\n }\\n });\\n};\\n\\nconst login = (req, res, next) => {\\n passport.authenticate('local', (err, user, info) => {\\n if (!user) {\\n res.statusCode = 401;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n status: 'Login Unsuccessful!',\\n err: info\\n });\\n return next(err);\\n }\\n\\n req.logIn(user, err => {\\n var token = authenticate.getToken({\\n _id: req.user._id,\\n role: user.role\\n });\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n status: 'Login Successful!',\\n token: token\\n });\\n });\\n })(req, res, next);\\n};\\n\\nconst changePassoword = (req, res, next) => {\\n var userId = req.params.id;\\n var newPasswordString = req.body.password;\\n Users.findById(userId).then(function (sanitizedUser) {\\n if (sanitizedUser) {\\n sanitizedUser.setPassword(newPasswordString, function () {\\n sanitizedUser.save();\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n message: 'password reset successful'\\n });\\n });\\n } else {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'This user does not exist'\\n });\\n }\\n }, function (err) {\\n next(err);\\n });\\n};\\n\\nconst logout = (req, res) => {\\n if (req.session) {\\n req.session.destroy();\\n res.clearCookie('session-id');\\n } else {\\n var err = new Error('You are not logged in!');\\n err.status = 403;\\n }\\n};\\n\\nexports.signupAdmin = signupAdmin;\\nexports.login = login;\\nexports.logout = logout;\\nexports.changePassoword = changePassoword;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVzZXJDb250cm9sbGVyLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwicm91dGVyIiwiUm91dGVyIiwiVXNlcnMiLCJwYXNzcG9ydCIsImF1dGhlbnRpY2F0ZSIsInNpZ251cEFkbWluIiwicmVxIiwicmVzIiwibmV4dCIsImFkbWluIiwidXNlcm5hbWUiLCJib2R5IiwiZW1haWwiLCJmaXJzdG5hbWUiLCJsYXN0bmFtZSIsInJvbGUiLCJyZWdpc3RlciIsInBhc3N3b3JkIiwiZXJyIiwidXNlciIsInN0YXR1c0NvZGUiLCJzZXRIZWFkZXIiLCJqc29uIiwic3VjY2VzcyIsInN0YXR1cyIsInNhdmUiLCJsb2dpbiIsImluZm8iLCJsb2dJbiIsInRva2VuIiwiZ2V0VG9rZW4iLCJfaWQiLCJjaGFuZ2VQYXNzb3dvcmQiLCJ1c2VySWQiLCJwYXJhbXMiLCJpZCIsIm5ld1Bhc3N3b3JkU3RyaW5nIiwiZmluZEJ5SWQiLCJ0aGVuIiwic2FuaXRpemVkVXNlciIsInNldFBhc3N3b3JkIiwibWVzc2FnZSIsImxvZ291dCIsInNlc3Npb24iLCJkZXN0cm95IiwiY2xlYXJDb29raWUiLCJFcnJvciIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLElBQUlBLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBckI7O0FBQ0EsSUFBSUMsTUFBTSxHQUFHRixPQUFPLENBQUNHLE1BQVIsRUFBYjs7QUFFQSxJQUFJQyxLQUFLLEdBQUdILE9BQU8sQ0FBQyxpQkFBRCxDQUFuQjs7QUFDQSxJQUFJSSxRQUFRLEdBQUdKLE9BQU8sQ0FBQyxVQUFELENBQXRCOztBQUNBLElBQUlLLFlBQVksR0FBR0wsT0FBTyxDQUFDLDRCQUFELENBQTFCOztBQUdBLE1BQU1NLFdBQVcsR0FBRyxDQUFDQyxHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUNwQyxNQUFJQyxLQUFLLEdBQUc7QUFDUkMsSUFBQUEsUUFBUSxFQUFFSixHQUFHLENBQUNLLElBQUos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YkQsRUFhRyxVQUFVdkIsR0FBVixFQUFlO0FBQ2RWLElBQUFBLElBQUksQ0FBQ1UsR0FBRCxDQUFKO0FBQ0gsR0FmRDtBQWdCSCxDQW5CRDs7QUFxQkEsTUFBTXdCLE1BQU0sR0FBRyxDQUFDcEMsR0FBRCxFQUFNQyxHQUFOLEtBQWM7QUFDekIsTUFBSUQsR0FBRyxDQUFDcUMsT0FBUixFQUFpQjtBQUNickMsSUFBQUEsR0FBRyxDQUFDcUMsT0FBSixDQUFZQyxPQUFaO0FBQ0FyQyxJQUFBQSxHQUFHLENBQUNzQyxXQUFKLENBQWdCLFlBQWhCO0FBQ0gsR0FIRCxNQUlLO0FBQ0QsUUFBSTNCLEdBQUcsR0FBRyxJQUFJNEIsS0FBSixDQUFVLHdCQUFWLENBQVY7QUFDQTVCLElBQUFBLEdBQUcsQ0FBQ00sTUFBSixHQUFhLEdBQWI7QUFDSDtBQUNKLENBVEQ7O0FBV0F1QixPQUFPLENBQUMxQyxXQUFSLEdBQXNCQSxXQUF0QjtBQUNBMEMsT0FBTyxDQUFDckIsS0FBUixHQUFnQkEsS0FBaEI7QUFDQXFCLE9BQU8sQ0FBQ0wsTUFBUixHQUFpQkEsTUFBakI7QUFDQUssT0FBTyxDQUFDZixlQUFSLEdBQTBCQSxlQUExQiIsInNvdXJjZXNDb250ZW50IjpbInZhciBleHByZXNzID0gcmVxdWlyZSgnZXhwcmVzcycpO1xyXG52YXIgcm91dGVyID0gZXhwcmVzcy5Sb3V0ZXIoKTtcclxuXHJcbnZhciBVc2VycyA9IHJlcXVpcmUoJy4uL21vZGVscy91c2VycycpO1xyXG52YXIgcGFzc3BvcnQgPSByZXF1aXJlKCdwYXNzcG9ydCcpO1xyXG52YXIgYXV0aGVudGljYXRlID0gcmVxdWlyZSgnLi4vbWlkZGxld2FyZS9hdXRoZW50aWNhdGUnKTtcclxuXHJcblxyXG5jb25zdCBzaWdudXBBZG1pbiA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgdmFyIGFkbWluID0ge1xyXG4gICAgICAgIHVzZXJuYW1lOiByZXEuYm9keS5lbWFpbCxcclxuICAgICAgICBmaXJzdG5hbWU6IHJlcS5ib2R5LmZpcnN0bmFtZSxcclxuICAgICAgICBsYXN0bmFtZTogcmVxLmJvZHkubGFzdG5hbWUsXHJcbiAgICAgICAgZW1haWw6IHJlcS5ib2R5LmVtYWlsLFxyXG4gICAgICAgIHJvbGU6ICdhZG1pbidcclxuICAgIH1cclxuICAgIFVzZXJzLnJlZ2lzdGVyKG5ldyBVc2VycyhhZG1pbiksXHJcbiAgICAgICAgcmVxLmJvZHkucGFzc3dvcmQsIChlcnIsIHVzZXIpID0+IHtcclxuICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgc3RhdHVzOiAnUmVnaXN0cmF0aW9uIFVuc3VjY2Vzc2Z1bCEnIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlcS5ib2R5LmZpcnN0bmFtZSlcclxuICAgICAgICAgICAgICAgICAgICB1c2VyLmZpcnN0bmFtZSA9IHJlcS5ib2R5LmZpcnN0bmFtZTtcclxuICAgICAgICAgICAgICAgIGlmIChyZXEuYm9keS5sYXN0bmFtZSlcclxuICAgICAgICAgICAgICAgICAgICB1c2VyLmxhc3RuYW1lID0gcmVxLmJvZHkubGFzdG5hbWU7XHJcbiAgICAgICAgICAgICAgICB1c2VyLnNhdmUoKGVyciwgdXNlcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCBzdGF0dXM6ICdSZWdpc3RyYXRpb24gU3VjY2Vzc2Z1bCEnIH0pO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxufVxyXG5cclxuY29uc3QgbG9naW4gPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHBhc3Nwb3J0LmF1dGhlbnRpY2F0ZSgnbG9jYWwnLCAoZXJyLCB1c2VyLCBpbmZvKSA9PiB7XHJcblxyXG4gICAgICAgIGlmICghdXNlcikge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwMTtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgc3RhdHVzOiAnTG9naW4gVW5zdWNjZXNzZnVsIScsIGVycjogaW5mbyB9KTtcclxuICAgICAgICAgICAgcmV0dXJuIG5leHQoZXJyKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmVxLmxvZ0luKHVzZXIsIChlcnIpID0+IHtcclxuICAgICAgICAgICAgdmFyIHRva2VuID0gYXV0aGVudGljYXRlLmdldFRva2VuKHsgX2lkOiByZXEudXNlci5faWQsIHJvbGU6IHVzZXIucm9sZSB9KTtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgc3RhdHVzOiAnTG9naW4gU3VjY2Vzc2Z1bCEnLCB0b2tlbjogdG9rZW4sIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSkocmVxLCByZXMsIG5leHQpO1xyXG59XHJcblxyXG5jb25zdCBjaGFuZ2VQYXNzb3dvcmQgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHZhciB1c2VySWQgPSByZXEucGFyYW1zLmlkO1xyXG4gICAgdmFyIG5ld1Bhc3N3b3JkU3RyaW5nID0gcmVxLmJvZHkucGFzc3dvcmQ7XHJcbiAgICBVc2Vycy5maW5kQnlJZCh1c2VySWQpLnRoZW4oZnVuY3Rpb24gKHNhbml0aXplZFVzZXIpIHtcclxuICAgICAgICBpZiAoc2FuaXRpemVkVXNlcikge1xyXG4gICAgICAgICAgICBzYW5pdGl6ZWRVc2VyLnNldFBhc3N3b3JkKG5ld1Bhc3N3b3JkU3RyaW5nLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICBzYW5pdGl6ZWRVc2VyLnNhdmUoKTtcclxuICAgICAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgbWVzc2FnZTogJ3Bhc3N3b3JkIHJlc2V0IHN1Y2Nlc3NmdWwnIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwNDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogJ1RoaXMgdXNlciBkb2VzIG5vdCBleGlzdCcgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSwgZnVuY3Rpb24gKGVycikge1xyXG4gICAgICAgIG5leHQoZXJyKTtcclxuICAgIH0pO1xyXG59XHJcblxyXG5jb25zdCBsb2dvdXQgPSAocmVxLCByZXMpID0+IHtcclxuICAgIGlmIChyZXEuc2Vzc2lvbikge1xyXG4gICAgICAgIHJlcS5zZXNzaW9uLmRlc3Ryb3koKTtcclxuICAgICAgICByZXMuY2xlYXJDb29raWUoJ3Nlc3Npb24taWQnKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoJ1lvdSBhcmUgbm90IGxvZ2dlZCBpbiEnKTtcclxuICAgICAgICBlcnIuc3RhdHVzID0gNDAzO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnRzLnNpZ251cEFkbWluID0gc2lnbnVwQWRtaW47XHJcbmV4cG9ydHMubG9naW4gPSBsb2dpbjtcclxuZXhwb3J0cy5sb2dvdXQgPSBsb2dvdXQ7XHJcbmV4cG9ydHMuY2hhbmdlUGFzc293b3JkID0gY2hhbmdlUGFzc293b3JkOyJdfQ==\",\"originalCode\":\"var express = require('express');\\r\\nvar router = express.Router();\\r\\n\\r\\nvar Users = require('../models/users');\\r\\nvar passport = require('passport');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\n\\r\\n\\r\\nconst signupAdmin = (req, res, next) => {\\r\\n var admin = {\\r\\n username: req.body.email,\\r\\n firstname: req.body.firstname,\\r\\n lastname: req.body.lastname,\\r\\n email: req.body.email,\\r\\n role: 'admin'\\r\\n }\\r\\n Users.register(new Users(admin),\\r\\n req.body.password, (err, user) => {\\r\\n if (err) {\\r\\n res.statusCode = 403;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, status: 'Registration Unsuccessful!' });\\r\\n }\\r\\n else {\\r\\n if (req.body.firstname)\\r\\n user.firstname = req.body.firstname;\\r\\n if (req.body.lastname)\\r\\n user.lastname = req.body.lastname;\\r\\n user.save((err, user) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, status: 'Registration Successful!' });\\r\\n });\\r\\n }\\r\\n });\\r\\n}\\r\\n\\r\\nconst login = (req, res, next) => {\\r\\n passport.authenticate('local', (err, user, info) => {\\r\\n\\r\\n if (!user) {\\r\\n res.statusCode = 401;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, status: 'Login Unsuccessful!', err: info });\\r\\n return next(err);\\r\\n }\\r\\n req.logIn(user, (err) => {\\r\\n var token = authenticate.getToken({ _id: req.user._id, role: user.role });\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, status: 'Login Successful!', token: token, });\\r\\n });\\r\\n })(req, res, next);\\r\\n}\\r\\n\\r\\nconst changePassoword = (req, res, next) => {\\r\\n var userId = req.params.id;\\r\\n var newPasswordString = req.body.password;\\r\\n Users.findById(userId).then(function (sanitizedUser) {\\r\\n if (sanitizedUser) {\\r\\n sanitizedUser.setPassword(newPasswordString, function () {\\r\\n sanitizedUser.save();\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, message: 'password reset successful' });\\r\\n });\\r\\n } else {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'This user does not exist' });\\r\\n }\\r\\n }, function (err) {\\r\\n next(err);\\r\\n });\\r\\n}\\r\\n\\r\\nconst logout = (req, res) => {\\r\\n if (req.session) {\\r\\n req.session.destroy();\\r\\n res.clearCookie('session-id');\\r\\n }\\r\\n else {\\r\\n var err = new Error('You are not logged in!');\\r\\n err.status = 403;\\r\\n }\\r\\n}\\r\\n\\r\\nexports.signupAdmin = signupAdmin;\\r\\nexports.login = login;\\r\\nexports.logout = logout;\\r\\nexports.changePassoword = changePassoword;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/df/userController_dfcc3c245d97ff3aba4c4e3eb1674b0e.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2494\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\userController.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":12954,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":12951,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"signupAdmin\",\"ranges\":[{\"startOffset\":313,\"endOffset\":1156,\"count\":3}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":553,\"endOffset\":1152,\"count\":3},{\"startOffset\":583,\"endOffset\":771,\"count\":2},{\"startOffset\":771,\"endOffset\":1148,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":926,\"endOffset\":1140,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"login\",\"ranges\":[{\"startOffset\":1173,\"endOffset\":1848,\"count\":6}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1228,\"endOffset\":1828,\"count\":6},{\"startOffset\":1266,\"endOffset\":1490,\"count\":4},{\"startOffset\":1490,\"endOffset\":1827,\"count\":2}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1512,\"endOffset\":1822,\"count\":2}],\"isBlockCoverage\":true},{\"functionName\":\"changePassoword\",\"ranges\":[{\"startOffset\":1875,\"endOffset\":2594,\"count\":2}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":2002,\"endOffset\":2553,\"count\":2},{\"startOffset\":2052,\"endOffset\":2549,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":2105,\"endOffset\":2348,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":2555,\"endOffset\":2590,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"logout\",\"ranges\":[{\"startOffset\":2612,\"endOffset\":2800,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const express = require('express');\\n\\nconst cors = require('cors');\\n\\nconst app = express();\\n\\nconst util = require('util');\\n\\nconst whitelist = ['http://localhost:3000', 'http://localhost:3001', 'https://localhost:5000'];\\n\\nvar corsOptionsDelegate = (req, callback) => {\\n var corsOptions;\\n\\n if (whitelist.indexOf(req.header('Origin')) !== -1) {\\n corsOptions = {\\n origin: true\\n };\\n } else {\\n corsOptions = {\\n origin: false\\n };\\n }\\n\\n callback(null, corsOptions);\\n}; // if we want to allow all origins\\n\\n\\nexports.cors = cors(); // if we want to allow only the whitelisted origins\\n\\nexports.corsWithOptions = cors(corsOptionsDelegate);\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvcnMuanMiXSwibmFtZXMiOlsiZXhwcmVzcyIsInJlcXVpcmUiLCJjb3JzIiwiYXBwIiwidXRpbCIsIndoaXRlbGlzdCIsImNvcnNPcHRpb25zRGVsZWdhdGUiLCJyZXEiLCJjYWxsYmFjayIsImNvcnNPcHRpb25zIiwiaW5kZXhPZiIsImhlYWRlciIsIm9yaWdpbiIsImV4cG9ydHMiLCJjb3JzV2l0aE9wdGlvbnMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBdkI7O0FBQ0EsTUFBTUMsSUFBSSxHQUFHRCxPQUFPLENBQUMsTUFBRCxDQUFwQjs7QUFDQSxNQUFNRSxHQUFHLEdBQUdILE9BQU8sRUFBbkI7O0FBQ0EsTUFBTUksSUFBSSxHQUFHSCxPQUFPLENBQUMsTUFBRCxDQUFwQjs7QUFFQSxNQUFNSSxTQUFTLEdBQUcsQ0FBQyx1QkFBRCxFQUEwQix1QkFBMUIsRUFBbUQsd0JBQW5ELENBQWxCOztBQUNBLElBQUlDLG1CQUFtQixHQUFHLENBQUNDLEdBQUQsRUFBTUMsUUFBTixLQUFtQjtBQUN6QyxNQUFJQyxXQUFKOztBQUNBLE1BQUdKLFNBQVMsQ0FBQ0ssT0FBVixDQUFrQkgsR0FBRyxDQUFDSSxNQUFKLENBQVcsUUFBWCxDQUFsQixNQUE0QyxDQUFDLENBQWhELEVBQW1EO0FBQy9DRixJQUFBQSxXQUFXLEdBQUc7QUFBRUcsTUFBQUEsTUFBTSxFQUFFO0FBQVYsS0FBZDtBQUNILEdBRkQsTUFHSztBQUNESCxJQUFBQSxXQUFXLEdBQUc7QUFBRUcsTUFBQUEsTUFBTSxFQUFFO0FBQVYsS0FBZDtBQUNIOztBQUNESixFQUFBQSxRQUFRLENBQUMsSUFBRCxFQUFPQyxXQUFQLENBQVI7QUFDSCxDQVRELEMsQ0FXQTs7O0FBQ0FJLE9BQU8sQ0FBQ1gsSUFBUixHQUFlQSxJQUFJLEVBQW5CLEMsQ0FFQTs7QUFDQVcsT0FBTyxDQUFDQyxlQUFSLEdBQTBCWixJQUFJLENBQUNJLG1CQUFELENBQTlCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZXhwcmVzcyA9IHJlcXVpcmUoJ2V4cHJlc3MnKTtcclxuY29uc3QgY29ycyA9IHJlcXVpcmUoJ2NvcnMnKTtcclxuY29uc3QgYXBwID0gZXhwcmVzcygpO1xyXG5jb25zdCB1dGlsID0gcmVxdWlyZSgndXRpbCcpO1xyXG5cclxuY29uc3Qgd2hpdGVsaXN0ID0gWydodHRwOi8vbG9jYWxob3N0OjMwMDAnLCAnaHR0cDovL2xvY2FsaG9zdDozMDAxJywgJ2h0dHBzOi8vbG9jYWxob3N0OjUwMDAnXTtcclxudmFyIGNvcnNPcHRpb25zRGVsZWdhdGUgPSAocmVxLCBjYWxsYmFjaykgPT4ge1xyXG4gICAgdmFyIGNvcnNPcHRpb25zO1xyXG4gICAgaWYod2hpdGVsaXN0LmluZGV4T2YocmVxLmhlYWRlcignT3JpZ2luJykpICE9PSAtMSkge1xyXG4gICAgICAgIGNvcnNPcHRpb25zID0geyBvcmlnaW46IHRydWUgfTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGNvcnNPcHRpb25zID0geyBvcmlnaW46IGZhbHNlIH07XHJcbiAgICB9XHJcbiAgICBjYWxsYmFjayhudWxsLCBjb3JzT3B0aW9ucyk7XHJcbn07XHJcblxyXG4vLyBpZiB3ZSB3YW50IHRvIGFsbG93IGFsbCBvcmlnaW5zXHJcbmV4cG9ydHMuY29ycyA9IGNvcnMoKTtcclxuXHJcbi8vIGlmIHdlIHdhbnQgdG8gYWxsb3cgb25seSB0aGUgd2hpdGVsaXN0ZWQgb3JpZ2luc1xyXG5leHBvcnRzLmNvcnNXaXRoT3B0aW9ucyA9IGNvcnMoY29yc09wdGlvbnNEZWxlZ2F0ZSk7Il19\",\"originalCode\":\"const express = require('express');\\r\\nconst cors = require('cors');\\r\\nconst app = express();\\r\\nconst util = require('util');\\r\\n\\r\\nconst whitelist = ['http://localhost:3000', 'http://localhost:3001', 'https://localhost:5000'];\\r\\nvar corsOptionsDelegate = (req, callback) => {\\r\\n var corsOptions;\\r\\n if(whitelist.indexOf(req.header('Origin')) !== -1) {\\r\\n corsOptions = { origin: true };\\r\\n }\\r\\n else {\\r\\n corsOptions = { origin: false };\\r\\n }\\r\\n callback(null, corsOptions);\\r\\n};\\r\\n\\r\\n// if we want to allow all origins\\r\\nexports.cors = cors();\\r\\n\\r\\n// if we want to allow only the whitelisted origins\\r\\nexports.corsWithOptions = cors(corsOptionsDelegate);\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/34/cors_34beef0e65d7cfb3f2bb7a05fb9de802.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2495\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\cors.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":2982,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":2979,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"corsOptionsDelegate\",\"ranges\":[{\"startOffset\":335,\"endOffset\":573,\"count\":9},{\"startOffset\":430,\"endOffset\":481,\"count\":0}],\"isBlockCoverage\":true}]}},{\"codeTransformResult\":{\"code\":\"const express = require('express');\\n\\nconst bodyParser = require('body-parser');\\n\\nconst {\\n checkSchema\\n} = require('express-validator');\\n\\nconst cors = require('./cors');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nvar validationRules = require('../middleware/validation');\\n\\nconst employeeController = require('../controllers/employeeController');\\n\\nconst employeeRouter = express.Router();\\nemployeeRouter.use(bodyParser.json()); // **********************************************************************************\\n// \\n// Employee Routes\\n// \\n// **********************************************************************************\\n\\nemployeeRouter.route('/').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.getAllEmployees).post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.addEmployee).put(cors.corsWithOptions, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('PUT operation not supported on /employees');\\n}).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.deleteAllEmployees);\\nemployeeRouter.route('/search').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.getAllEmployeesByName); // **********************************************************************************\\n// \\n// Employee Routes Specified by ID\\n// \\n// **********************************************************************************\\n\\nemployeeRouter.route('/:employeeId').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.getEmployeeDetailsById).post(cors.corsWithOptions, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('POST operation not supported on /employees/' + req.params.employeeId);\\n}).put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.updateEmployeeDetailsById).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.deleteAEmployeeById);\\nmodule.exports = employeeRouter;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImVtcGxveWVlUm91dGVyLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwiYm9keVBhcnNlciIsImNoZWNrU2NoZW1hIiwiY29ycyIsImF1dGhlbnRpY2F0ZSIsInZhbGlkYXRpb25SdWxlcyIsImVtcGxveWVlQ29udHJvbGxlciIsImVtcGxveWVlUm91dGVyIiwiUm91dGVyIiwidXNlIiwianNvbiIsInJvdXRlIiwib3B0aW9ucyIsImNvcnNXaXRoT3B0aW9ucyIsInJlcSIsInJlcyIsInNlbmRTdGF0dXMiLCJnZXQiLCJ2ZXJpZnlVc2VyIiwidmVyaWZ5QWRtaW4iLCJnZXRBbGxFbXBsb3llZXMiLCJwb3N0IiwiYWRkRW1wbG95ZWUiLCJwdXQiLCJuZXh0Iiwic3RhdHVzQ29kZSIsImVuZCIsImRlbGV0ZSIsImRlbGV0ZUFsbEVtcGxveWVlcyIsImdldEFsbEVtcGxveWVlc0J5TmFtZSIsImdldEVtcGxveWVlRGV0YWlsc0J5SWQiLCJwYXJhbXMiLCJlbXBsb3llZUlkIiwidXBkYXRlRW1wbG95ZWVEZXRhaWxzQnlJZCIsImRlbGV0ZUFFbXBsb3llZUJ5SWQiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxPQUFPLEdBQUdDLE9BQU8sQ0FBQyxTQUFELENBQXZCOztBQUNBLE1BQU1DLFVBQVUsR0FBR0QsT0FBTyxDQUFDLGFBQUQsQ0FBMUI7O0FBQ0EsTUFBTTtBQUFFRSxFQUFBQTtBQUFGLElBQWtCRixPQUFPLENBQUMsbUJBQUQsQ0FBL0I7O0FBQ0EsTUFBTUcsSUFBSSxHQUFHSCxPQUFPLENBQUMsUUFBRCxDQUFwQjs7QUFDQSxJQUFJSSxZQUFZLEdBQUdKLE9BQU8sQ0FBQyw0QkFBRCxDQUExQjs7QUFDQSxJQUFJSyxlQUFlLEdBQUdMLE9BQU8sQ0FBQywwQkFBRCxDQUE3Qjs7QUFDQSxNQUFNTSxrQkFBa0IsR0FBR04sT0FBTyxDQUFDLG1DQUFELENBQWxDOztBQUVBLE1BQU1PLGNBQWMsR0FBR1IsT0FB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cHJlc3MnKTtcclxuY29uc3QgYm9keVBhcnNlciA9IHJlcXVpcmUoJ2JvZHktcGFyc2VyJyk7XHJcbmNvbnN0IHsgY2hlY2tTY2hlbWEgfSA9IHJlcXVpcmUoJ2V4cHJlc3MtdmFsaWRhdG9yJyk7XHJcbmNvbnN0IGNvcnMgPSByZXF1aXJlKCcuL2NvcnMnKTtcclxudmFyIGF1dGhlbnRpY2F0ZSA9IHJlcXVpcmUoJy4uL21pZGRsZXdhcmUvYXV0aGVudGljYXRlJyk7XHJcbnZhciB2YWxpZGF0aW9uUnVsZXMgPSByZXF1aXJlKCcuLi9taWRkbGV3YXJlL3ZhbGlkYXRpb24nKTtcclxuY29uc3QgZW1wbG95ZWVDb250cm9sbGVyID0gcmVxdWlyZSgnLi4vY29udHJvbGxlcnMvZW1wbG95ZWVDb250cm9sbGVyJyk7XHJcblxyXG5jb25zdCBlbXBsb3llZVJvdXRlciA9IGV4cHJlc3MuUm91dGVyKCk7XHJcblxyXG5lbXBsb3llZVJvdXRlci51c2UoYm9keVBhcnNlci5qc29uKCkpO1xyXG5cclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyBcclxuLy8gICAgICAgICAgICAgIEVtcGxveWVlIFJvdXRlc1xyXG4vLyBcclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuZW1wbG95ZWVSb3V0ZXIucm91dGUoJy8nKVxyXG4gICAgLm9wdGlvbnMoY29ycy5jb3JzV2l0aE9wdGlvbnMsIChyZXEsIHJlcykgPT4geyByZXMuc2VuZFN0YXR1cygyMDApOyB9KVxyXG4gICAgLmdldChjb3JzLmNvcnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCBhdXRoZW50aWNhdGUudmVyaWZ5QWRtaW4sICBlbXBsb3llZUNvbnRyb2xsZXIuZ2V0QWxsRW1wbG95ZWVzKVxyXG4gICAgLnBvc3QoY29ycy5jb3JzV2l0aE9wdGlvbnMsYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgZW1wbG95ZWVDb250cm9sbGVyLmFkZEVtcGxveWVlKVxyXG4gICAgLnB1dChjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgcmVzLmVuZCgnUFVUIG9wZXJhdGlvbiBub3Qgc3VwcG9ydGVkIG9uIC9lbXBsb3llZXMnKTtcclxuICAgIH0pXHJcbiAgICAuZGVsZXRlKGNvcnMuY29yc1dpdGhPcHRpb25zLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeUFkbWluLCAgZW1wbG95ZWVDb250cm9sbGVyLmRlbGV0ZUFsbEVtcGxveWVlcyk7XHJcbmVtcGxveWVlUm91dGVyLnJvdXRlKCcvc2VhcmNoJylcclxuICAgIC5vcHRpb25zKGNvcnMuY29yc1dpdGhPcHRpb25zLCAocmVxLCByZXMpID0+IHsgcmVzLnNlbmRTdGF0dXMoMjAwKTsgfSlcclxuICAgIC5wb3N0KGNvcnMuY29yc1dpdGhPcHRpb25zLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeUFkbWluLCBlbXBsb3llZUNvbnRyb2xsZXIuZ2V0QWxsRW1wbG95ZWVzQnlOYW1lKTtcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuLy8gXHJcbi8vICAgICAgICAgICAgICBFbXBsb3llZSBSb3V0ZXMgU3BlY2lmaWVkIGJ5IElEXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG5lbXBsb3llZVJvdXRlci5yb3V0ZSgnLzplbXBsb3llZUlkJylcclxuICAgIC5vcHRpb25zKGNvcnMuY29yc1dpdGhPcHRpb25zLCAocmVxLCByZXMpID0+IHsgcmVzLnNlbmRTdGF0dXMoMjAwKTsgfSlcclxuICAgIC5nZXQoY29ycy5jb3JzLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeUFkbWluLCAgZW1wbG95ZWVDb250cm9sbGVyLmdldEVtcGxveWVlRGV0YWlsc0J5SWQpXHJcbiAgICAucG9zdChjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgcmVzLmVuZCgnUE9TVCBvcGVyYXRpb24gbm90IHN1cHBvcnRlZCBvbiAvZW1wbG95ZWVzLycgKyByZXEucGFyYW1zLmVtcGxveWVlSWQpO1xyXG4gICAgfSlcclxuICAgIC5wdXQoY29ycy5jb3JzV2l0aE9wdGlvbnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCBhdXRoZW50aWNhdGUudmVyaWZ5QWRtaW4sICBlbXBsb3llZUNvbnRyb2xsZXIudXBkYXRlRW1wbG95ZWVEZXRhaWxzQnlJZClcclxuICAgIC5kZWxldGUoY29ycy5jb3JzV2l0aE9wdGlvbnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCBhdXRoZW50aWNhdGUudmVyaWZ5QWRtaW4sICBlbXBsb3llZUNvbnRyb2xsZXIuZGVsZXRlQUVtcGxveWVlQnlJZCk7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IGVtcGxveWVlUm91dGVyOyJdfQ==\",\"originalCode\":\"const express = require('express');\\r\\nconst bodyParser = require('body-parser');\\r\\nconst { checkSchema } = require('express-validator');\\r\\nconst cors = require('./cors');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\nvar validationRules = require('../middleware/validation');\\r\\nconst employeeController = require('../controllers/employeeController');\\r\\n\\r\\nconst employeeRouter = express.Router();\\r\\n\\r\\nemployeeRouter.use(bodyParser.json());\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Employee Routes\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nemployeeRouter.route('/')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.getAllEmployees)\\r\\n .post(cors.corsWithOptions,authenticate.verifyUser, authenticate.verifyAdmin, employeeController.addEmployee)\\r\\n .put(cors.corsWithOptions, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('PUT operation not supported on /employees');\\r\\n })\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.deleteAllEmployees);\\r\\nemployeeRouter.route('/search')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.getAllEmployeesByName);\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Employee Routes Specified by ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nemployeeRouter.route('/:employeeId')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.getEmployeeDetailsById)\\r\\n .post(cors.corsWithOptions, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('POST operation not supported on /employees/' + req.params.employeeId);\\r\\n })\\r\\n .put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.updateEmployeeDetailsById)\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.deleteAEmployeeById);\\r\\n\\r\\nmodule.exports = employeeRouter;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/3b/employeeRouter_3bb83cd3174a28ed34e0f44c133b9b42.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2496\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\employeeRouter.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":9455,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":9452,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":802,\"endOffset\":842,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1082,\"endOffset\":1185,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1369,\"endOffset\":1409,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1828,\"endOffset\":1868,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":2006,\"endOffset\":2135,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const Employees = require('../models/users');\\n\\nconst utils = require('../utils/utils'); // **********************************************************************************\\n// \\n// Employee Operations \\n// \\n// **********************************************************************************\\n\\n/**\\r\\n * @description get details of the assistants\\r\\n * @param {*} req \\r\\n * @param {*} res \\r\\n * @param {*} next \\r\\n * @returns {array} list of employees\\r\\n */\\n\\n\\nconst getAllEmployees = (req, res, next) => {\\n var query = {\\n \\\"role\\\": \\\"moderater\\\"\\n };\\n Employees.find(query).then(employees => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n employees: employees\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst getAllEmployeesByName = (req, res, next) => {\\n var query = {\\n \\\"role\\\": \\\"moderater\\\"\\n }; // if (req.body.similarTo) {\\n // var searchBy = req.body.similarTo || {}\\n // query = { \\\"role\\\": \\\"moderater\\\", $text: { $search: searchBy } }\\n // }\\n\\n if (req.body.similarTo) {\\n var searchBy = req.body.similarTo || {};\\n query = {\\n \\\"role\\\": \\\"moderater\\\",\\n firstname: {\\n $regex: `${searchBy}`,\\n $options: \\\"i\\\"\\n }\\n };\\n }\\n\\n var sortby = req.body.sortBy || {};\\n Employees.find(query).sort(sortby).then(employees => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n employees: employees\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst addEmployee = async (req, res, next) => {\\n const randomPassword = utils.password_generator(10);\\n var employee = {\\n username: req.body.email,\\n firstname: req.body.firstname,\\n lastname: req.body.lastname,\\n email: req.body.email,\\n role: 'moderater'\\n };\\n\\n try {\\n Employees.register(new Employees(employee), randomPassword, (err, employee) => {\\n if (err) {\\n res.statusCode = 403;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: err.message\\n });\\n } else {\\n employee.save((err, employee) => {\\n if (err) {\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Error while Saving new user.'\\n });\\n }\\n\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n email: employee.email,\\n password: randomPassword\\n });\\n });\\n }\\n });\\n } catch (error) {\\n var err = new Error(\\\"Error while registering new user.\\\");\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: err.message\\n });\\n }\\n};\\n\\nconst deleteAllEmployees = (req, res, next) => {\\n Employees.remove({\\n \\\"role\\\": \\\"moderater\\\"\\n }).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json(resp);\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nexports.getAllEmployees = getAllEmployees;\\nexports.getAllEmployeesByName = getAllEmployeesByName;\\nexports.addEmployee = addEmployee;\\nexports.deleteAllEmployees = deleteAllEmployees; // **********************************************************************************\\n// \\n// Employee Operations Specified by ID\\n// \\n// **********************************************************************************\\n\\nconst getEmployeeDetailsById = (req, res, next) => {\\n Employees.findById(req.params.employeeId).then(employee => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n employee: employee\\n });\\n }, err => {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Could not find employee with given ID'\\n });\\n }).catch(err => next(err));\\n};\\n\\nconst updateEmployeeDetailsById = (req, res, next) => {\\n var employee = {\\n username: req.body.email,\\n firstname: req.body.firstname,\\n lastname: req.body.lastname,\\n email: req.body.email,\\n role: 'moderater'\\n };\\n Employees.findByIdAndUpdate(req.params.employeeId, {\\n $set: employee\\n }, {\\n new: true\\n }).then(employee => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n employee: employee\\n });\\n }, err => next(err)).catch(err => {\\n var err = new Error(\\\"Error while updating.\\\");\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: err.message\\n });\\n });\\n};\\n\\nconst deleteAEmployeeById = (req, res, next) => {\\n Employees.findByIdAndRemove(req.params.employeeId).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json(resp);\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nexports.getEmployeeDetailsById = getEmployeeDetailsById;\\nexports.updateEmployeeDetailsById = updateEmployeeDetailsById;\\nexports.deleteAEmployeeById = deleteAEmployeeById;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImVtcGxveWVlQ29udHJvbGxlci5qcyJdLCJuYW1lcyI6WyJFbXBsb3llZXMiLCJyZXF1aXJlIiwidXRpbHMiLCJnZXRBbGxFbXBsb3llZXMiLCJyZXEiLCJyZXMiLCJuZXh0IiwicXVlcnkiLCJmaW5kIiwidGhlbiIsImVtcGxveWVlcyIsInN0YXR1c0NvZGUiLCJzZXRIZWFkZXIiLCJqc29uIiwic3VjY2VzcyIsImVyciIsImNhdGNoIiwiZ2V0QWxsRW1wbG95ZWVzQnlOYW1lIiwiYm9keSIsInNpbWlsYXJUbyIsInNlYXJjaEJ5IiwiZmlyc3RuYW1lIiwiJHJlZ2V4IiwiJG9wdGlvbnMiLCJzb3J0YnkiLCJzb3J0QnkiLCJzb3J0IiwiYWRkRW1wbG95ZWUiLCJyYW5kb21QYXNzd29yZCIsInBhc3N3b3JkX2dlbmVyYXRvciIsImVtcGxveWVlIiwidXNlcm5hbWUiLCJlbWFpbCIsImxhc3RuYW1lIiwicm9sZSIsInJlZ2lzdGVyIiwibWVzc2FnZSIsInNhdmUiLCJwYXNzd29yZCIsImVycm9yIiwiRXJyb3IiLCJkZWxldGVBbGxFbXBsb3llZXMiLCJyZW1vdmUiLCJyZXNwIiwiZXhwb3J0cyIsImdldEVtcGxveWVlRGV0YWlsc0J5SWQiLCJmaW5kQnlJZCIsInBhcmFtcyIsImVtcGxveWVlSWQiLCJ1cGRhdGVFbXBsb3llZURldGFpbHNCeUlkIiwiZmluZEJ5SWRBbmRVcGRhdGUiLCIkc2V0IiwibmV3IiwiZGVsZXRlQUVtcGxveWVlQnlJZCIsImZpbmRCeUlkQW5kUmVtb3ZlIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxTQUFTLEdBQUdDLE9BQU8sQ0FBQyxpQkFBRCxDQUF6Qjs7QUFDQSxNQUFNQyxLQUFLLEdBQUdELE9BQU8sQ0FBQyxnQkFBRCxDQUFyQixDLENBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0EsTUFBTUUsZUFBZSxHQUFHLENBQUNDLEdBQUQsRUFBTUMsR0FBTixF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SSxDQUFDUyxHQUFELENBTHBCLEVBTUtDLEtBTkwsQ0FNWUQsR0FBRCxJQUFTVCxJQUFJLENBQUNTLEdBQUQsQ0FOeEI7QUFPSCxDQVJEOztBQVVBNkIsT0FBTyxDQUFDQyxzQkFBUixHQUFpQ0Esc0JBQWpDO0FBQ0FELE9BQU8sQ0FBQ0sseUJBQVIsR0FBb0NBLHlCQUFwQztBQUNBTCxPQUFPLENBQUNTLG1CQUFSLEdBQThCQSxtQkFBOUIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBFbXBsb3llZXMgPSByZXF1aXJlKCcuLi9tb2RlbHMvdXNlcnMnKTtcclxuY29uc3QgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscy91dGlscycpO1xyXG5cclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyBcclxuLy8gICAgICAgICAgICAgIEVtcGxveWVlIE9wZXJhdGlvbnMgXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG4vKipcclxuICogQGRlc2NyaXB0aW9uIGdldCBkZXRhaWxzIG9mIHRoZSBhc3Npc3RhbnRzXHJcbiAqIEBwYXJhbSB7Kn0gcmVxIFxyXG4gKiBAcGFyYW0geyp9IHJlcyBcclxuICogQHBhcmFtIHsqfSBuZXh0IFxyXG4gKiBAcmV0dXJucyB7YXJyYXl9IGxpc3Qgb2YgZW1wbG95ZWVzXHJcbiAqL1xyXG5jb25zdCBnZXRBbGxFbXBsb3llZXMgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHZhciBxdWVyeSA9IHsgXCJyb2xlXCI6IFwibW9kZXJhdGVyXCIgfTtcclxuICAgIEVtcGxveWVlcy5maW5kKHF1ZXJ5KVxyXG4gICAgICAgIC50aGVuKChlbXBsb3llZXMpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgZW1wbG95ZWVzOiBlbXBsb3llZXMgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpO1xyXG59XHJcblxyXG5jb25zdCBnZXRBbGxFbXBsb3llZXNCeU5hbWUgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHZhciBxdWVyeSA9IHsgXCJyb2xlXCI6IFwibW9kZXJhdGVyXCIgfTtcclxuICAgIC8vIGlmIChyZXEuYm9keS5zaW1pbGFyVG8pIHtcclxuICAgIC8vICAgICB2YXIgc2VhcmNoQnkgPSByZXEuYm9keS5zaW1pbGFyVG8gfHwge31cclxuICAgIC8vICAgICBxdWVyeSA9IHsgXCJyb2xlXCI6IFwibW9kZXJhdGVyXCIsICR0ZXh0OiB7ICRzZWFyY2g6IHNlYXJjaEJ5IH0gfVxyXG4gICAgLy8gfVxyXG4gICAgaWYgKHJlcS5ib2R5LnNpbWlsYXJUbykge1xyXG4gICAgICAgIHZhciBzZWFyY2hCeSA9IHJlcS5ib2R5LnNpbWlsYXJUbyB8fCB7fVxyXG4gICAgICAgIHF1ZXJ5ID0geyBcInJvbGVcIjogXCJtb2RlcmF0ZXJcIiwgZmlyc3RuYW1lOiB7ICRyZWdleDogYCR7c2VhcmNoQnl9YCwgJG9wdGlvbnM6IFwiaVwiIH0gfVxyXG4gICAgfVxyXG4gICAgdmFyIHNvcnRieSA9IHJlcS5ib2R5LnNvcnRCeSB8fCB7fTtcclxuICAgIEVtcGxveWVlcy5maW5kKHF1ZXJ5KS5zb3J0KHNvcnRieSlcclxuICAgICAgICAudGhlbigoZW1wbG95ZWVzKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIGVtcGxveWVlczogZW1wbG95ZWVzIH0pO1xyXG4gICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuY29uc3QgYWRkRW1wbG95ZWUgPSBhc3luYyAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIGNvbnN0IHJhbmRvbVBhc3N3b3JkID0gdXRpbHMucGFzc3dvcmRfZ2VuZXJhdG9yKDEwKTtcclxuICAgIHZhciBlbXBsb3llZSA9IHtcclxuICAgICAgICB1c2VybmFtZTogcmVxLmJvZHkuZW1haWwsXHJcbiAgICAgICAgZmlyc3RuYW1lOiByZXEuYm9keS5maXJzdG5hbWUsXHJcbiAgICAgICAgbGFzdG5hbWU6IHJlcS5ib2R5Lmxhc3RuYW1lLFxyXG4gICAgICAgIGVtYWlsOiByZXEuYm9keS5lbWFpbCxcclxuICAgICAgICByb2xlOiAnbW9kZXJhdGVyJ1xyXG4gICAgfVxyXG4gICAgdHJ5IHtcclxuICAgICAgICBFbXBsb3llZXMucmVnaXN0ZXIobmV3IEVtcGxveWVlcyhlbXBsb3llZSksXHJcbiAgICAgICAgICAgIHJhbmRvbVBhc3N3b3JkLCAoZXJyLCBlbXBsb3llZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNDAzO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogZXJyLm1lc3NhZ2UgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBlbXBsb3llZS5zYXZlKChlcnIsIGVtcGxveWVlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNTAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IGZhbHNlLCBtZXNzYWdlOiAnRXJyb3Igd2hpbGUgU2F2aW5nIG5ldyB1c2VyLicgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgZW1haWw6IGVtcGxveWVlLmVtYWlsLCBwYXNzd29yZDogcmFuZG9tUGFzc3dvcmQgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICB2YXIgZXJyID0gbmV3IEVycm9yKFwiRXJyb3Igd2hpbGUgcmVnaXN0ZXJpbmcgbmV3IHVzZXIuXCIpO1xyXG4gICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNTAwO1xyXG4gICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogZXJyLm1lc3NhZ2UgfSk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmNvbnN0IGRlbGV0ZUFsbEVtcGxveWVlcyA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgRW1wbG95ZWVzLnJlbW92ZSh7IFwicm9sZVwiOiBcIm1vZGVyYXRlclwiIH0pXHJcbiAgICAgICAgLnRoZW4oKHJlc3ApID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHJlc3ApO1xyXG4gICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuZXhwb3J0cy5nZXRBbGxFbXBsb3llZXMgPSBnZXRBbGxFbXBsb3llZXM7XHJcbmV4cG9ydHMuZ2V0QWxsRW1wbG95ZWVzQnlOYW1lID0gZ2V0QWxsRW1wbG95ZWVzQnlOYW1lO1xyXG5leHBvcnRzLmFkZEVtcGxveWVlID0gYWRkRW1wbG95ZWU7XHJcbmV4cG9ydHMuZGVsZXRlQWxsRW1wbG95ZWVzID0gZGVsZXRlQWxsRW1wbG95ZWVzO1xyXG5cclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyBcclxuLy8gICAgICAgICAgICAgIEVtcGxveWVlIE9wZXJhdGlvbnMgU3BlY2lmaWVkIGJ5IElEXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG5jb25zdCBnZXRFbXBsb3llZURldGFpbHNCeUlkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICBFbXBsb3llZXMuZmluZEJ5SWQocmVxLnBhcmFtcy5lbXBsb3llZUlkKVxyXG4gICAgICAgIC50aGVuKChlbXBsb3llZSkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCBlbXBsb3llZTogZW1wbG95ZWUgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwNDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogJ0NvdWxkIG5vdCBmaW5kIGVtcGxveWVlIHdpdGggZ2l2ZW4gSUQnIH0pO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IG5leHQoZXJyKSk7XHJcbn1cclxuXHJcbmNvbnN0IHVwZGF0ZUVtcGxveWVlRGV0YWlsc0J5SWQgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHZhciBlbXBsb3llZSA9IHtcclxuICAgICAgICB1c2VybmFtZTogcmVxLmJvZHkuZW1haWwsXHJcbiAgICAgICAgZmlyc3RuYW1lOiByZXEuYm9keS5maXJzdG5hbWUsXHJcbiAgICAgICAgbGFzdG5hbWU6IHJlcS5ib2R5Lmxhc3RuYW1lLFxyXG4gICAgICAgIGVtYWlsOiByZXEuYm9keS5lbWFpbCxcclxuICAgICAgICByb2xlOiAnbW9kZXJhdGVyJ1xyXG4gICAgfVxyXG4gICAgRW1wbG95ZWVzLmZpbmRCeUlkQW5kVXBkYXRlKHJlcS5wYXJhbXMuZW1wbG95ZWVJZCwge1xyXG4gICAgICAgICRzZXQ6IGVtcGxveWVlXHJcbiAgICB9LCB7IG5ldzogdHJ1ZSB9KVxyXG4gICAgICAgIC50aGVuKChlbXBsb3llZSkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCBlbXBsb3llZTogZW1wbG95ZWUgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoXCJFcnJvciB3aGlsZSB1cGRhdGluZy5cIik7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNTAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IGZhbHNlLCBtZXNzYWdlOiBlcnIubWVzc2FnZSB9KTtcclxuICAgICAgICB9KTtcclxufVxyXG5cclxuY29uc3QgZGVsZXRlQUVtcGxveWVlQnlJZCA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgRW1wbG95ZWVzLmZpbmRCeUlkQW5kUmVtb3ZlKHJlcS5wYXJhbXMuZW1wbG95ZWVJZClcclxuICAgICAgICAudGhlbigocmVzcCkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24ocmVzcCk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpO1xyXG59XHJcblxyXG5leHBvcnRzLmdldEVtcGxveWVlRGV0YWlsc0J5SWQgPSBnZXRFbXBsb3llZURldGFpbHNCeUlkO1xyXG5leHBvcnRzLnVwZGF0ZUVtcGxveWVlRGV0YWlsc0J5SWQgPSB1cGRhdGVFbXBsb3llZURldGFpbHNCeUlkO1xyXG5leHBvcnRzLmRlbGV0ZUFFbXBsb3llZUJ5SWQgPSBkZWxldGVBRW1wbG95ZWVCeUlkOyJdfQ==\",\"originalCode\":\"const Employees = require('../models/users');\\r\\nconst utils = require('../utils/utils');\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Employee Operations \\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\n/**\\r\\n * @description get details of the assistants\\r\\n * @param {*} req \\r\\n * @param {*} res \\r\\n * @param {*} next \\r\\n * @returns {array} list of employees\\r\\n */\\r\\nconst getAllEmployees = (req, res, next) => {\\r\\n var query = { \\\"role\\\": \\\"moderater\\\" };\\r\\n Employees.find(query)\\r\\n .then((employees) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, employees: employees });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst getAllEmployeesByName = (req, res, next) => {\\r\\n var query = { \\\"role\\\": \\\"moderater\\\" };\\r\\n // if (req.body.similarTo) {\\r\\n // var searchBy = req.body.similarTo || {}\\r\\n // query = { \\\"role\\\": \\\"moderater\\\", $text: { $search: searchBy } }\\r\\n // }\\r\\n if (req.body.similarTo) {\\r\\n var searchBy = req.body.similarTo || {}\\r\\n query = { \\\"role\\\": \\\"moderater\\\", firstname: { $regex: `${searchBy}`, $options: \\\"i\\\" } }\\r\\n }\\r\\n var sortby = req.body.sortBy || {};\\r\\n Employees.find(query).sort(sortby)\\r\\n .then((employees) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, employees: employees });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst addEmployee = async (req, res, next) => {\\r\\n const randomPassword = utils.password_generator(10);\\r\\n var employee = {\\r\\n username: req.body.email,\\r\\n firstname: req.body.firstname,\\r\\n lastname: req.body.lastname,\\r\\n email: req.body.email,\\r\\n role: 'moderater'\\r\\n }\\r\\n try {\\r\\n Employees.register(new Employees(employee),\\r\\n randomPassword, (err, employee) => {\\r\\n if (err) {\\r\\n res.statusCode = 403;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: err.message });\\r\\n }\\r\\n else {\\r\\n employee.save((err, employee) => {\\r\\n if (err) {\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Error while Saving new user.' });\\r\\n }\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, email: employee.email, password: randomPassword });\\r\\n });\\r\\n }\\r\\n });\\r\\n } catch (error) {\\r\\n var err = new Error(\\\"Error while registering new user.\\\");\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: err.message });\\r\\n }\\r\\n}\\r\\n\\r\\nconst deleteAllEmployees = (req, res, next) => {\\r\\n Employees.remove({ \\\"role\\\": \\\"moderater\\\" })\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json(resp);\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nexports.getAllEmployees = getAllEmployees;\\r\\nexports.getAllEmployeesByName = getAllEmployeesByName;\\r\\nexports.addEmployee = addEmployee;\\r\\nexports.deleteAllEmployees = deleteAllEmployees;\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Employee Operations Specified by ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nconst getEmployeeDetailsById = (req, res, next) => {\\r\\n Employees.findById(req.params.employeeId)\\r\\n .then((employee) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, employee: employee });\\r\\n }, (err) => {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Could not find employee with given ID' });\\r\\n })\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst updateEmployeeDetailsById = (req, res, next) => {\\r\\n var employee = {\\r\\n username: req.body.email,\\r\\n firstname: req.body.firstname,\\r\\n lastname: req.body.lastname,\\r\\n email: req.body.email,\\r\\n role: 'moderater'\\r\\n }\\r\\n Employees.findByIdAndUpdate(req.params.employeeId, {\\r\\n $set: employee\\r\\n }, { new: true })\\r\\n .then((employee) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, employee: employee });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => {\\r\\n var err = new Error(\\\"Error while updating.\\\");\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: err.message });\\r\\n });\\r\\n}\\r\\n\\r\\nconst deleteAEmployeeById = (req, res, next) => {\\r\\n Employees.findByIdAndRemove(req.params.employeeId)\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json(resp);\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nexports.getEmployeeDetailsById = getEmployeeDetailsById;\\r\\nexports.updateEmployeeDetailsById = updateEmployeeDetailsById;\\r\\nexports.deleteAEmployeeById = deleteAEmployeeById;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/6e/employeeController_6ee2f5b4e4eea073cb5625109f63cb82.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2497\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\employeeController.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":22470,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":22467,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"getAllEmployees\",\"ranges\":[{\"startOffset\":577,\"endOffset\":889,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getAllEmployeesByName\",\"ranges\":[{\"startOffset\":922,\"endOffset\":1648,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"addEmployee\",\"ranges\":[{\"startOffset\":1671,\"endOffset\":3020,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"deleteAllEmployees\",\"ranges\":[{\"startOffset\":3050,\"endOffset\":3287,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getEmployeeDetailsById\",\"ranges\":[{\"startOffset\":3736,\"endOffset\":4197,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"updateEmployeeDetailsById\",\"ranges\":[{\"startOffset\":4234,\"endOffset\":4944,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"deleteAEmployeeById\",\"ranges\":[{\"startOffset\":4975,\"endOffset\":5215,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const multer = require('multer');\\n\\nconst {\\n v4: uuidv4\\n} = require('uuid');\\n\\nlet path = require('path');\\n\\nconst password_generator = len => {\\n var length = len ? len : 10;\\n var string = \\\"abcdefghijklmnopqrstuvwxyz\\\"; //to upper \\n\\n var numeric = '0123456789';\\n var punctuation = '!@#$%^&*()_+~`|}{[]\\\\:;?><,./-=';\\n var password = \\\"\\\";\\n var character = \\\"\\\";\\n var crunch = true;\\n\\n while (password.length < length) {\\n entity1 = Math.ceil(string.length * Math.random() * Math.random());\\n entity2 = Math.ceil(numeric.length * Math.random() * Math.random());\\n entity3 = Math.ceil(punctuation.length * Math.random() * Math.random());\\n hold = string.charAt(entity1);\\n hold = password.length % 2 == 0 ? hold.toUpperCase() : hold;\\n character += hold;\\n character += numeric.charAt(entity2);\\n character += punctuation.charAt(entity3);\\n password = character;\\n }\\n\\n password = password.split('').sort(function () {\\n return 0.5 - Math.random();\\n }).join('');\\n return password.substr(0, length);\\n};\\n\\nexports.password_generator = password_generator;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInV0aWxzLmpzIl0sIm5hbWVzIjpbIm11bHRlciIsInJlcXVpcmUiLCJ2NCIsInV1aWR2NCIsInBhdGgiLCJwYXNzd29yZF9nZW5lcmF0b3IiLCJsZW4iLCJsZW5ndGgiLCJzdHJpbmciLCJudW1lcmljIiwicHVuY3R1YXRpb24iLCJwYXNzd29yZCIsImNoYXJhY3RlciIsImNydW5jaCIsImVudGl0eTEiLCJNYXRoIiwiY2VpbCIsInJhbmRvbSIsImVudGl0eTIiLCJlbnRpdHkzIiwiaG9sZCIsImNoYXJBdCIsInRvVXBwZXJDYXNlIiwic3BsaXQiLCJzb3J0Iiwiam9pbiIsInN1YnN0ciIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE1BQU0sR0FBR0MsT0FBTyxDQUFDLFFBQUQsQ0FBdEI7O0FBQ0EsTUFBTTtBQUFFQyxFQUFBQSxFQUFFLEVBQUVDO0FBQU4sSUFBaUJGLE9BQU8sQ0FBQyxNQUFELENBQTlCOztBQUNBLElBQUlHLElBQUksR0FBR0gsT0FBTyxDQUFDLE1BQUQsQ0FBbEI7O0FBRUEsTUFBTUksa0JBQWtCLEdBQUlDLEdBQUQsSUFBUztBQUNoQyxNQUFJQyxNQUFNLEdBQUlELEdBQUQsR0FBU0EsR0FBVCxHQUFpQixFQUE5QjtBQUNBLE1BQUlFLE1BQU0sR0FBRyw0QkFBYixDQUZnQyxDQUVXOztBQUMzQyxNQUFJQyxPQUFPLEdBQUcsWUFBZDtBQUNBLE1BQUlDLFdBQVcsR0FBRyxnQ0FBbEI7QUFDQSxNQUFJQyxRQUFRLEdBQUcsRUFBZjtBQUNBLE1BQUlDLFNBQVMsR0FBRyxFQUFoQjtBQUNBLE1BQUlDLE1BQU0sR0FBRyxJQUFiOztBQUNBLFNBQU9GLFFBQVEsQ0FBQ0osTUFBVCxHQUFrQkEsTUFBekIsRUFBaUM7QUFDN0JPLElBQUFBLE9BQU8sR0FBR0MsSUFBSSxDQUFDQyxJQUFMLENBQVVSLE1BQU0sQ0FBQ0QsTUFBUCxHQUFnQlEsSUFBSSxDQUFDRSxNQUFMLEVBQWhCLEdBQWdDRixJQUFJLENBQUNFLE1BQUwsRUFBMUMsQ0FBVjtBQUNBQyxJQUFBQSxPQUFPLEdBQUdILElBQUksQ0FBQ0MsSUFBTCxDQUFVUCxPQUFPLENBQUNGLE1BQVIsR0FBaUJRLElBQUksQ0FBQ0UsTUFBTCxFQUFqQixHQUFpQ0YsSUFBSSxDQUFDRSxNQUFMLEVBQTNDLENBQVY7QUFDQUUsSUFBQUEsT0FBTyxHQUFHSixJQUFJLENBQUNDLElBQUwsQ0FBVU4sV0FBVyxDQUFDSCxNQUFaLEdBQXFCUSxJQUFJLENBQUNFLE1BQUwsRUFBckIsR0FBcUNGLElBQUksQ0FBQ0UsTUFBTCxFQUEvQyxDQUFWO0FBQ0FHLElBQUFBLElBQUksR0FBR1osTUFBTSxDQUFDYSxNQUFQLENBQWNQLE9BQWQsQ0FBUDtBQUNBTSxJQUFBQSxJQUFJLEdBQUlULFFBQVEsQ0FBQ0osTUFBVCxHQUFrQixDQUFsQixJQUF1QixDQUF4QixHQUE4QmEsSUFBSSxDQUFDRSxXQUFMLEVBQTlCLEdBQXFERixJQUE1RDtBQUNBUixJQUFBQSxTQUFTLElBQUlRLElBQWI7QUFDQVIsSUFBQUEsU0FBUyxJQUFJSCxPQUFPLENBQUNZLE1BQVIsQ0FBZUgsT0FBZixDQUFiO0FBQ0FOLElBQUFBLFNBQVMsSUFBSUYsV0FBVyxDQUFDVyxNQUFaLENBQW1CRixPQUFuQixDQUFiO0FBQ0FSLElBQUFBLFFBQVEsR0FBR0MsU0FBWDtBQUNIOztBQUNERCxFQUFBQSxRQUFRLEdBQUdBLFFBQVEsQ0FBQ1ksS0FBVCxDQUFlLEVBQWYsRUFBbUJDLElBQW5CLENBQXdCLFlBQVk7QUFBRSxXQUFPLE1BQU1ULElBQUksQ0FBQ0UsTUFBTCxFQUFiO0FBQTRCLEdBQWxFLEVBQW9FUSxJQUFwRSxDQUF5RSxFQUF6RSxDQUFYO0FBQ0EsU0FBT2QsUUFBUSxDQUFDZSxNQUFULENBQWdCLENBQWhCLEVBQW1CbkIsTUFBbkIsQ0FBUDtBQUNILENBckJEOztBQXVCQW9CLE9BQU8sQ0FBQ3RCLGtCQUFSLEdBQTZCQSxrQkFBN0IiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBtdWx0ZXIgPSByZXF1aXJlKCdtdWx0ZXInKTtcclxuY29uc3QgeyB2NDogdXVpZHY0IH0gPSByZXF1aXJlKCd1dWlkJyk7XHJcbmxldCBwYXRoID0gcmVxdWlyZSgncGF0aCcpO1xyXG5cclxuY29uc3QgcGFzc3dvcmRfZ2VuZXJhdG9yID0gKGxlbikgPT4ge1xyXG4gICAgdmFyIGxlbmd0aCA9IChsZW4pID8gKGxlbikgOiAoMTApO1xyXG4gICAgdmFyIHN0cmluZyA9IFwiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpcIjsgLy90byB1cHBlciBcclxuICAgIHZhciBudW1lcmljID0gJzAxMjM0NTY3ODknO1xyXG4gICAgdmFyIHB1bmN0dWF0aW9uID0gJyFAIyQlXiYqKClfK35gfH17W11cXDo7Pz48LC4vLT0nO1xyXG4gICAgdmFyIHBhc3N3b3JkID0gXCJcIjtcclxuICAgIHZhciBjaGFyYWN0ZXIgPSBcIlwiO1xyXG4gICAgdmFyIGNydW5jaCA9IHRydWU7XHJcbiAgICB3aGlsZSAocGFzc3dvcmQubGVuZ3RoIDwgbGVuZ3RoKSB7XHJcbiAgICAgICAgZW50aXR5MSA9IE1hdGguY2VpbChzdHJpbmcubGVuZ3RoICogTWF0aC5yYW5kb20oKSAqIE1hdGgucmFuZG9tKCkpO1xyXG4gICAgICAgIGVudGl0eTIgPSBNYXRoLmNlaWwobnVtZXJpYy5sZW5ndGggKiBNYXRoLnJhbmRvbSgpICogTWF0aC5yYW5kb20oKSk7XHJcbiAgICAgICAgZW50aXR5MyA9IE1hdGguY2VpbChwdW5jdHVhdGlvbi5sZW5ndGggKiBNYXRoLnJhbmRvbSgpICogTWF0aC5yYW5kb20oKSk7XHJcbiAgICAgICAgaG9sZCA9IHN0cmluZy5jaGFyQXQoZW50aXR5MSk7XHJcbiAgICAgICAgaG9sZCA9IChwYXNzd29yZC5sZW5ndGggJSAyID09IDApID8gKGhvbGQudG9VcHBlckNhc2UoKSkgOiAoaG9sZCk7XHJcbiAgICAgICAgY2hhcmFjdGVyICs9IGhvbGQ7XHJcbiAgICAgICAgY2hhcmFjdGVyICs9IG51bWVyaWMuY2hhckF0KGVudGl0eTIpO1xyXG4gICAgICAgIGNoYXJhY3RlciArPSBwdW5jdHVhdGlvbi5jaGFyQXQoZW50aXR5Myk7XHJcbiAgICAgICAgcGFzc3dvcmQgPSBjaGFyYWN0ZXI7XHJcbiAgICB9XHJcbiAgICBwYXNzd29yZCA9IHBhc3N3b3JkLnNwbGl0KCcnKS5zb3J0KGZ1bmN0aW9uICgpIHsgcmV0dXJuIDAuNSAtIE1hdGgucmFuZG9tKCkgfSkuam9pbignJyk7XHJcbiAgICByZXR1cm4gcGFzc3dvcmQuc3Vic3RyKDAsIGxlbmd0aCk7XHJcbn1cclxuXHJcbmV4cG9ydHMucGFzc3dvcmRfZ2VuZXJhdG9yID0gcGFzc3dvcmRfZ2VuZXJhdG9yOyJdfQ==\",\"originalCode\":\"const multer = require('multer');\\r\\nconst { v4: uuidv4 } = require('uuid');\\r\\nlet path = require('path');\\r\\n\\r\\nconst password_generator = (len) => {\\r\\n var length = (len) ? (len) : (10);\\r\\n var string = \\\"abcdefghijklmnopqrstuvwxyz\\\"; //to upper \\r\\n var numeric = '0123456789';\\r\\n var punctuation = '!@#$%^&*()_+~`|}{[]\\\\:;?><,./-=';\\r\\n var password = \\\"\\\";\\r\\n var character = \\\"\\\";\\r\\n var crunch = true;\\r\\n while (password.length < length) {\\r\\n entity1 = Math.ceil(string.length * Math.random() * Math.random());\\r\\n entity2 = Math.ceil(numeric.length * Math.random() * Math.random());\\r\\n entity3 = Math.ceil(punctuation.length * Math.random() * Math.random());\\r\\n hold = string.charAt(entity1);\\r\\n hold = (password.length % 2 == 0) ? (hold.toUpperCase()) : (hold);\\r\\n character += hold;\\r\\n character += numeric.charAt(entity2);\\r\\n character += punctuation.charAt(entity3);\\r\\n password = character;\\r\\n }\\r\\n password = password.split('').sort(function () { return 0.5 - Math.random() }).join('');\\r\\n return password.substr(0, length);\\r\\n}\\r\\n\\r\\nexports.password_generator = password_generator;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/12/utils_12501e91058955e05c348a4b2ab3e6a2.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2498\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\utils\\\\utils.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":5216,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":5213,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"password_generator\",\"ranges\":[{\"startOffset\":223,\"endOffset\":1107,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const express = require('express');\\n\\nconst bodyParser = require('body-parser');\\n\\nconst cors = require('./cors');\\n\\nconst {\\n checkSchema\\n} = require('express-validator');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nvar validationRules = require('../middleware/validation');\\n\\nconst placeController = require('../controllers/placeController');\\n\\nconst visitingPlaceRouter = express.Router();\\nvisitingPlaceRouter.use(bodyParser.json()); // **********************************************************************************\\n// Visiting Place Routes\\n// **********************************************************************************\\n\\nvisitingPlaceRouter.route('/').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, placeController.getAllVisitingPlaces).post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.addVisitingPlace).put(cors.corsWithOptions, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('PUT operation not supported on /visitingPlaces');\\n}).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.deleteAllVisitingPlaces);\\nvisitingPlaceRouter.route('/search').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).post(cors.corsWithOptions, authenticate.verifyUser, placeController.getAllVisitingPlacesByName); // **********************************************************************************\\n// \\n// Visiting Place Routes On ID\\n// \\n// **********************************************************************************\\n\\nvisitingPlaceRouter.route('/:visitingPlaceId').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, placeController.getVisitingPlaceDetailsById).post(cors.corsWithOptions, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('POST operation not supported on /visitingPlaces/' + req.params.visitingPlaceId);\\n}).put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.updateVisitingPlaceDetailsById).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.deleteAVisitingPlaceById);\\nmodule.exports = visitingPlaceRouter;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBsYWNlUm91dGVyLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwiYm9keVBhcnNlciIsImNvcnMiLCJjaGVja1NjaGVtYSIsImF1dGhlbnRpY2F0ZSIsInZhbGlkYXRpb25SdWxlcyIsInBsYWNlQ29udHJvbGxlciIsInZpc2l0aW5nUGxhY2VSb3V0ZXIiLCJSb3V0ZXIiLCJ1c2UiLCJqc29uIiwicm91dGUiLCJvcHRpb25zIiwiY29yc1dpdGhPcHRpb25zIiwicmVxIiwicmVzIiwic2VuZFN0YXR1cyIsImdldCIsInZlcmlmeVVzZXIiLCJnZXRBbGxWaXNpdGluZ1BsYWNlcyIsInBvc3QiLCJ2ZXJpZnlBZG1pbiIsImFkZFZpc2l0aW5nUGxhY2UiLCJwdXQiLCJuZXh0Iiwic3RhdHVzQ29kZSIsImVuZCIsImRlbGV0ZSIsImRlbGV0ZUFsbFZpc2l0aW5nUGxhY2VzIiwiZ2V0QWxsVmlzaXRpbmdQbGFjZXNCeU5hbWUiLCJnZXRWaXNpdGluZ1BsYWNlRGV0YWlsc0J5SWQiLCJwYXJhbXMiLCJ2aXNpdGluZ1BsYWNlSWQiLCJ1cGRhdGVWaXNpdGluZ1BsYWNlRGV0YWlsc0J5SWQiLCJkZWxldGVBVmlzaXRpbmdQbGFjZUJ5SWQiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxPQUFPLEdBQUdDLE9BQU8sQ0FBQyxTQUFELENBQXZCOztBQUNBLE1BQU1DLFVBQVUsR0FBR0QsT0FBTyxDQUFDLGFBQUQsQ0FBMUI7O0FBRUEsTUFBTUUsSUFBSSxHQUFHRixPQUFPLENBQUMsUUFBRCxDQUFwQjs7QUFDQSxNQUFNO0FBQUVHLEVBQUFBO0FBQUYsSUFBa0JILE9BQU8sQ0FBQyxtQkFBRCxDQUEvQjs7QUFDQSxJQUFJSSxZQUFZLEdBQUdKLE9BQU8sQ0FBQyw0QkFBRCxDQUExQjs7QUFDQSxJQUFJSyxlQUFlLEdBQUdMLE9BQU8sQ0FBQywwQkFBRCxDQUE3Qjs7QUFDQSxNQUFNTSxlQUFlLEdBQUdOLE9BQU8sQ0FBQyxnQ0FBRCxDQUEvQjs7QUFFQSxNQUFNTyxtQkFBbUIsR0FBR1IsT0FBTyxDQUFDUyxNQUFSLEVBQTVCO0FBRUFELG1CQUFtQixDQUFDRSxHQUFwQixDQUF3QlIsVUFBVSxDQUFDUyxJQUFYLEVBQXhCLEUsQ0FFQTtBQUVBO0FBRUE7O0FBRUFILG1CQUFtQixDQUFDSSxLQUFwQixDQUEwQixHQUExQixFQUNLQyxPQURMLENBQ2FWLElBQUksQ0FBQ1csZUFEbEIsRUFDbUMsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEtBQWM7QUFBRUEsRUFBQUEsR0FBRyxDQUFDQyxVQUFKLENBQWUsR0FBZjtBQUFzQixDQUR6RSxFQUVLQyxHQUZMLENBRVNmLElBQUksQ0FBQ0EsSUFGZCxFQUVvQkUsWUFBWSxDQUFDYyxVQUZqQyxFQUU2Q1osZUFBZSxDQUFDYSxvQkFGN0QsRUFHS0MsSUFITCxDQUdVbEIsSUFBSSxDQUFDVyxlQUhmLEVBR2dDVCxZQUFZLENBQUNjLFVBSDdDLEVBR3lEZCxZQUFZLENBQUNpQixXQUh0RSxFQUdtRmYsZUFBZSxDQUFDZ0IsZ0JBSG5HLEVBSUtDLEdBSkwsQ0FJU3JCLElBQUksQ0FBQ1csZUFKZCxFQUkrQixDQUFDQyxHQUFELEVBQU1DLEdBQU4sRUFBV1MsSUFBWCxLQUFvQjtBQUMzQ1QsRUFBQUEsR0FBRyxDQUFDVSxVQUFKLEdBQWlCLEdBQWpCO0FBQ0FWLEVBQUFBLEdBQUcsQ0FBQ1csR0FBSixDQUFRLGdEQUFSO0FBQ0gsQ0FQTCxFQVFLQyxNQVJMLENBUVl6QixJQUFJLENBQUNXLGVBUmpCLEVBUWtDVCxZQUFZLENBQUNjLFVBUi9DLEVBUTJEZCxZQUFZLENBQUNpQixXQVJ4RSxFQVFxRmYsZUFBZSxDQUFDc0IsdUJBUnJHO0FBU0FyQixtQkFBbUIsQ0FBQ0ksS0FBcEIsQ0FBMEIsU0FBMUIsRUFDS0MsT0FETCxDQUNhVixJQUFJLENBQUNXLGVBRGxCLEVBQ21DLENBQUNDLEdBQUQsRUFBTUMsR0FBTixLQUFjO0FBQUVBLEVBQUFBLEdBQUcsQ0FBQ0MsVUFBSixDQUFlLEdBQWY7QUFBc0IsQ0FEekUsRUFFS0ksSUFGTCxDQUVVbEIsSUFBSSxDQUFDVyxlQUZmLEVBRWdDVCxZQUFZLENBQUNjLFVBRjdDLEVBRXlEWixlQUFlLENBQUN1QiwwQkFGekUsRSxDQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUF0QixtQkFBbUIsQ0FBQ0ksS0FBcEIsQ0FBMEIsbUJBQTFCLEVBQ0tDLE9BREwsQ0FDYVYsSUFBSSxDQUFDVyxlQURsQixFQUNtQyxDQUFDQyxHQUFELEVBQU1DLEdBQU4sS0FBYztBQUFFQSxFQUFBQSxHQUFHLENBQUNDLFVBQUosQ0FBZSxHQUFmO0FBQXNCLENBRHpFLEVBRUtDLEdBRkwsQ0FFU2YsSUFBSSxDQUFDQSxJQUZkLEVBRW9CRSxZQUFZLENBQUNjLFVBRmpDLEVBRTZDWixlQUFlLENBQUN3QiwyQkFGN0QsRUFHS1YsSUFITCxDQUdVbEIsSUFBSSxDQUFDVyxlQUhmLEVBR2dDLENBQUNDLEdBQUQsRUFBTUMsR0FBTixFQUFXUyxJQUFYLEtBQW9CO0FBQzVDVCxFQUFBQSxHQUFHLENBQUNVLFVBQUosR0FBaUIsR0FBakI7QUFDQVYsRUFBQUEsR0FBRyxDQUFDVyxHQUFKLENBQVEscURBQXFEWixHQUFHLENBQUNpQixNQUFKLENBQVdDLGVBQXhFO0FBQ0gsQ0FOTCxFQU9LVCxHQVBMLENBT1NyQixJQUFJLENBQUNXLGVBUGQsRUFPK0JULFlBQVksQ0FBQ2MsVUFQNUMsRUFPd0RkLFlBQVksQ0FBQ2lCLFdBUHJFLEVBT2tGZixlQUFlLENBQUMyQiw4QkFQbEcsRUFRS04sTUFSTCxDQVFZekIsSUFBSSxDQUFDVyxlQVJqQixFQVFrQ1QsWUFBWSxDQUFDYyxVQVIvQyxFQVEyRGQsWUFBWSxDQUFDaUIsV0FSeEUsRUFRcUZmLGVBQWUsQ0FBQzRCLHdCQVJyRztBQVVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUI3QixtQkFBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBleHByZXNzID0gcmVxdWlyZSgnZXhwcmVzcycpO1xyXG5jb25zdCBib2R5UGFyc2VyID0gcmVxdWlyZSgnYm9keS1wYXJzZXInKTtcclxuXHJcbmNvbnN0IGNvcnMgPSByZXF1aXJlKCcuL2NvcnMnKTtcclxuY29uc3QgeyBjaGVja1NjaGVtYSB9ID0gcmVxdWlyZSgnZXhwcmVzcy12YWxpZGF0b3InKTtcclxudmFyIGF1dGhlbnRpY2F0ZSA9IHJlcXVpcmUoJy4uL21pZGRsZXdhcmUvYXV0aGVudGljYXRlJyk7XHJcbnZhciB2YWxpZGF0aW9uUnVsZXMgPSByZXF1aXJlKCcuLi9taWRkbGV3YXJlL3ZhbGlkYXRpb24nKTtcclxuY29uc3QgcGxhY2VDb250cm9sbGVyID0gcmVxdWlyZSgnLi4vY29udHJvbGxlcnMvcGxhY2VDb250cm9sbGVyJyk7XHJcblxyXG5jb25zdCB2aXNpdGluZ1BsYWNlUm91dGVyID0gZXhwcmVzcy5Sb3V0ZXIoKTtcclxuXHJcbnZpc2l0aW5nUGxhY2VSb3V0ZXIudXNlKGJvZHlQYXJzZXIuanNvbigpKTtcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbi8vICAgICAgICAgICAgICBWaXNpdGluZyBQbGFjZSBSb3V0ZXNcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbnZpc2l0aW5nUGxhY2VSb3V0ZXIucm91dGUoJy8nKVxyXG4gICAgLm9wdGlvbnMoY29ycy5jb3JzV2l0aE9wdGlvbnMsIChyZXEsIHJlcykgPT4geyByZXMuc2VuZFN0YXR1cygyMDApOyB9KVxyXG4gICAgLmdldChjb3JzLmNvcnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCBwbGFjZUNvbnRyb2xsZXIuZ2V0QWxsVmlzaXRpbmdQbGFjZXMpXHJcbiAgICAucG9zdChjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgcGxhY2VDb250cm9sbGVyLmFkZFZpc2l0aW5nUGxhY2UpXHJcbiAgICAucHV0KGNvcnMuY29yc1dpdGhPcHRpb25zLCAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwMztcclxuICAgICAgICByZXMuZW5kKCdQVVQgb3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQgb24gL3Zpc2l0aW5nUGxhY2VzJyk7XHJcbiAgICB9KVxyXG4gICAgLmRlbGV0ZShjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgcGxhY2VDb250cm9sbGVyLmRlbGV0ZUFsbFZpc2l0aW5nUGxhY2VzKTtcclxudmlzaXRpbmdQbGFjZVJvdXRlci5yb3V0ZSgnL3NlYXJjaCcpXHJcbiAgICAub3B0aW9ucyhjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcbiAgICAucG9zdChjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIHBsYWNlQ29udHJvbGxlci5nZXRBbGxWaXNpdGluZ1BsYWNlc0J5TmFtZSk7XHJcblxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbi8vIFxyXG4vLyAgICAgICAgICAgICAgVmlzaXRpbmcgUGxhY2UgUm91dGVzIE9uIElEXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG52aXNpdGluZ1BsYWNlUm91dGVyLnJvdXRlKCcvOnZpc2l0aW5nUGxhY2VJZCcpXHJcbiAgICAub3B0aW9ucyhjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcbiAgICAuZ2V0KGNvcnMuY29ycywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIHBsYWNlQ29udHJvbGxlci5nZXRWaXNpdGluZ1BsYWNlRGV0YWlsc0J5SWQpXHJcbiAgICAucG9zdChjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgcmVzLmVuZCgnUE9TVCBvcGVyYXRpb24gbm90IHN1cHBvcnRlZCBvbiAvdmlzaXRpbmdQbGFjZXMvJyArIHJlcS5wYXJhbXMudmlzaXRpbmdQbGFjZUlkKTtcclxuICAgIH0pXHJcbiAgICAucHV0KGNvcnMuY29yc1dpdGhPcHRpb25zLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeUFkbWluLCBwbGFjZUNvbnRyb2xsZXIudXBkYXRlVmlzaXRpbmdQbGFjZURldGFpbHNCeUlkKVxyXG4gICAgLmRlbGV0ZShjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgcGxhY2VDb250cm9sbGVyLmRlbGV0ZUFWaXNpdGluZ1BsYWNlQnlJZCk7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IHZpc2l0aW5nUGxhY2VSb3V0ZXI7XHJcbiJdfQ==\",\"originalCode\":\"const express = require('express');\\r\\nconst bodyParser = require('body-parser');\\r\\n\\r\\nconst cors = require('./cors');\\r\\nconst { checkSchema } = require('express-validator');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\nvar validationRules = require('../middleware/validation');\\r\\nconst placeController = require('../controllers/placeController');\\r\\n\\r\\nconst visitingPlaceRouter = express.Router();\\r\\n\\r\\nvisitingPlaceRouter.use(bodyParser.json());\\r\\n\\r\\n// **********************************************************************************\\r\\n\\r\\n// Visiting Place Routes\\r\\n\\r\\n// **********************************************************************************\\r\\n\\r\\nvisitingPlaceRouter.route('/')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, placeController.getAllVisitingPlaces)\\r\\n .post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.addVisitingPlace)\\r\\n .put(cors.corsWithOptions, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('PUT operation not supported on /visitingPlaces');\\r\\n })\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.deleteAllVisitingPlaces);\\r\\nvisitingPlaceRouter.route('/search')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .post(cors.corsWithOptions, authenticate.verifyUser, placeController.getAllVisitingPlacesByName);\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Visiting Place Routes On ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nvisitingPlaceRouter.route('/:visitingPlaceId')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, placeController.getVisitingPlaceDetailsById)\\r\\n .post(cors.corsWithOptions, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('POST operation not supported on /visitingPlaces/' + req.params.visitingPlaceId);\\r\\n })\\r\\n .put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.updateVisitingPlaceDetailsById)\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.deleteAVisitingPlaceById);\\r\\n\\r\\nmodule.exports = visitingPlaceRouter;\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/9d/placeRouter_9d9aca2c41f2c1b6283bdacdd67537b2.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2539\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\placeRouter.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":9353,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":9350,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":809,\"endOffset\":849,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1067,\"endOffset\":1175,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1366,\"endOffset\":1406,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1807,\"endOffset\":1847,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1961,\"endOffset\":2100,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const VisitingPlaces = require('../models/visitingPlaces'); // **********************************************************************************\\n// \\n// Visiting Place Operations \\n// \\n// **********************************************************************************\\n\\n\\nconst getAllVisitingPlaces = (req, res, next) => {\\n var query = {};\\n VisitingPlaces.find(query, 'name description distance location timeToReach image travellingMethods').then(visitingPlaces => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n visitingPlaces: visitingPlaces\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst getAllVisitingPlacesByName = (req, res, next) => {\\n var query = {};\\n\\n if (req.body.similarTo) {\\n query = {\\n name: {\\n $regex: `${req.body.similarTo}`,\\n $options: \\\"i\\\"\\n }\\n };\\n }\\n\\n VisitingPlaces.find(query, 'name description distance location timeToReach image travellingMethods').then(visitingPlaces => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n visitingPlaces: visitingPlaces\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst addVisitingPlace = (req, res, next) => {\\n var imagesArray = []; // files = req.files;\\n // files.forEach(file => {\\n // imagesArray.push(file.filename);\\n // });\\n\\n var place = {\\n name: req.body.name,\\n description: req.body.description,\\n location: {\\n coordinates: req.body.location.coordinates\\n },\\n distance: req.body.distance,\\n timeToReach: req.body.timeToReach,\\n images: imagesArray,\\n travellingMethods: req.body.methods\\n };\\n VisitingPlaces.create(place).then(visitingPlace => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n visitingPlace: visitingPlace\\n });\\n }, err => {\\n res.statusCode = 403;\\n res.setHeader('Content-Type', 'application/json');\\n const msg = err.driver ? \\\"Duplicate Key\\\" : err._message;\\n res.json({\\n success: false,\\n message: msg\\n });\\n }).catch(err => next(err));\\n};\\n\\nconst deleteAllVisitingPlaces = (req, res, next) => {\\n VisitingPlaces.remove({}).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json(resp);\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nexports.getAllVisitingPlaces = getAllVisitingPlaces;\\nexports.getAllVisitingPlacesByName = getAllVisitingPlacesByName;\\nexports.addVisitingPlace = addVisitingPlace;\\nexports.deleteAllVisitingPlaces = deleteAllVisitingPlaces; // **********************************************************************************\\n// \\n// Visiting Place Operations Specified by ID\\n// \\n// **********************************************************************************\\n\\nconst getVisitingPlaceDetailsById = (req, res, next) => {\\n VisitingPlaces.findById(req.params.visitingPlaceId).then(visitingPlace => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n visitingPlace: visitingPlace\\n });\\n }, err => {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: \\\"Could not find the place\\\"\\n });\\n }).catch(err => next(err));\\n};\\n\\nconst updateVisitingPlaceDetailsById = (req, res, next) => {\\n VisitingPlaces.findByIdAndUpdate(req.params.visitingPlaceId, {\\n $set: req.body\\n }, {\\n new: true\\n }).then(visitingPlace => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n visitingPlace: visitingPlace\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst deleteAVisitingPlaceById = (req, res, next) => {\\n VisitingPlaces.findByIdAndRemove(req.params.visitingPlaceId).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n response: resp\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nexports.getVisitingPlaceDetailsById = getVisitingPlaceDetailsById;\\nexports.updateVisitingPlaceDetailsById = updateVisitingPlaceDetailsById;\\nexports.deleteAVisitingPlaceById = deleteAVisitingPlaceById;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBsYWNlQ29udHJvbGxlci5qcyJdLCJuYW1lcyI6WyJWaXNpdGluZ1BsYWNlcyIsInJlcXVpcmUiLCJnZXRBbGxWaXNpdGluZ1BsYWNlcyIsInJlcSIsInJlcyIsIm5leHQiLCJxdWVyeSIsImZpbmQiLCJ0aGVuIiwidmlzaXRpbmdQbGFjZXMiLCJzdGF0dXNDb2RlIiwic2V0SGVhZGVyIiwianNvbiIsInN1Y2Nlc3MiLCJlcnIiLCJjYXRjaCIsImdldEFsbFZpc2l0aW5nUGxhY2VzQnlOYW1lIiwiYm9keSIsInNpbWlsYXJUbyIsIm5hbWUiLCIkcmVnZXgiLCIkb3B0aW9ucyIsImFkZFZpc2l0aW5nUGxhY2UiLCJpbWFnZXNBcnJheSIsInBsYWNlIiwiZGVzY3JpcHRpb24iLCJsb2NhdGlvbiIsImNvb3JkaW5hdGVzIiwiZGlzdGFuY2UiLCJ0aW1lVG9SZWFjaCIsImltYWdlcyIsInRyYXZlbGxpbmdNZXRob2RzIiwibWV0aG9kcyIsImNyZWF0ZSIsInZpc2l0aW5nUGxhY2UiLCJtc2ciLCJkcml2ZXIiLCJfbWVzc2FnZSIsIm1lc3NhZ2UiLCJkZWxldGVBbGxWaXNpdGluZ1BsYWNlcyIsInJlbW92ZSIsInJlc3AiLCJleHBvcnRzIiwiZ2V0VmlzaXRpbmdQbGFjZURldGFpbHNCeUlkIiwiZmluZEJ5SWQiLCJwYXJhbXMiLCJ2aXNpdGluZ1BsYWNlSWQiLCJ1cGRhdGVWaXNpdGluZ1BsYWNlRGV0YWlsc0J5SWQiLCJmaW5kQnlJZEFuZFVwZGF0ZSIsIiRzZXQiLCJuZXciLCJkZWxldGVBVmlzaXRpbmdQbGFjZUJ5SWQiLCJmaW5kQnlJZEFuZFJlbW92ZSIsInJlc3BvbnNlIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxjQUFjLEdBQUdDLE9BQU8sQ0FBQywwQkFBRCxDQUE5QixDLENBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUEsTUFBTUMsb0JBQW9CLEdBQUcsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDN0MsTUFB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QztBQUNBTCxPQUFPLENBQUNTLHdCQUFSLEdBQW1DQSx3QkFBbkMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBWaXNpdGluZ1BsYWNlcyA9IHJlcXVpcmUoJy4uL21vZGVscy92aXNpdGluZ1BsYWNlcycpO1xyXG5cclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyBcclxuLy8gICAgICAgICAgICAgIFZpc2l0aW5nIFBsYWNlIE9wZXJhdGlvbnMgXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG5jb25zdCBnZXRBbGxWaXNpdGluZ1BsYWNlcyA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgdmFyIHF1ZXJ5ID0ge307XHJcbiAgICBWaXNpdGluZ1BsYWNlcy5maW5kKHF1ZXJ5LCAnbmFtZSBkZXNjcmlwdGlvbiBkaXN0YW5jZSBsb2NhdGlvbiB0aW1lVG9SZWFjaCBpbWFnZSB0cmF2ZWxsaW5nTWV0aG9kcycpXHJcbiAgICAgICAgLnRoZW4oKHZpc2l0aW5nUGxhY2VzKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHZpc2l0aW5nUGxhY2VzOiB2aXNpdGluZ1BsYWNlcyB9KTtcclxuICAgICAgICB9LCAoZXJyKSA9PiBuZXh0KGVycikpXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IG5leHQoZXJyKSk7XHJcbn1cclxuXHJcbmNvbnN0IGdldEFsbFZpc2l0aW5nUGxhY2VzQnlOYW1lID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICB2YXIgcXVlcnkgPSB7fTtcclxuICAgIGlmIChyZXEuYm9keS5zaW1pbGFyVG8pIHtcclxuICAgICAgICBxdWVyeSA9IHsgbmFtZTogeyAkcmVnZXg6IGAke3JlcS5ib2R5LnNpbWlsYXJUb31gLCAkb3B0aW9uczogXCJpXCIgfSB9XHJcbiAgICB9XHJcbiAgICBWaXNpdGluZ1BsYWNlcy5maW5kKHF1ZXJ5LCAnbmFtZSBkZXNjcmlwdGlvbiBkaXN0YW5jZSBsb2NhdGlvbiB0aW1lVG9SZWFjaCBpbWFnZSB0cmF2ZWxsaW5nTWV0aG9kcycpXHJcbiAgICAgICAgLnRoZW4oKHZpc2l0aW5nUGxhY2VzKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHZpc2l0aW5nUGxhY2VzOiB2aXNpdGluZ1BsYWNlcyB9KTtcclxuICAgICAgICB9LCAoZXJyKSA9PiBuZXh0KGVycikpXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IG5leHQoZXJyKSk7XHJcbn1cclxuXHJcbmNvbnN0IGFkZFZpc2l0aW5nUGxhY2UgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHZhciBpbWFnZXNBcnJheSA9IFtdO1xyXG4gICAgLy8gZmlsZXMgPSByZXEuZmlsZXM7XHJcbiAgICAvLyBmaWxlcy5mb3JFYWNoKGZpbGUgPT4ge1xyXG4gICAgLy8gICAgIGltYWdlc0FycmF5LnB1c2goZmlsZS5maWxlbmFtZSk7XHJcbiAgICAvLyB9KTtcclxuICAgIHZhciBwbGFjZSA9XHJcbiAgICB7XHJcbiAgICAgICAgbmFtZTogcmVxLmJvZHkubmFtZSxcclxuICAgICAgICBkZXNjcmlwdGlvbjogcmVxLmJvZHkuZGVzY3JpcHRpb24sXHJcbiAgICAgICAgbG9jYXRpb246IHtcclxuICAgICAgICAgICAgY29vcmRpbmF0ZXM6IHJlcS5ib2R5LmxvY2F0aW9uLmNvb3JkaW5hdGVzXHJcbiAgICAgICAgfSxcclxuICAgICAgICBkaXN0YW5jZTogcmVxLmJvZHkuZGlzdGFuY2UsXHJcbiAgICAgICAgdGltZVRvUmVhY2g6IHJlcS5ib2R5LnRpbWVUb1JlYWNoLFxyXG4gICAgICAgIGltYWdlczogaW1hZ2VzQXJyYXksXHJcbiAgICAgICAgdHJhdmVsbGluZ01ldGhvZHM6IHJlcS5ib2R5Lm1ldGhvZHNcclxuICAgIH1cclxuICAgIFZpc2l0aW5nUGxhY2VzLmNyZWF0ZShwbGFjZSlcclxuICAgICAgICAudGhlbigodmlzaXRpbmdQbGFjZSkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCB2aXNpdGluZ1BsYWNlOiB2aXNpdGluZ1BsYWNlIH0pO1xyXG4gICAgICAgIH0sIChlcnIpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIGNvbnN0IG1zZyA9IGVyci5kcml2ZXIgPyBcIkR1cGxpY2F0ZSBLZXlcIiA6IGVyci5fbWVzc2FnZTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogbXNnIH0pO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IG5leHQoZXJyKSk7XHJcbn1cclxuXHJcbmNvbnN0IGRlbGV0ZUFsbFZpc2l0aW5nUGxhY2VzID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICBWaXNpdGluZ1BsYWNlcy5yZW1vdmUoe30pXHJcbiAgICAgICAgLnRoZW4oKHJlc3ApID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHJlc3ApO1xyXG4gICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuZXhwb3J0cy5nZXRBbGxWaXNpdGluZ1BsYWNlcyA9IGdldEFsbFZpc2l0aW5nUGxhY2VzO1xyXG5leHBvcnRzLmdldEFsbFZpc2l0aW5nUGxhY2VzQnlOYW1lID0gZ2V0QWxsVmlzaXRpbmdQbGFjZXNCeU5hbWU7XHJcbmV4cG9ydHMuYWRkVmlzaXRpbmdQbGFjZSA9IGFkZFZpc2l0aW5nUGxhY2U7XHJcbmV4cG9ydHMuZGVsZXRlQWxsVmlzaXRpbmdQbGFjZXMgPSBkZWxldGVBbGxWaXNpdGluZ1BsYWNlcztcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuLy8gXHJcbi8vICAgICAgICAgICAgICBWaXNpdGluZyBQbGFjZSBPcGVyYXRpb25zIFNwZWNpZmllZCBieSBJRFxyXG4vLyBcclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuY29uc3QgZ2V0VmlzaXRpbmdQbGFjZURldGFpbHNCeUlkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICBWaXNpdGluZ1BsYWNlcy5maW5kQnlJZChyZXEucGFyYW1zLnZpc2l0aW5nUGxhY2VJZClcclxuICAgICAgICAudGhlbigodmlzaXRpbmdQbGFjZSkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCB2aXNpdGluZ1BsYWNlOiB2aXNpdGluZ1BsYWNlIH0pO1xyXG4gICAgICAgIH0sIChlcnIpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDQ7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogZmFsc2UsIG1lc3NhZ2U6IFwiQ291bGQgbm90IGZpbmQgdGhlIHBsYWNlXCIgfSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuY29uc3QgdXBkYXRlVmlzaXRpbmdQbGFjZURldGFpbHNCeUlkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICBWaXNpdGluZ1BsYWNlcy5maW5kQnlJZEFuZFVwZGF0ZShyZXEucGFyYW1zLnZpc2l0aW5nUGxhY2VJZCwge1xyXG4gICAgICAgICRzZXQ6IHJlcS5ib2R5XHJcbiAgICB9LCB7IG5ldzogdHJ1ZSB9KVxyXG4gICAgICAgIC50aGVuKCh2aXNpdGluZ1BsYWNlKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHZpc2l0aW5nUGxhY2U6IHZpc2l0aW5nUGxhY2UgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpO1xyXG59XHJcblxyXG5jb25zdCBkZWxldGVBVmlzaXRpbmdQbGFjZUJ5SWQgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIFZpc2l0aW5nUGxhY2VzLmZpbmRCeUlkQW5kUmVtb3ZlKHJlcS5wYXJhbXMudmlzaXRpbmdQbGFjZUlkKVxyXG4gICAgICAgIC50aGVuKChyZXNwKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHJlc3BvbnNlOiByZXNwIH0pO1xyXG4gICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuZXhwb3J0cy5nZXRWaXNpdGluZ1BsYWNlRGV0YWlsc0J5SWQgPSBnZXRWaXNpdGluZ1BsYWNlRGV0YWlsc0J5SWQ7XHJcbmV4cG9ydHMudXBkYXRlVmlzaXRpbmdQbGFjZURldGFpbHNCeUlkID0gdXBkYXRlVmlzaXRpbmdQbGFjZURldGFpbHNCeUlkO1xyXG5leHBvcnRzLmRlbGV0ZUFWaXNpdGluZ1BsYWNlQnlJZCA9IGRlbGV0ZUFWaXNpdGluZ1BsYWNlQnlJZDsiXX0=\",\"originalCode\":\"const VisitingPlaces = require('../models/visitingPlaces');\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Visiting Place Operations \\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nconst getAllVisitingPlaces = (req, res, next) => {\\r\\n var query = {};\\r\\n VisitingPlaces.find(query, 'name description distance location timeToReach image travellingMethods')\\r\\n .then((visitingPlaces) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, visitingPlaces: visitingPlaces });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst getAllVisitingPlacesByName = (req, res, next) => {\\r\\n var query = {};\\r\\n if (req.body.similarTo) {\\r\\n query = { name: { $regex: `${req.body.similarTo}`, $options: \\\"i\\\" } }\\r\\n }\\r\\n VisitingPlaces.find(query, 'name description distance location timeToReach image travellingMethods')\\r\\n .then((visitingPlaces) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, visitingPlaces: visitingPlaces });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst addVisitingPlace = (req, res, next) => {\\r\\n var imagesArray = [];\\r\\n // files = req.files;\\r\\n // files.forEach(file => {\\r\\n // imagesArray.push(file.filename);\\r\\n // });\\r\\n var place =\\r\\n {\\r\\n name: req.body.name,\\r\\n description: req.body.description,\\r\\n location: {\\r\\n coordinates: req.body.location.coordinates\\r\\n },\\r\\n distance: req.body.distance,\\r\\n timeToReach: req.body.timeToReach,\\r\\n images: imagesArray,\\r\\n travellingMethods: req.body.methods\\r\\n }\\r\\n VisitingPlaces.create(place)\\r\\n .then((visitingPlace) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, visitingPlace: visitingPlace });\\r\\n }, (err) => {\\r\\n res.statusCode = 403;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n const msg = err.driver ? \\\"Duplicate Key\\\" : err._message;\\r\\n res.json({ success: false, message: msg });\\r\\n })\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst deleteAllVisitingPlaces = (req, res, next) => {\\r\\n VisitingPlaces.remove({})\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json(resp);\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nexports.getAllVisitingPlaces = getAllVisitingPlaces;\\r\\nexports.getAllVisitingPlacesByName = getAllVisitingPlacesByName;\\r\\nexports.addVisitingPlace = addVisitingPlace;\\r\\nexports.deleteAllVisitingPlaces = deleteAllVisitingPlaces;\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Visiting Place Operations Specified by ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nconst getVisitingPlaceDetailsById = (req, res, next) => {\\r\\n VisitingPlaces.findById(req.params.visitingPlaceId)\\r\\n .then((visitingPlace) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, visitingPlace: visitingPlace });\\r\\n }, (err) => {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: \\\"Could not find the place\\\" });\\r\\n })\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst updateVisitingPlaceDetailsById = (req, res, next) => {\\r\\n VisitingPlaces.findByIdAndUpdate(req.params.visitingPlaceId, {\\r\\n $set: req.body\\r\\n }, { new: true })\\r\\n .then((visitingPlace) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, visitingPlace: visitingPlace });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst deleteAVisitingPlaceById = (req, res, next) => {\\r\\n VisitingPlaces.findByIdAndRemove(req.params.visitingPlaceId)\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, response: resp });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nexports.getVisitingPlaceDetailsById = getVisitingPlaceDetailsById;\\r\\nexports.updateVisitingPlaceDetailsById = updateVisitingPlaceDetailsById;\\r\\nexports.deleteAVisitingPlaceById = deleteAVisitingPlaceById;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/ee/placeController_ee3a20e34d4d356553af723b6f7f6a6e.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2540\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\placeController.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":18578,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":18575,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"getAllVisitingPlaces\",\"ranges\":[{\"startOffset\":403,\"endOffset\":782,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getAllVisitingPlacesByName\",\"ranges\":[{\"startOffset\":820,\"endOffset\":1339,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"addVisitingPlace\",\"ranges\":[{\"startOffset\":1367,\"endOffset\":2276,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"deleteAllVisitingPlaces\",\"ranges\":[{\"startOffset\":2311,\"endOffset\":2526,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getVisitingPlaceDetailsById\",\"ranges\":[{\"startOffset\":3026,\"endOffset\":3499,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"updateVisitingPlaceDetailsById\",\"ranges\":[{\"startOffset\":3541,\"endOffset\":3906,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"deleteAVisitingPlaceById\",\"ranges\":[{\"startOffset\":3942,\"endOffset\":4237,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const express = require('express');\\n\\nconst bodyParser = require('body-parser');\\n\\nconst cors = require('./cors');\\n\\nconst {\\n checkSchema\\n} = require('express-validator');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nvar validationRules = require('../middleware/validation');\\n\\nconst scheduleController = require('../controllers/scheduleController');\\n\\nconst scheduleRouter = express.Router();\\nscheduleRouter.use(bodyParser.json()); // **********************************************************************************\\n// \\n// Schedule Routes\\n// \\n// **********************************************************************************\\n\\nscheduleRouter.route('/').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, scheduleController.getAllSchedules).post(cors.corsWithOptions, authenticate.verifyUser, scheduleController.addSchedule).put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('PUT operation not supported on /schedules');\\n}).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, scheduleController.deleteAllSchedules); // **********************************************************************************\\n// \\n// Schedule Routes On ID\\n// \\n// **********************************************************************************\\n\\nscheduleRouter.route('/:scheduleId').options(cors.corsWithOptions, authenticate.verifyUser, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, scheduleController.getScheduleDetailsById).post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('POST operation not supported on /schedules/' + req.params.scheduleId);\\n}).put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, scheduleController.updateScheduleById).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, scheduleController.deleteScheduleById);\\nscheduleRouter.route('/user/:userId').options(cors.corsWithOptions, authenticate.verifyUser, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, scheduleController.getAllSchedulesForAUser);\\nmodule.exports = scheduleRouter;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNjaGVkdWxlUm91dGVyLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwiYm9keVBhcnNlciIsImNvcnMiLCJjaGVja1NjaGVtYSIsImF1dGhlbnRpY2F0ZSIsInZhbGlkYXRpb25SdWxlcyIsInNjaGVkdWxlQ29udHJvbGxlciIsInNjaGVkdWxlUm91dGVyIiwiUm91dGVyIiwidXNlIiwianNvbiIsInJvdXRlIiwib3B0aW9ucyIsImNvcnNXaXRoT3B0aW9ucyIsInJlcSIsInJlcyIsInNlbmRTdGF0dXMiLCJnZXQiLCJ2ZXJpZnlVc2VyIiwiZ2V0QWxsU2NoZWR1bGVzIiwicG9zdCIsImFkZFNjaGVkdWxlIiwicHV0IiwidmVyaWZ5TW9kZXJhdGVyIiwibmV4dCIsInN0YXR1c0NvZGUiLCJlbmQiLCJkZWxldGUiLCJ2ZXJpZnlBZG1pbiIsImRlbGV0ZUFsbFNjaGVkdWxlcyIsImdldFNjaGVkdWxlRGV0YWlsc0J5SWQiLCJwYXJhbXMiLCJzY2hlZHVsZUlkIiwidXBkYXRlU2NoZWR1bGVCeUlkIiwiZGVsZXRlU2NoZWR1bGVCeUlkIiwiZ2V0QWxsU2NoZWR1bGVzRm9yQVVzZXIiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxPQUFPLEdBQUdDLE9BQU8sQ0FBQyxTQUFELENBQXZCOztBQUNBLE1BQU1DLFVBQVUsR0FBR0QsT0FBTyxDQUFDLGFBQUQsQ0FBMUI7O0FBRUEsTUFBTUUsSUFBSSxHQUFHRixPQUFPLENBQUMsUUFBRCxDQUFwQjs7QUFDQSxNQUFNO0FBQUVHLEVBQUFBO0FBQUYsSUFBa0JILE9BQU8sQ0FBQyxtQkFBRCxDQUEvQjs7QUFDQSxJQUFJSSxZQUFZLEdBQUdKLE9BQU8sQ0FBQyw0QkFBRCxDQUExQjs7QUFDQSxJQUFJSyxlQUFlLEdBQUdMLE9BQU8sQ0FBQywwQkFBRCxDQUE3Qjs7QUFDQSxNQUFNTSxrQkFBa0IsR0FBR04sT0FBTyxDQUFDLG1DQUFELENBQWxDOztBQUVBLE1BQU1PLGNB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T0FBUCxHQUFpQjlCLGNBQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZXhwcmVzcyA9IHJlcXVpcmUoJ2V4cHJlc3MnKTtcclxuY29uc3QgYm9keVBhcnNlciA9IHJlcXVpcmUoJ2JvZHktcGFyc2VyJyk7XHJcblxyXG5jb25zdCBjb3JzID0gcmVxdWlyZSgnLi9jb3JzJyk7XHJcbmNvbnN0IHsgY2hlY2tTY2hlbWEgfSA9IHJlcXVpcmUoJ2V4cHJlc3MtdmFsaWRhdG9yJyk7XHJcbnZhciBhdXRoZW50aWNhdGUgPSByZXF1aXJlKCcuLi9taWRkbGV3YXJlL2F1dGhlbnRpY2F0ZScpO1xyXG52YXIgdmFsaWRhdGlvblJ1bGVzID0gcmVxdWlyZSgnLi4vbWlkZGxld2FyZS92YWxpZGF0aW9uJyk7XHJcbmNvbnN0IHNjaGVkdWxlQ29udHJvbGxlciA9IHJlcXVpcmUoJy4uL2NvbnRyb2xsZXJzL3NjaGVkdWxlQ29udHJvbGxlcicpXHJcblxyXG5jb25zdCBzY2hlZHVsZVJvdXRlciA9IGV4cHJlc3MuUm91dGVyKCk7XHJcblxyXG5zY2hlZHVsZVJvdXRlci51c2UoYm9keVBhcnNlci5qc29uKCkpO1xyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbi8vIFxyXG4vLyAgICAgICAgICAgICAgU2NoZWR1bGUgUm91dGVzXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG5zY2hlZHVsZVJvdXRlci5yb3V0ZSgnLycpXHJcbiAgICAub3B0aW9ucyhjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcbiAgICAuZ2V0KGNvcnMuY29ycywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsICBzY2hlZHVsZUNvbnRyb2xsZXIuZ2V0QWxsU2NoZWR1bGVzKVxyXG4gICAgLnBvc3QoY29ycy5jb3JzV2l0aE9wdGlvbnMsYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsICBzY2hlZHVsZUNvbnRyb2xsZXIuYWRkU2NoZWR1bGUpXHJcbiAgICAucHV0KGNvcnMuY29yc1dpdGhPcHRpb25zLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeU1vZGVyYXRlciwgKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgcmVzLmVuZCgnUFVUIG9wZXJhdGlvbiBub3Qgc3VwcG9ydGVkIG9uIC9zY2hlZHVsZXMnKTtcclxuICAgIH0pXHJcbiAgICAuZGVsZXRlKGNvcnMuY29yc1dpdGhPcHRpb25zLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeUFkbWluLCBzY2hlZHVsZUNvbnRyb2xsZXIuZGVsZXRlQWxsU2NoZWR1bGVzKTtcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuLy8gXHJcbi8vICAgICAgICAgICAgICBTY2hlZHVsZSBSb3V0ZXMgT24gSURcclxuLy8gXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbnNjaGVkdWxlUm91dGVyLnJvdXRlKCcvOnNjaGVkdWxlSWQnKVxyXG4gICAgLm9wdGlvbnMoY29ycy5jb3JzV2l0aE9wdGlvbnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCAocmVxLCByZXMpID0+IHsgcmVzLnNlbmRTdGF0dXMoMjAwKTsgfSlcclxuICAgIC5nZXQoY29ycy5jb3JzLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgc2NoZWR1bGVDb250cm9sbGVyLmdldFNjaGVkdWxlRGV0YWlsc0J5SWQpXHJcbiAgICAucG9zdChjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgcmVzLmVuZCgnUE9TVCBvcGVyYXRpb24gbm90IHN1cHBvcnRlZCBvbiAvc2NoZWR1bGVzLycgKyByZXEucGFyYW1zLnNjaGVkdWxlSWQpO1xyXG4gICAgfSlcclxuICAgIC5wdXQoY29ycy5jb3JzV2l0aE9wdGlvbnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCBhdXRoZW50aWNhdGUudmVyaWZ5TW9kZXJhdGVyLCBzY2hlZHVsZUNvbnRyb2xsZXIudXBkYXRlU2NoZWR1bGVCeUlkKVxyXG4gICAgLmRlbGV0ZShjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgc2NoZWR1bGVDb250cm9sbGVyLmRlbGV0ZVNjaGVkdWxlQnlJZCk7XHJcblxyXG5zY2hlZHVsZVJvdXRlci5yb3V0ZSgnL3VzZXIvOnVzZXJJZCcpXHJcbiAgICAub3B0aW9ucyhjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIChyZXEsIHJlcykgPT4geyByZXMuc2VuZFN0YXR1cygyMDApOyB9KVxyXG4gICAgLmdldChjb3JzLmNvcnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCAgc2NoZWR1bGVDb250cm9sbGVyLmdldEFsbFNjaGVkdWxlc0ZvckFVc2VyKTtcclxuXHJcbm1vZHVsZS5leHBvcnRzID0gc2NoZWR1bGVSb3V0ZXI7Il19\",\"originalCode\":\"const express = require('express');\\r\\nconst bodyParser = require('body-parser');\\r\\n\\r\\nconst cors = require('./cors');\\r\\nconst { checkSchema } = require('express-validator');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\nvar validationRules = require('../middleware/validation');\\r\\nconst scheduleController = require('../controllers/scheduleController')\\r\\n\\r\\nconst scheduleRouter = express.Router();\\r\\n\\r\\nscheduleRouter.use(bodyParser.json());\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Schedule Routes\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nscheduleRouter.route('/')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, scheduleController.getAllSchedules)\\r\\n .post(cors.corsWithOptions,authenticate.verifyUser, scheduleController.addSchedule)\\r\\n .put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('PUT operation not supported on /schedules');\\r\\n })\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, scheduleController.deleteAllSchedules);\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Schedule Routes On ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nscheduleRouter.route('/:scheduleId')\\r\\n .options(cors.corsWithOptions, authenticate.verifyUser, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, scheduleController.getScheduleDetailsById)\\r\\n .post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('POST operation not supported on /schedules/' + req.params.scheduleId);\\r\\n })\\r\\n .put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, scheduleController.updateScheduleById)\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, scheduleController.deleteScheduleById);\\r\\n\\r\\nscheduleRouter.route('/user/:userId')\\r\\n .options(cors.corsWithOptions, authenticate.verifyUser, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, scheduleController.getAllSchedulesForAUser);\\r\\n\\r\\nmodule.exports = scheduleRouter;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/9b/scheduleRouter_9b57edc7078385d142c957dea9d9e0be.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2541\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\scheduleRouter.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":9621,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":9618,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":802,\"endOffset\":842,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1085,\"endOffset\":1188,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1621,\"endOffset\":1661,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1824,\"endOffset\":1953,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":2288,\"endOffset\":2328,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const Schedules = require('../models/schedules'); // **********************************************************************************\\n// \\n// Schedule Operations \\n// \\n// **********************************************************************************\\n\\n\\nconst getAllSchedules = (req, res, next) => {\\n Schedules.find(req.query).populate(\\\"place\\\").populate(\\\"user\\\").then(schedules => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n schedules: schedules\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst getAllSchedulesForAUser = (req, res, next) => {\\n var query = {\\n \\\"user\\\": String(req.params.userId)\\n };\\n Schedules.find(query).populate(\\\"place\\\").then(schedules => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n schedules: schedules\\n });\\n }, err => {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n const msg = err._message;\\n res.json({\\n success: false,\\n message: msg\\n });\\n }).catch(err => {\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: \\\"Failed to get data\\\"\\n });\\n });\\n};\\n\\nconst addSchedule = (req, res, next) => {\\n var schedule = {\\n user: req.body.user,\\n place: req.body.place,\\n date: req.body.date,\\n state: \\\"new\\\",\\n travellingMethod: req.body.travellingMethod\\n };\\n Schedules.create(schedule).then(schedule => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n schedule: schedule\\n });\\n }, err => {\\n res.statusCode = 403;\\n res.setHeader('Content-Type', 'application/json');\\n const msg = err._message;\\n res.json({\\n success: false,\\n message: msg\\n });\\n }).catch(err => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: \\\"Failed to add a schedule\\\"\\n });\\n });\\n};\\n\\nconst deleteAllSchedules = (req, res, next) => {\\n Schedules.remove({}).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json(resp);\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nexports.getAllSchedules = getAllSchedules;\\nexports.addSchedule = addSchedule;\\nexports.deleteAllSchedules = deleteAllSchedules;\\nexports.getAllSchedulesForAUser = getAllSchedulesForAUser; // **********************************************************************************\\n// \\n// Schedule Operations Specified by ID\\n// \\n// **********************************************************************************\\n\\nconst getScheduleDetailsById = (req, res, next) => {\\n Schedules.findById(req.params.scheduleId).then(schedule => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n schedule: schedule\\n });\\n }, err => {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: \\\"Could not find the place\\\"\\n });\\n }).catch(err => next(err));\\n};\\n\\nconst updateScheduleById = (req, res, next) => {\\n Schedules.findByIdAndUpdate(req.params.scheduleId, {\\n $set: req.body\\n }, {\\n new: true\\n }).then(schedule => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n schedule: schedule\\n });\\n }, err => next(err)).catch(err => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: \\\"Update failed\\\"\\n });\\n });\\n};\\n\\nconst deleteScheduleById = (req, res, next) => {\\n Schedules.findByIdAndRemove(req.params.scheduleId).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n response: resp\\n });\\n }, err => next(err)).catch(err => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: \\\"Delete failed\\\"\\n });\\n });\\n};\\n\\nexports.getScheduleDetailsById = getScheduleDetailsById;\\nexports.updateScheduleById = updateScheduleById;\\nexports.deleteScheduleById = deleteScheduleById; // **********************************************************************************\\n// \\n// Schedule Operations Specified by UserID\\n// \\n// **********************************************************************************\\n// const getScheduleDetailsByUserId = (req, res, next) => {\\n// Schedules.findById(req.params.scheduleId)\\n// .then((schedule) => {\\n// res.statusCode = 200;\\n// res.setHeader('Content-Type', 'application/json');\\n// res.json(schedule);\\n// }, (err) => next(err))\\n// .catch((err) => next(err));\\n// }\\n// const updateScheduleByUserId = (req, res, next) => {\\n// Schedules.findByIdAndUpdate(req.params.scheduleId, {\\n// $set: req.body\\n// }, { new: true })\\n// .then((schedule) => {\\n// res.statusCode = 200;\\n// res.setHeader('Content-Type', 'application/json');\\n// res.json(schedule);\\n// }, (err) => next(err))\\n// .catch((err) => next(err));\\n// }\\n// const deleteScheduleByUserId = (req, res, next) => {\\n// Schedules.findByIdAndRemove(req.params.scheduleId)\\n// .then((resp) => {\\n// res.statusCode = 200;\\n// res.setHeader('Content-Type', 'application/json');\\n// res.json(resp);\\n// }, (err) => next(err))\\n// .catch((err) => next(err));\\n// }\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNjaGVkdWxlQ29udHJvbGxlci5qcyJdLCJuYW1lcyI6WyJTY2hlZHVsZXMiLCJyZXF1aXJlIiwiZ2V0QWxsU2NoZWR1bGVzIiwicmVxIiwicmVzIiwibmV4dCIsImZpbmQiLCJxdWVyeSIsInBvcHVsYXRlIiwidGhlbiIsInNjaGVkdWxlcyIsInN0YXR1c0NvZGUiLCJzZXRIZWFkZXIiLCJqc29uIiwic3VjY2VzcyIsImVyciIsImNhdGNoIiwiZ2V0QWxsU2NoZWR1bGVzRm9yQVVzZXIiLCJTdHJpbmciLCJwYXJhbXMiLCJ1c2VySWQiLCJtc2ciLCJfbWVzc2FnZSIsIm1lc3NhZ2UiLCJhZGRTY2hlZHVsZSIsInNjaGVkdWxlIiwidXNlciIsImJvZHkiLCJwbGFjZSIsImRhdGUiLCJzdGF0ZSIsInRyYXZlbGxpbmdNZXRob2QiLCJjcmVhdGUiLCJkZWxldGVBbGxTY2hlZHVsZXMiLCJyZW1vdmUiLCJyZXNwIiwiZXhwb3J0cyIsImdldFNjaGVkdWxlRGV0YWlsc0J5SWQiLCJmaW5kQnlJZCIsInNjaGVkdWxlSWQiLCJ1cGRhdGVTY2hlZHVsZUJ5SWQiLCJmaW5kQnlJZEFuZFVwZGF0ZSIsIiRzZXQiLCJuZXciLCJkZWxldGVTY2hlZHVsZUJ5SWQiLCJmaW5kQnlJZEFuZFJlbW92ZSIsInJlc3BvbnNlIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxTQUFTLEdBQUdDLE9BQU8sQ0FBQyxxQkFBRCxDQUF6QixDLENBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUEsTUFBTUMsZUFBZSxHQUFHLENBQUNDLEdBQUQsRUFBTUMsR0FBTixFQUFXQyxJQUFYLEtBQW9CO0FBQ3hDTCxFQUFBQSxTQUFTLENBQUNNLElBQVYsQ0FBZUgsR0FBRyxDQUFDSSxLQUFuQixFQUEwQkMsUUFBMUIsQ0FBbUMsT0FBbkMsRUFBNENBLFFBQTVDLENBQXFELE1BQXJELEVBQ0tDLElBREwsQ0FDV0MsU0FBRCxJQUFlO0FBQ2pCTixJQUFBQSxHQUFHLENBQUNPLFVBQUosR0FBaUIs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LE1BQUFBLFFBQVEsRUFBQ1g7QUFBMUIsS0FBVDtBQUNILEdBTEwsRUFLUXBCLEdBQUQsSUFBU1YsSUFBSSxDQUFDVSxHQUFELENBTHBCLEVBTUtDLEtBTkwsQ0FNWUQsR0FBRCxJQUFTO0FBQ1pYLElBQUFBLEdBQUcsQ0FBQ08sVUFBSixHQUFpQixHQUFqQjtBQUNBUCxJQUFBQSxHQUFHLENBQUNRLFNBQUosQ0FBYyxjQUFkLEVBQThCLGtCQUE5QjtBQUNBUixJQUFBQSxHQUFHLENBQUNTLElBQUosQ0FBUztBQUFFQyxNQUFBQSxPQUFPLEVBQUUsS0FBWDtBQUFrQlMsTUFBQUEsT0FBTyxFQUFFO0FBQTNCLEtBQVQ7QUFDSCxHQVZMO0FBV0gsQ0FaRDs7QUFjQWEsT0FBTyxDQUFDQyxzQkFBUixHQUFpQ0Esc0JBQWpDO0FBQ0FELE9BQU8sQ0FBQ0ksa0JBQVIsR0FBNkJBLGtCQUE3QjtBQUNBSixPQUFPLENBQUNRLGtCQUFSLEdBQTZCQSxrQkFBN0IsQyxDQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgU2NoZWR1bGVzID0gcmVxdWlyZSgnLi4vbW9kZWxzL3NjaGVkdWxlcycpO1xyXG5cclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyBcclxuLy8gICAgICAgICAgICAgIFNjaGVkdWxlIE9wZXJhdGlvbnMgXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG5jb25zdCBnZXRBbGxTY2hlZHVsZXMgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIFNjaGVkdWxlcy5maW5kKHJlcS5xdWVyeSkucG9wdWxhdGUoXCJwbGFjZVwiKS5wb3B1bGF0ZShcInVzZXJcIilcclxuICAgICAgICAudGhlbigoc2NoZWR1bGVzKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHNjaGVkdWxlczpzY2hlZHVsZXMgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpO1xyXG59XHJcblxyXG5jb25zdCBnZXRBbGxTY2hlZHVsZXNGb3JBVXNlciA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgdmFyIHF1ZXJ5ID0geyBcInVzZXJcIjogU3RyaW5nKHJlcS5wYXJhbXMudXNlcklkKSB9O1xyXG4gICAgU2NoZWR1bGVzLmZpbmQocXVlcnkpLnBvcHVsYXRlKFwicGxhY2VcIilcclxuICAgICAgICAudGhlbigoc2NoZWR1bGVzKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHNjaGVkdWxlczpzY2hlZHVsZXMgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gIHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDQ7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIGNvbnN0IG1zZyA9IGVyci5fbWVzc2FnZTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogbXNnIH0pO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA1MDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogZmFsc2UsIG1lc3NhZ2U6IFwiRmFpbGVkIHRvIGdldCBkYXRhXCIgfSk7XHJcbiAgICAgICAgfSk7XHJcbn1cclxuXHJcbmNvbnN0IGFkZFNjaGVkdWxlID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICB2YXIgc2NoZWR1bGUgPSB7XHJcbiAgICAgICAgdXNlcjogcmVxLmJvZHkudXNlcixcclxuICAgICAgICBwbGFjZTogcmVxLmJvZHkucGxhY2UsXHJcbiAgICAgICAgZGF0ZTogcmVxLmJvZHkuZGF0ZSxcclxuICAgICAgICBzdGF0ZTogXCJuZXdcIixcclxuICAgICAgICB0cmF2ZWxsaW5nTWV0aG9kOiByZXEuYm9keS50cmF2ZWxsaW5nTWV0aG9kXHJcbiAgICB9XHJcbiAgICBTY2hlZHVsZXMuY3JlYXRlKHNjaGVkdWxlKVxyXG4gICAgICAgIC50aGVuKChzY2hlZHVsZSkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCBzY2hlZHVsZTpzY2hlZHVsZSB9KTtcclxuICAgICAgICB9LCAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNDAzO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICBjb25zdCBtc2cgPSBlcnIuX21lc3NhZ2U7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogZmFsc2UsIG1lc3NhZ2U6IG1zZyB9KTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IGZhbHNlLCBtZXNzYWdlOiBcIkZhaWxlZCB0byBhZGQgYSBzY2hlZHVsZVwiIH0pO1xyXG4gICAgICAgIH0pO1xyXG59XHJcblxyXG5jb25zdCBkZWxldGVBbGxTY2hlZHVsZXMgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIFNjaGVkdWxlcy5yZW1vdmUoe30pXHJcbiAgICAgICAgLnRoZW4oKHJlc3ApID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHJlc3ApO1xyXG4gICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuZXhwb3J0cy5nZXRBbGxTY2hlZHVsZXMgPSBnZXRBbGxTY2hlZHVsZXM7XHJcbmV4cG9ydHMuYWRkU2NoZWR1bGUgPSBhZGRTY2hlZHVsZTtcclxuZXhwb3J0cy5kZWxldGVBbGxTY2hlZHVsZXMgPSBkZWxldGVBbGxTY2hlZHVsZXM7XHJcbmV4cG9ydHMuZ2V0QWxsU2NoZWR1bGVzRm9yQVVzZXIgPSBnZXRBbGxTY2hlZHVsZXNGb3JBVXNlcjtcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuLy8gXHJcbi8vICAgICAgICAgICAgICBTY2hlZHVsZSBPcGVyYXRpb25zIFNwZWNpZmllZCBieSBJRFxyXG4vLyBcclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuY29uc3QgZ2V0U2NoZWR1bGVEZXRhaWxzQnlJZCA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgU2NoZWR1bGVzLmZpbmRCeUlkKHJlcS5wYXJhbXMuc2NoZWR1bGVJZClcclxuICAgICAgICAudGhlbigoc2NoZWR1bGUpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgc2NoZWR1bGU6c2NoZWR1bGUgfSk7XHJcbiAgICAgICAgfSwgIChlcnIpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDQ7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogZmFsc2UsIG1lc3NhZ2U6IFwiQ291bGQgbm90IGZpbmQgdGhlIHBsYWNlXCIgfSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuY29uc3QgdXBkYXRlU2NoZWR1bGVCeUlkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICBTY2hlZHVsZXMuZmluZEJ5SWRBbmRVcGRhdGUocmVxLnBhcmFtcy5zY2hlZHVsZUlkLCB7XHJcbiAgICAgICAgJHNldDogcmVxLmJvZHlcclxuICAgIH0sIHsgbmV3OiB0cnVlIH0pXHJcbiAgICAgICAgLnRoZW4oKHNjaGVkdWxlKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHNjaGVkdWxlOnNjaGVkdWxlIH0pO1xyXG4gICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogXCJVcGRhdGUgZmFpbGVkXCIgfSk7XHJcbiAgICAgICAgfSk7XHJcbn1cclxuXHJcbmNvbnN0IGRlbGV0ZVNjaGVkdWxlQnlJZCA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgU2NoZWR1bGVzLmZpbmRCeUlkQW5kUmVtb3ZlKHJlcS5wYXJhbXMuc2NoZWR1bGVJZClcclxuICAgICAgICAudGhlbigocmVzcCkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCByZXNwb25zZTpyZXNwIH0pO1xyXG4gICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogXCJEZWxldGUgZmFpbGVkXCIgfSk7XHJcbiAgICAgICAgfSk7XHJcbn1cclxuXHJcbmV4cG9ydHMuZ2V0U2NoZWR1bGVEZXRhaWxzQnlJZCA9IGdldFNjaGVkdWxlRGV0YWlsc0J5SWQ7XHJcbmV4cG9ydHMudXBkYXRlU2NoZWR1bGVCeUlkID0gdXBkYXRlU2NoZWR1bGVCeUlkO1xyXG5leHBvcnRzLmRlbGV0ZVNjaGVkdWxlQnlJZCA9IGRlbGV0ZVNjaGVkdWxlQnlJZDtcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuLy8gXHJcbi8vICAgICAgICAgICAgICBTY2hlZHVsZSBPcGVyYXRpb25zIFNwZWNpZmllZCBieSBVc2VySURcclxuLy8gXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbi8vIGNvbnN0IGdldFNjaGVkdWxlRGV0YWlsc0J5VXNlcklkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbi8vICAgICBTY2hlZHVsZXMuZmluZEJ5SWQocmVxLnBhcmFtcy5zY2hlZHVsZUlkKVxyXG4vLyAgICAgICAgIC50aGVuKChzY2hlZHVsZSkgPT4ge1xyXG4vLyAgICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuLy8gICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuLy8gICAgICAgICAgICAgcmVzLmpzb24oc2NoZWR1bGUpO1xyXG4vLyAgICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuLy8gICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxuLy8gfVxyXG5cclxuLy8gY29uc3QgdXBkYXRlU2NoZWR1bGVCeVVzZXJJZCA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4vLyAgICAgU2NoZWR1bGVzLmZpbmRCeUlkQW5kVXBkYXRlKHJlcS5wYXJhbXMuc2NoZWR1bGVJZCwge1xyXG4vLyAgICAgICAgICRzZXQ6IHJlcS5ib2R5XHJcbi8vICAgICB9LCB7IG5ldzogdHJ1ZSB9KVxyXG4vLyAgICAgICAgIC50aGVuKChzY2hlZHVsZSkgPT4ge1xyXG4vLyAgICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuLy8gICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuLy8gICAgICAgICAgICAgcmVzLmpzb24oc2NoZWR1bGUpO1xyXG4vLyAgICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuLy8gICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxuLy8gfVxyXG5cclxuLy8gY29uc3QgZGVsZXRlU2NoZWR1bGVCeVVzZXJJZCA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4vLyAgICAgU2NoZWR1bGVzLmZpbmRCeUlkQW5kUmVtb3ZlKHJlcS5wYXJhbXMuc2NoZWR1bGVJZClcclxuLy8gICAgICAgICAudGhlbigocmVzcCkgPT4ge1xyXG4vLyAgICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuLy8gICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuLy8gICAgICAgICAgICAgcmVzLmpzb24ocmVzcCk7XHJcbi8vICAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4vLyAgICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpO1xyXG4vLyB9Il19\",\"originalCode\":\"const Schedules = require('../models/schedules');\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Schedule Operations \\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nconst getAllSchedules = (req, res, next) => {\\r\\n Schedules.find(req.query).populate(\\\"place\\\").populate(\\\"user\\\")\\r\\n .then((schedules) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, schedules:schedules });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst getAllSchedulesForAUser = (req, res, next) => {\\r\\n var query = { \\\"user\\\": String(req.params.userId) };\\r\\n Schedules.find(query).populate(\\\"place\\\")\\r\\n .then((schedules) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, schedules:schedules });\\r\\n }, (err) => {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n const msg = err._message;\\r\\n res.json({ success: false, message: msg });\\r\\n })\\r\\n .catch((err) => {\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: \\\"Failed to get data\\\" });\\r\\n });\\r\\n}\\r\\n\\r\\nconst addSchedule = (req, res, next) => {\\r\\n var schedule = {\\r\\n user: req.body.user,\\r\\n place: req.body.place,\\r\\n date: req.body.date,\\r\\n state: \\\"new\\\",\\r\\n travellingMethod: req.body.travellingMethod\\r\\n }\\r\\n Schedules.create(schedule)\\r\\n .then((schedule) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, schedule:schedule });\\r\\n }, (err) => {\\r\\n res.statusCode = 403;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n const msg = err._message;\\r\\n res.json({ success: false, message: msg });\\r\\n })\\r\\n .catch((err) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: \\\"Failed to add a schedule\\\" });\\r\\n });\\r\\n}\\r\\n\\r\\nconst deleteAllSchedules = (req, res, next) => {\\r\\n Schedules.remove({})\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json(resp);\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nexports.getAllSchedules = getAllSchedules;\\r\\nexports.addSchedule = addSchedule;\\r\\nexports.deleteAllSchedules = deleteAllSchedules;\\r\\nexports.getAllSchedulesForAUser = getAllSchedulesForAUser;\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Schedule Operations Specified by ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nconst getScheduleDetailsById = (req, res, next) => {\\r\\n Schedules.findById(req.params.scheduleId)\\r\\n .then((schedule) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, schedule:schedule });\\r\\n }, (err) => {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: \\\"Could not find the place\\\" });\\r\\n })\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst updateScheduleById = (req, res, next) => {\\r\\n Schedules.findByIdAndUpdate(req.params.scheduleId, {\\r\\n $set: req.body\\r\\n }, { new: true })\\r\\n .then((schedule) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, schedule:schedule });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: \\\"Update failed\\\" });\\r\\n });\\r\\n}\\r\\n\\r\\nconst deleteScheduleById = (req, res, next) => {\\r\\n Schedules.findByIdAndRemove(req.params.scheduleId)\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, response:resp });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: \\\"Delete failed\\\" });\\r\\n });\\r\\n}\\r\\n\\r\\nexports.getScheduleDetailsById = getScheduleDetailsById;\\r\\nexports.updateScheduleById = updateScheduleById;\\r\\nexports.deleteScheduleById = deleteScheduleById;\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Schedule Operations Specified by UserID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\n// const getScheduleDetailsByUserId = (req, res, next) => {\\r\\n// Schedules.findById(req.params.scheduleId)\\r\\n// .then((schedule) => {\\r\\n// res.statusCode = 200;\\r\\n// res.setHeader('Content-Type', 'application/json');\\r\\n// res.json(schedule);\\r\\n// }, (err) => next(err))\\r\\n// .catch((err) => next(err));\\r\\n// }\\r\\n\\r\\n// const updateScheduleByUserId = (req, res, next) => {\\r\\n// Schedules.findByIdAndUpdate(req.params.scheduleId, {\\r\\n// $set: req.body\\r\\n// }, { new: true })\\r\\n// .then((schedule) => {\\r\\n// res.statusCode = 200;\\r\\n// res.setHeader('Content-Type', 'application/json');\\r\\n// res.json(schedule);\\r\\n// }, (err) => next(err))\\r\\n// .catch((err) => next(err));\\r\\n// }\\r\\n\\r\\n// const deleteScheduleByUserId = (req, res, next) => {\\r\\n// Schedules.findByIdAndRemove(req.params.scheduleId)\\r\\n// .then((resp) => {\\r\\n// res.statusCode = 200;\\r\\n// res.setHeader('Content-Type', 'application/json');\\r\\n// res.json(resp);\\r\\n// }, (err) => next(err))\\r\\n// .catch((err) => next(err));\\r\\n// }\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/df/scheduleController_df2aee56329a17301dcb5de3e55455e9.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2542\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\scheduleController.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":22878,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":22875,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"getAllSchedules\",\"ranges\":[{\"startOffset\":382,\"endOffset\":688,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getAllSchedulesForAUser\",\"ranges\":[{\"startOffset\":723,\"endOffset\":1396,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"addSchedule\",\"ranges\":[{\"startOffset\":1419,\"endOffset\":2190,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"deleteAllSchedules\",\"ranges\":[{\"startOffset\":2220,\"endOffset\":2430,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getScheduleDetailsById\",\"ranges\":[{\"startOffset\":2883,\"endOffset\":3331,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"updateScheduleById\",\"ranges\":[{\"startOffset\":3361,\"endOffset\":3854,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"deleteScheduleById\",\"ranges\":[{\"startOffset\":3884,\"endOffset\":4322,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const mongoose = require('mongoose');\\n\\nconst Schema = mongoose.Schema;\\n\\nrequire('mongoose-currency').loadType(mongoose);\\n\\nconst Currency = mongoose.Types.Currency;\\nconst scheduleSchema = new Schema({\\n user: {\\n type: mongoose.Schema.Types.ObjectId,\\n ref: \\\"User\\\"\\n },\\n place: {\\n type: mongoose.Schema.Types.ObjectId,\\n ref: \\\"Place\\\"\\n },\\n date: {\\n type: Date,\\n required: true\\n },\\n fair: {\\n type: Currency,\\n min: 0\\n },\\n state: {\\n type: String,\\n default: \\\"new\\\",\\n enum: [\\\"new\\\", \\\"not-completed\\\", \\\"canceled\\\", \\\"completed\\\"]\\n },\\n travellingMethod: {\\n type: String,\\n required: true,\\n enum: ['Bus', 'Car', 'Train', 'Threewheeler', 'Foot']\\n }\\n}, {\\n timestamps: true\\n});\\nvar Schedules = mongoose.model('Schedule', scheduleSchema);\\nmodule.exports = Schedules;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNjaGVkdWxlcy5qcyJdLCJuYW1lcyI6WyJtb25nb29zZSIsInJlcXVpcmUiLCJTY2hlbWEiLCJsb2FkVHlwZSIsIkN1cnJlbmN5IiwiVHlwZXMiLCJzY2hlZHVsZVNjaGVtYSIsInVzZXIiLCJ0eXBlIiwiT2JqZWN0SWQiLCJyZWYiLCJwbGFjZSIsImRhdGUiLCJEYXRlIiwicmVxdWlyZWQiLCJmYWlyIiwibWluIiwic3RhdGUiLCJTdHJpbmciLCJkZWZhdWx0IiwiZW51bSIsInRyYXZlbGxpbmdNZXRob2QiLCJ0aW1lc3RhbXBzIiwiU2NoZWR1bGVzIiwibW9kZWwiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxRQUFRLEdBQUdDLE9BQU8sQ0FBQyxVQUFELENBQXhCOztBQUNBLE1BQU1DLE1BQU0sR0FBR0YsUUFBUSxDQUFDRSxNQUF4Qjs7QUFDQUQsT0FBTyxDQUFDLG1CQUFELENBQVAsQ0FBNkJFLFFBQTdCLENBQXNDSCxRQUF0Qzs7QUFDQSxNQUFNSSxRQUFRLEdBQUdKLFFBQVEsQ0FBQ0ssS0FBVCxDQUFlRCxRQUFoQztBQUNBLE1BQU1FLGNBQWMsR0FBRyxJQUFJSixNQUFKLENBQVc7QUFDOUJLLEVBQUFBLElBQUksRUFBRTtBQUNGQyxJQUFBQSxJQUFJLEVBQUVSLFFBQVEsQ0FBQ0UsTUFBVCxDQUFnQkcsS0FBaEIsQ0FBc0JJLFFBRDFCO0FBRUZDLElBQUFBLEdBQUcsRUFBRTtBQUZILEdBRHdCO0FBSzlCQyxFQUFBQSxLQUFLLEVBQUU7QUFDSEgsSUFBQUEsSUFBSSxFQUFFUixRQUFRLENBQUNFLE1BQVQsQ0FBZ0JHLEtBQWhCLENBQXNCSSxRQUR6QjtBQUVIQyxJQUFBQSxHQUFHLEVBQUU7QUFGRixHQUx1QjtBQVM5QkUsRUFBQUEsSUFBSSxFQUFFO0FBQ0ZKLElBQUFBLElBQUksRUFBRUssSUFESjtBQUVGQyxJQUFBQSxRQUFRLEVBQUU7QUFGUixHQVR3QjtBQWE5QkMsRUFBQUEsSUFBSSxFQUFFO0FBQ0ZQLElBQUFBLElBQUksRUFBRUosUUFESjtBQUVGWSxJQUFBQSxHQUFHLEVBQUU7QUFGSCxHQWJ3QjtBQWlCOUJDLEVBQUFBLEtBQUssRUFBRTtBQUNIVCxJQUFBQSxJQUFJLEVBQUVVLE1BREg7QUFFSEMsSUFBQUEsT0FBTyxFQUFFLEtBRk47QUFHSEMsSUFBQUEsSUFBSSxFQUFFLENBQUMsS0FBRCxFQUFPLGVBQVAsRUFBd0IsVUFBeEIsRUFBb0MsV0FBcEM7QUFISCxHQWpCdUI7QUFzQjlCQyxFQUFBQSxnQkFBZ0IsRUFBRTtBQUNkYixJQUFBQSxJQUFJLEVBQUVVLE1BRFE7QUFFZEosSUFBQUEsUUFBUSxFQUFFLElBRkk7QUFHZE0sSUFBQUEsSUFBSSxFQUFFLENBQUMsS0FBRCxFQUFRLEtBQVIsRUFBZSxPQUFmLEVBQXdCLGNBQXhCLEVBQXdDLE1BQXhDO0FBSFE7QUF0QlksQ0FBWCxFQTJCcEI7QUFDQ0UsRUFBQUEsVUFBVSxFQUFFO0FBRGIsQ0EzQm9CLENBQXZCO0FBK0JBLElBQUlDLFNBQVMsR0FBR3ZCLFFBQVEsQ0FBQ3dCLEtBQVQsQ0FBZSxVQUFmLEVBQTJCbEIsY0FBM0IsQ0FBaEI7QUFFQW1CLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQkgsU0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBtb25nb29zZSA9IHJlcXVpcmUoJ21vbmdvb3NlJyk7XHJcbmNvbnN0IFNjaGVtYSA9IG1vbmdvb3NlLlNjaGVtYTtcclxucmVxdWlyZSgnbW9uZ29vc2UtY3VycmVuY3knKS5sb2FkVHlwZShtb25nb29zZSk7XHJcbmNvbnN0IEN1cnJlbmN5ID0gbW9uZ29vc2UuVHlwZXMuQ3VycmVuY3k7XHJcbmNvbnN0IHNjaGVkdWxlU2NoZW1hID0gbmV3IFNjaGVtYSh7XHJcbiAgICB1c2VyOiB7XHJcbiAgICAgICAgdHlwZTogbW9uZ29vc2UuU2NoZW1hLlR5cGVzLk9iamVjdElkLFxyXG4gICAgICAgIHJlZjogXCJVc2VyXCJcclxuICAgIH0sXHJcbiAgICBwbGFjZToge1xyXG4gICAgICAgIHR5cGU6IG1vbmdvb3NlLlNjaGVtYS5UeXBlcy5PYmplY3RJZCxcclxuICAgICAgICByZWY6IFwiUGxhY2VcIlxyXG4gICAgfSxcclxuICAgIGRhdGU6IHtcclxuICAgICAgICB0eXBlOiBEYXRlLFxyXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlXHJcbiAgICB9LFxyXG4gICAgZmFpcjoge1xyXG4gICAgICAgIHR5cGU6IEN1cnJlbmN5LFxyXG4gICAgICAgIG1pbjogMFxyXG4gICAgfSxcclxuICAgIHN0YXRlOiB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICAgIGRlZmF1bHQ6IFwibmV3XCIsXHJcbiAgICAgICAgZW51bTogW1wibmV3XCIsXCJub3QtY29tcGxldGVkXCIsIFwiY2FuY2VsZWRcIiwgXCJjb21wbGV0ZWRcIl1cclxuICAgIH0sXHJcbiAgICB0cmF2ZWxsaW5nTWV0aG9kOiB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxyXG4gICAgICAgIGVudW06IFsnQnVzJywgJ0NhcicsICdUcmFpbicsICdUaHJlZXdoZWVsZXInLCAnRm9vdCddXHJcbiAgICB9XHJcbn0sIHtcclxuICAgIHRpbWVzdGFtcHM6IHRydWVcclxufSk7XHJcblxyXG52YXIgU2NoZWR1bGVzID0gbW9uZ29vc2UubW9kZWwoJ1NjaGVkdWxlJywgc2NoZWR1bGVTY2hlbWEpO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBTY2hlZHVsZXM7Il19\",\"originalCode\":\"const mongoose = require('mongoose');\\r\\nconst Schema = mongoose.Schema;\\r\\nrequire('mongoose-currency').loadType(mongoose);\\r\\nconst Currency = mongoose.Types.Currency;\\r\\nconst scheduleSchema = new Schema({\\r\\n user: {\\r\\n type: mongoose.Schema.Types.ObjectId,\\r\\n ref: \\\"User\\\"\\r\\n },\\r\\n place: {\\r\\n type: mongoose.Schema.Types.ObjectId,\\r\\n ref: \\\"Place\\\"\\r\\n },\\r\\n date: {\\r\\n type: Date,\\r\\n required: true\\r\\n },\\r\\n fair: {\\r\\n type: Currency,\\r\\n min: 0\\r\\n },\\r\\n state: {\\r\\n type: String,\\r\\n default: \\\"new\\\",\\r\\n enum: [\\\"new\\\",\\\"not-completed\\\", \\\"canceled\\\", \\\"completed\\\"]\\r\\n },\\r\\n travellingMethod: {\\r\\n type: String,\\r\\n required: true,\\r\\n enum: ['Bus', 'Car', 'Train', 'Threewheeler', 'Foot']\\r\\n }\\r\\n}, {\\r\\n timestamps: true\\r\\n});\\r\\n\\r\\nvar Schedules = mongoose.model('Schedule', scheduleSchema);\\r\\n\\r\\nmodule.exports = Schedules;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/e2/schedules_e2f8e79bc28961f4db3736c92d490e47.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2543\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\models\\\\schedules.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":4238,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":4235,\"count\":1}],\"isBlockCoverage\":true}]}},{\"codeTransformResult\":{\"code\":\"const express = require('express');\\n\\nconst bodyParser = require('body-parser');\\n\\nconst cors = require('./cors');\\n\\nconst {\\n checkSchema\\n} = require('express-validator');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nvar validationRules = require('../middleware/validation');\\n\\nconst touristController = require('../controllers/touristController');\\n\\nconst touristRouter = express.Router();\\ntouristRouter.use(bodyParser.json()); // **********************************************************************************\\n// \\n// Tourist Routes\\n// \\n// **********************************************************************************\\n\\ntouristRouter.route('/').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, touristController.getAllTourists).post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, touristController.addTourist).put(cors.corsWithOptions, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('PUT operation not supported on /tourists');\\n}).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, touristController.deleteAllTourists);\\ntouristRouter.route('/search').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).post(cors.corsWithOptions, authenticate.verifyUser, touristController.getAllTouristsByName); // **********************************************************************************\\n// \\n// Tourist Routes Specified by ID\\n// \\n// **********************************************************************************\\n\\ntouristRouter.route('/:touristId').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, touristController.getTouristDetailsById).post(cors.corsWithOptions, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('POST operation not supported on /tourists/' + req.params.touristId);\\n}).put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, touristController.updateTouristDetailsById).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, touristController.deleteATouristById);\\nmodule.exports = touristRouter;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRvdXJpc3RSb3V0ZXIuanMiXSwibmFtZXMiOlsiZXhwcmVzcyIsInJlcXVpcmUiLCJib2R5UGFyc2VyIiwiY29ycyIsImNoZWNrU2NoZW1hIiwiYXV0aGVudGljYXRlIiwidmFsaWRhdGlvblJ1bGVzIiwidG91cmlzdENvbnRyb2xsZXIiLCJ0b3VyaXN0Um91dGVyIiwiUm91dGVyIiwidXNlIiwianNvbiIsInJvdXRlIiwib3B0aW9ucyIsImNvcnNXaXRoT3B0aW9ucyIsInJlcSIsInJlcyIsInNlbmRTdGF0dXMiLCJnZXQiLCJ2ZXJpZnlVc2VyIiwiZ2V0QWxsVG91cmlzdHMiLCJwb3N0IiwidmVyaWZ5TW9kZXJhdGVyIiwiYWRkVG91cmlzdCIsInB1dCIsIm5leHQiLCJzdGF0dXNDb2RlIiwiZW5kIiwiZGVsZXRlIiwidmVyaWZ5QWRtaW4iLCJkZWxldGVBbGxUb3VyaXN0cyIsImdldEFsbFRvdXJpc3RzQnlOYW1lIiwiZ2V0VG91cmlzdERldGFpbHNCeUlkIiwicGFyYW1zIiwidG91cmlzdElkIiwidXBkYXRlVG91cmlzdERldGFpbHNCeUlkIiwiZGVsZXRlQVRvdXJpc3RCeUlkIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsT0FBTyxHQUFHQyxPQUFPLENBQUMsU0FBRCxDQUF2Qjs7QUFDQSxNQUFNQyxVQUFVLEdBQUdELE9BQU8sQ0FBQyxhQUFELENBQTFCOztBQUVBLE1BQU1FLElBQUksR0FBR0YsT0FBTyxDQUFDLFFBQUQsQ0FBcEI7O0FBQ0EsTUFBTTtBQUFFRyxFQUFBQTtBQUFGLElBQWtCSCxPQUFPLENBQUMsbUJBQUQsQ0FBL0I7O0FBQ0EsSUFBSUksWUFBWSxHQUFHSixPQUFPLENBQUMsNEJBQUQsQ0FBMUI7O0FBQ0EsSUFBSUssZUFBZSxHQUFHTCxPQUFPLENBQUMsMEJBQUQsQ0FBN0I7O0FBQ0EsTUFBTU0saUJBQWlCLEdBQUdOLE9BQU8sQ0FBQyxrQ0FBRCxDQUFqQzs7QUFFQSxNQUFNTyxhQUFhLEdBQUdSLE9BQU8sQ0FBQ1MsTUFBUixFQUF0QjtBQUVBRCxhQUFhLENBQUNFLEdBQWQsQ0FBa0JSLFVBQVUsQ0FBQ1MsSUFBWCxFQUFsQixFLENBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQUgsYUFBYSxDQUFDSSxLQUFkLENBQW9CLEdBQXBCLEVBQ0tDLE9BREwsQ0FDYVYsSUFBSSxDQUFDVyxlQURsQixFQUNtQyxDQUFDQyxHQUFELEVBQU1DLEdBQU4sS0FBYztBQUFFQSxFQUFBQSxHQUFHLENBQUNDLFVBQUosQ0FBZSxHQUFmO0FBQXNCLENBRHpFLEVBRUtDLEdBRkwsQ0FFU2YsSUFBSSxDQUFDQSxJQUZkLEVBRXFCRSxZQUFZLENBQUNjLFVBRmxDLEVBRWdEWixpQkFBaUIsQ0FBQ2EsY0FGbEUsRUFHS0MsSUFITCxDQUdVbEIsSUFBSSxDQUFDVyxlQUhmLEVBR2lDVCxZQUFZLENBQUNjLFVBSDlDLEVBRzBEZCxZQUFZLENBQUNpQixlQUh2RSxFQUd3RmYsaUJBQWlCLENBQUNnQixVQUgxRyxFQUlLQyxHQUpMLENBSVNyQixJQUFJLENBQUNXLGVBSmQsRUFJK0IsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEVBQVdTLElBQVgsS0FBb0I7QUFDM0NULEVBQUFBLEdBQUcsQ0FBQ1UsVUFBSixHQUFpQixHQUFqQjtBQUNBVixFQUFBQSxHQUFHLENBQUNXLEdBQUosQ0FBUSwwQ0FBUjtBQUNILENBUEwsRUFRS0MsTUFSTCxDQVFZekIsSUFBSSxDQUFDVyxlQVJqQixFQVFrQ1QsWUFBWSxDQUFDYyxVQVIvQyxFQVEyRGQsWUFBWSxDQUFDd0IsV0FSeEUsRUFRc0Z0QixpQkFBaUIsQ0FBQ3VCLGlCQVJ4RztBQVNBdEIsYUFBYSxDQUFDSSxLQUFkLENBQW9CLFNBQXBCLEVBQ0tDLE9BREwsQ0FDYVYsSUFBSSxDQUFDVyxlQURsQixFQUNtQyxDQUFDQyxHQUFELEVBQU1DLEdBQU4sS0FBYztBQUFFQSxFQUFBQSxHQUFHLENBQUNDLFVBQUosQ0FBZSxHQUFmO0FBQXNCLENBRHpFLEVBRUtJLElBRkwsQ0FFVWxCLElBQUksQ0FBQ1csZUFGZixFQUVnQ1QsWUFBWSxDQUFDYyxVQUY3QyxFQUUwRFosaUJBQWlCLENBQUN3QixvQkFGNUUsRSxDQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUF2QixhQUFhLENBQUNJLEtBQWQsQ0FBb0IsYUFBcEIsRUFDS0MsT0FETCxDQUNhVixJQUFJLENBQUNXLGVBRGxCLEVBQ21DLENBQUNDLEdBQUQsRUFBTUMsR0FBTixLQUFjO0FBQUVBLEVBQUFBLEdBQUcsQ0FBQ0MsVUFBSixDQUFlLEdBQWY7QUFBc0IsQ0FEekUsRUFFS0MsR0FGTCxDQUVTZixJQUFJLENBQUNBLElBRmQsRUFFb0JFLFlBQVksQ0FBQ2MsVUFGakMsRUFFK0NaLGlCQUFpQixDQUFDeUIscUJBRmpFLEVBR0tYLElBSEwsQ0FHVWxCLElBQUksQ0FBQ1csZUFIZixFQUdnQyxDQUFDQyxHQUFELEVBQU1DLEdBQU4sRUFBV1MsSUFBWCxLQUFvQjtBQUM1Q1QsRUFBQUEsR0FBRyxDQUFDVSxVQUFKLEdBQWlCLEdBQWpCO0FBQ0FWLEVBQUFBLEdBQUcsQ0FBQ1csR0FBSixDQUFRLCtDQUErQ1osR0FBRyxDQUFDa0IsTUFBSixDQUFXQyxTQUFsRTtBQUNILENBTkwsRUFPS1YsR0FQTCxDQU9TckIsSUFBSSxDQUFDVyxlQVBkLEVBTytCVCxZQUFZLENBQUNjLFVBUDVDLEVBT3dEZCxZQUFZLENBQUNpQixlQVByRSxFQU91RmYsaUJBQWlCLENBQUM0Qix3QkFQekcsRUFRS1AsTUFSTCxDQVFZekIsSUFBSSxDQUFDVyxlQVJqQixFQVFtQ1QsWUFBWSxDQUFDYyxVQVJoRCxFQVE0RGQsWUFBWSxDQUFDaUIsZUFSekUsRUFRMEZmLGlCQUFpQixDQUFDNkIsa0JBUjVHO0FBVUFDLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQjlCLGFBQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZXhwcmVzcyA9IHJlcXVpcmUoJ2V4cHJlc3MnKTtcclxuY29uc3QgYm9keVBhcnNlciA9IHJlcXVpcmUoJ2JvZHktcGFyc2VyJyk7XHJcblxyXG5jb25zdCBjb3JzID0gcmVxdWlyZSgnLi9jb3JzJyk7XHJcbmNvbnN0IHsgY2hlY2tTY2hlbWEgfSA9IHJlcXVpcmUoJ2V4cHJlc3MtdmFsaWRhdG9yJyk7XHJcbnZhciBhdXRoZW50aWNhdGUgPSByZXF1aXJlKCcuLi9taWRkbGV3YXJlL2F1dGhlbnRpY2F0ZScpO1xyXG52YXIgdmFsaWRhdGlvblJ1bGVzID0gcmVxdWlyZSgnLi4vbWlkZGxld2FyZS92YWxpZGF0aW9uJyk7XHJcbmNvbnN0IHRvdXJpc3RDb250cm9sbGVyID0gcmVxdWlyZSgnLi4vY29udHJvbGxlcnMvdG91cmlzdENvbnRyb2xsZXInKVxyXG5cclxuY29uc3QgdG91cmlzdFJvdXRlciA9IGV4cHJlc3MuUm91dGVyKCk7XHJcblxyXG50b3VyaXN0Um91dGVyLnVzZShib2R5UGFyc2VyLmpzb24oKSk7XHJcblxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbi8vIFxyXG4vLyAgICAgICAgICAgICAgVG91cmlzdCBSb3V0ZXNcclxuLy8gXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbnRvdXJpc3RSb3V0ZXIucm91dGUoJy8nKVxyXG4gICAgLm9wdGlvbnMoY29ycy5jb3JzV2l0aE9wdGlvbnMsIChyZXEsIHJlcykgPT4geyByZXMuc2VuZFN0YXR1cygyMDApOyB9KVxyXG4gICAgLmdldChjb3JzLmNvcnMsICBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgICB0b3VyaXN0Q29udHJvbGxlci5nZXRBbGxUb3VyaXN0cylcclxuICAgIC5wb3N0KGNvcnMuY29yc1dpdGhPcHRpb25zLCAgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlNb2RlcmF0ZXIsIHRvdXJpc3RDb250cm9sbGVyLmFkZFRvdXJpc3QpXHJcbiAgICAucHV0KGNvcnMuY29yc1dpdGhPcHRpb25zLCAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwMztcclxuICAgICAgICByZXMuZW5kKCdQVVQgb3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQgb24gL3RvdXJpc3RzJyk7XHJcbiAgICB9KVxyXG4gICAgLmRlbGV0ZShjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgIHRvdXJpc3RDb250cm9sbGVyLmRlbGV0ZUFsbFRvdXJpc3RzKTtcclxudG91cmlzdFJvdXRlci5yb3V0ZSgnL3NlYXJjaCcpXHJcbiAgICAub3B0aW9ucyhjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcbiAgICAucG9zdChjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsICB0b3VyaXN0Q29udHJvbGxlci5nZXRBbGxUb3VyaXN0c0J5TmFtZSk7XHJcblxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbi8vIFxyXG4vLyAgICAgICAgICAgICAgVG91cmlzdCBSb3V0ZXMgU3BlY2lmaWVkIGJ5IElEXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG50b3VyaXN0Um91dGVyLnJvdXRlKCcvOnRvdXJpc3RJZCcpXHJcbiAgICAub3B0aW9ucyhjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcbiAgICAuZ2V0KGNvcnMuY29ycywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsICAgdG91cmlzdENvbnRyb2xsZXIuZ2V0VG91cmlzdERldGFpbHNCeUlkKVxyXG4gICAgLnBvc3QoY29ycy5jb3JzV2l0aE9wdGlvbnMsIChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNDAzO1xyXG4gICAgICAgIHJlcy5lbmQoJ1BPU1Qgb3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQgb24gL3RvdXJpc3RzLycgKyByZXEucGFyYW1zLnRvdXJpc3RJZCk7XHJcbiAgICB9KVxyXG4gICAgLnB1dChjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlNb2RlcmF0ZXIsICB0b3VyaXN0Q29udHJvbGxlci51cGRhdGVUb3VyaXN0RGV0YWlsc0J5SWQpXHJcbiAgICAuZGVsZXRlKGNvcnMuY29yc1dpdGhPcHRpb25zLCAgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlNb2RlcmF0ZXIsIHRvdXJpc3RDb250cm9sbGVyLmRlbGV0ZUFUb3VyaXN0QnlJZCk7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IHRvdXJpc3RSb3V0ZXI7Il19\",\"originalCode\":\"const express = require('express');\\r\\nconst bodyParser = require('body-parser');\\r\\n\\r\\nconst cors = require('./cors');\\r\\nconst { checkSchema } = require('express-validator');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\nvar validationRules = require('../middleware/validation');\\r\\nconst touristController = require('../controllers/touristController')\\r\\n\\r\\nconst touristRouter = express.Router();\\r\\n\\r\\ntouristRouter.use(bodyParser.json());\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Tourist Routes\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\ntouristRouter.route('/')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, touristController.getAllTourists)\\r\\n .post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, touristController.addTourist)\\r\\n .put(cors.corsWithOptions, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('PUT operation not supported on /tourists');\\r\\n })\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, touristController.deleteAllTourists);\\r\\ntouristRouter.route('/search')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .post(cors.corsWithOptions, authenticate.verifyUser, touristController.getAllTouristsByName);\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Tourist Routes Specified by ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\ntouristRouter.route('/:touristId')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, touristController.getTouristDetailsById)\\r\\n .post(cors.corsWithOptions, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('POST operation not supported on /tourists/' + req.params.touristId);\\r\\n })\\r\\n .put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, touristController.updateTouristDetailsById)\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, touristController.deleteATouristById);\\r\\n\\r\\nmodule.exports = touristRouter;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/0a/touristRouter_0ad938586662daadc81c6cb1ad2e0f53.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2545\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\touristRouter.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":9165,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":9162,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":796,\"endOffset\":836,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1050,\"endOffset\":1152,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1333,\"endOffset\":1373,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1761,\"endOffset\":1801,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1911,\"endOffset\":2038,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const Tourists = require('../models/users');\\n\\nconst utils = require('../utils/utils'); // **********************************************************************************\\n// \\n// Tourist Operations \\n// \\n// **********************************************************************************\\n\\n\\nconst getAllTourists = (req, res, next) => {\\n var query = {\\n \\\"role\\\": \\\"user\\\"\\n }; // var obj = Object.assign(query, { $text: { $search: searchBy } });\\n\\n Tourists.find(query).then(tourists => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n tourists: tourists\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst getAllTouristsByName = (req, res, next) => {\\n var query = {\\n \\\"role\\\": \\\"user\\\"\\n };\\n\\n if (req.body.similarTo) {\\n var searchBy = req.body.similarTo || {};\\n query = {\\n \\\"role\\\": \\\"user\\\",\\n $text: {\\n $search: searchBy\\n }\\n };\\n }\\n\\n var sortby = req.body.sortBy || {};\\n Tourists.find(query).sort(sortby).then(tourists => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n tourists: tourists\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst addTourist = async (req, res, next) => {\\n const randomPassword = utils.password_generator(10);\\n var tourist = {\\n username: req.body.email,\\n firstname: req.body.firstname,\\n lastname: req.body.lastname,\\n email: req.body.email,\\n mobile: req.body.mobile,\\n role: 'user'\\n };\\n\\n try {\\n Tourists.register(new Tourists(tourist), randomPassword, (err, tourist) => {\\n if (err) {\\n res.statusCode = 403;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: err.message\\n });\\n } else {\\n tourist.save((err, tourist) => {\\n if (err) {\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Error while Saving new user.'\\n });\\n }\\n\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n email: tourist.email,\\n password: randomPassword\\n });\\n });\\n }\\n });\\n } catch (error) {\\n next(err);\\n }\\n};\\n\\nconst deleteAllTourists = (req, res, next) => {\\n Tourists.remove({\\n \\\"role\\\": \\\"user\\\"\\n }).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n response: resp\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nexports.getAllTourists = getAllTourists;\\nexports.getAllTouristsByName = getAllTouristsByName;\\nexports.addTourist = addTourist;\\nexports.deleteAllTourists = deleteAllTourists; // **********************************************************************************\\n// \\n// Tourist Operations Specified by ID\\n// \\n// **********************************************************************************\\n\\nconst getTouristDetailsById = (req, res, next) => {\\n var touristId = req.params.touristId;\\n Tourists.findById(touristId).then(tourist => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n tourist: tourist\\n });\\n }, err => {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Could not find tourist with given ID'\\n });\\n }).catch(err => next(err));\\n};\\n\\nconst updateTouristDetailsById = (req, res, next) => {\\n Tourists.findByIdAndUpdate(req.params.touristId, {\\n $set: req.body\\n }, {\\n new: true\\n }).then(tourist => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n tourist: tourist\\n });\\n }, err => {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Could not find tourist with given ID'\\n });\\n }).catch(err => next(err));\\n};\\n\\nconst deleteATouristById = (req, res, next) => {\\n Tourists.findByIdAndRemove(req.params.touristId).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n response: resp\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nexports.getTouristDetailsById = getTouristDetailsById;\\nexports.updateTouristDetailsById = updateTouristDetailsById;\\nexports.deleteATouristById = deleteATouristById;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRvdXJpc3RDb250cm9sbGVyLmpzIl0sIm5hbWVzIjpbIlRvdXJpc3RzIiwicmVxdWlyZSIsInV0aWxzIiwiZ2V0QWxsVG91cmlzdHMiLCJyZXEiLCJyZXMiLCJuZXh0IiwicXVlcnkiLCJmaW5kIiwidGhlbiIsInRvdXJpc3RzIiwic3RhdHVzQ29kZSIsInNldEhlYWRlciIsImpzb24iLCJzdWNjZXNzIiwiZXJyIiwiY2F0Y2giLCJnZXRBbGxUb3VyaXN0c0J5TmFtZSIsImJvZHkiLCJzaW1pbGFyVG8iLCJzZWFyY2hCeSIsIiR0ZXh0IiwiJHNlYXJjaCIsInNvcnRieSIsInNvcnRCeSIsInNvcnQiLCJhZGRUb3VyaXN0IiwicmFuZG9tUGFzc3dvcmQiLCJwYXNzd29yZF9nZW5lcmF0b3IiLCJ0b3VyaXN0IiwidXNlcm5hbWUiLCJlbWFpbCIsImZpcnN0bmFtZSIsImxhc3RuYW1lIiwibW9iaWxlIiwicm9sZSIsInJlZ2lzdGVyIiwibWVzc2FnZSIsInNhdmUiLCJwYXNzd29yZCIsImVycm9yIiwiZGVsZXRlQWxsVG91cmlzdHMiLCJyZW1vdmUiLCJyZXNwIiwicmVzcG9uc2UiLCJleHBvcnRzIiwiZ2V0VG91cmlzdERldGFpbHNCeUlkIiwidG91cmlzdElkIiwicGFyYW1zIiwiZmluZEJ5SWQiLCJ1cGRhdGVUb3VyaXN0RGV0YWlsc0J5SWQiLCJmaW5kQnlJZEFuZFVwZGF0ZSIsIiRzZXQiLCJuZXciLCJkZWxldGVBVG91cmlzdEJ5SWQiLCJmaW5kQnlJZEFuZFJlbW92ZSJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsUUFBUSxHQUFHQyxPQUFPLENBQUMsaUJBQUQsQ0FBeEI7O0FBQ0EsTUFBTUMsS0FBSyxHQUFHRCxPQUFPLENBQUMsZ0JBQUQsQ0FBckIsQyxDQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBLE1BQU1FLGNBQWMsR0FBRyxDQUFDQyxHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUN2QyxNQUFJQyxLQUFLLEdBQUc7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RUFBRTtBQUEzQixLQUFUO0FBQ0gsR0FYTCxFQVlLckIsS0FaTCxDQVlZRCxHQUFELElBQVNULElBQUksQ0FBQ1MsR0FBRCxDQVp4QjtBQWFILENBZkQ7O0FBaUJBLE1BQU11QyxrQkFBa0IsR0FBRyxDQUFDbEQsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDM0NOLEVBQUFBLFFBQVEsQ0FBQ3VELGlCQUFULENBQTJCbkQsR0FBRyxDQUFDNEMsTUFBSixDQUFXRCxTQUF0QyxFQUNLdEMsSUFETCxDQUNXa0MsSUFBRCxJQUFVO0FBQ1p0QyxJQUFBQSxHQUFHLENBQUNNLFVBQUosR0FBaUIsR0FBakI7QUFDQU4sSUFBQUEsR0FBRyxDQUFDTyxTQUFKLENBQWMsY0FBZCxFQUE4QixrQkFBOUI7QUFDQVAsSUFBQUEsR0FBRyxDQUFDUSxJQUFKLENBQVM7QUFBRUMsTUFBQUEsT0FBTyxFQUFFLElBQVg7QUFBaUI4QixNQUFBQSxRQUFRLEVBQUVEO0FBQTNCLEtBQVQ7QUFDSCxHQUxMLEVBS1E1QixHQUFELElBQVNULElBQUksQ0FBQ1MsR0FBRCxDQUxwQixFQU1LQyxLQU5MLENBTVlELEdBQUQsSUFBU1QsSUFBSSxDQUFDUyxHQUFELENBTnhCO0FBT0gsQ0FSRDs7QUFVQThCLE9BQU8sQ0FBQ0MscUJBQVIsR0FBZ0NBLHFCQUFoQztBQUNBRCxPQUFPLENBQUNLLHdCQUFSLEdBQW1DQSx3QkFBbkM7QUFDQUwsT0FBTyxDQUFDUyxrQkFBUixHQUE2QkEsa0JBQTdCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgVG91cmlzdHMgPSByZXF1aXJlKCcuLi9tb2RlbHMvdXNlcnMnKTtcclxuY29uc3QgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscy91dGlscycpO1xyXG5cclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyBcclxuLy8gICAgICAgICAgICAgIFRvdXJpc3QgT3BlcmF0aW9ucyBcclxuLy8gXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbmNvbnN0IGdldEFsbFRvdXJpc3RzID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICB2YXIgcXVlcnkgPSB7IFwicm9sZVwiOiBcInVzZXJcIiB9O1xyXG4gICAgLy8gdmFyIG9iaiA9IE9iamVjdC5hc3NpZ24ocXVlcnksIHsgJHRleHQ6IHsgJHNlYXJjaDogc2VhcmNoQnkgfSB9KTtcclxuICAgICBUb3VyaXN0cy5maW5kKHF1ZXJ5KVxyXG4gICAgICAgIC50aGVuKCh0b3VyaXN0cykgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCB0b3VyaXN0czogdG91cmlzdHMgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpO1xyXG59XHJcblxyXG5jb25zdCBnZXRBbGxUb3VyaXN0c0J5TmFtZSA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgdmFyIHF1ZXJ5ID0geyBcInJvbGVcIjogXCJ1c2VyXCIgfTtcclxuICAgIGlmIChyZXEuYm9keS5zaW1pbGFyVG8pIHtcclxuICAgICAgICB2YXIgc2VhcmNoQnkgPSByZXEuYm9keS5zaW1pbGFyVG8gfHwge31cclxuICAgICAgICBxdWVyeSA9IHsgXCJyb2xlXCI6IFwidXNlclwiLCAkdGV4dDogeyAkc2VhcmNoOiBzZWFyY2hCeSB9IH1cclxuICAgIH1cclxuXHJcbiAgICB2YXIgc29ydGJ5ID0gcmVxLmJvZHkuc29ydEJ5IHx8IHt9O1xyXG4gICAgVG91cmlzdHMuZmluZChxdWVyeSkuc29ydChzb3J0YnkpXHJcbiAgICAgICAgLnRoZW4oKHRvdXJpc3RzKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHRvdXJpc3RzOiB0b3VyaXN0cyB9KTtcclxuICAgICAgICB9LCAoZXJyKSA9PiBuZXh0KGVycikpXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IG5leHQoZXJyKSk7XHJcbn1cclxuXHJcbmNvbnN0IGFkZFRvdXJpc3QgPSBhc3luYyAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIGNvbnN0IHJhbmRvbVBhc3N3b3JkID0gdXRpbHMucGFzc3dvcmRfZ2VuZXJhdG9yKDEwKTtcclxuICAgIHZhciB0b3VyaXN0ID0ge1xyXG4gICAgICAgIHVzZXJuYW1lOiByZXEuYm9keS5lbWFpbCxcclxuICAgICAgICBmaXJzdG5hbWU6IHJlcS5ib2R5LmZpcnN0bmFtZSxcclxuICAgICAgICBsYXN0bmFtZTogcmVxLmJvZHkubGFzdG5hbWUsXHJcbiAgICAgICAgZW1haWw6IHJlcS5ib2R5LmVtYWlsLFxyXG4gICAgICAgIG1vYmlsZTogcmVxLmJvZHkubW9iaWxlLFxyXG4gICAgICAgIHJvbGU6ICd1c2VyJ1xyXG4gICAgfVxyXG4gICAgdHJ5IHtcclxuICAgICAgICBUb3VyaXN0cy5yZWdpc3RlcihuZXcgVG91cmlzdHModG91cmlzdCksXHJcbiAgICAgICAgICAgIHJhbmRvbVBhc3N3b3JkLCAoZXJyLCB0b3VyaXN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IGZhbHNlLCBtZXNzYWdlOiBlcnIubWVzc2FnZSB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRvdXJpc3Quc2F2ZSgoZXJyLCB0b3VyaXN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNTAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IGZhbHNlLCBtZXNzYWdlOiAnRXJyb3Igd2hpbGUgU2F2aW5nIG5ldyB1c2VyLicgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgZW1haWw6IHRvdXJpc3QuZW1haWwsIHBhc3N3b3JkOiByYW5kb21QYXNzd29yZCB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgbmV4dChlcnIpO1xyXG4gICAgfVxyXG59XHJcblxyXG5jb25zdCBkZWxldGVBbGxUb3VyaXN0cyA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgVG91cmlzdHMucmVtb3ZlKHsgXCJyb2xlXCI6IFwidXNlclwiIH0pXHJcbiAgICAgICAgLnRoZW4oKHJlc3ApID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgcmVzcG9uc2U6IHJlc3AgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpO1xyXG59XHJcblxyXG5leHBvcnRzLmdldEFsbFRvdXJpc3RzID0gZ2V0QWxsVG91cmlzdHM7XHJcbmV4cG9ydHMuZ2V0QWxsVG91cmlzdHNCeU5hbWUgPSBnZXRBbGxUb3VyaXN0c0J5TmFtZTtcclxuZXhwb3J0cy5hZGRUb3VyaXN0ID0gYWRkVG91cmlzdDtcclxuZXhwb3J0cy5kZWxldGVBbGxUb3VyaXN0cyA9IGRlbGV0ZUFsbFRvdXJpc3RzO1xyXG5cclxuXHJcblxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbi8vIFxyXG4vLyAgICAgICAgICAgICAgVG91cmlzdCBPcGVyYXRpb25zIFNwZWNpZmllZCBieSBJRFxyXG4vLyBcclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuY29uc3QgZ2V0VG91cmlzdERldGFpbHNCeUlkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICB2YXIgdG91cmlzdElkID0gcmVxLnBhcmFtcy50b3VyaXN0SWQ7XHJcbiAgICBUb3VyaXN0cy5maW5kQnlJZCh0b3VyaXN0SWQpXHJcbiAgICAgICAgLnRoZW4oKHRvdXJpc3QpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgdG91cmlzdDogdG91cmlzdCB9KTtcclxuICAgICAgICB9LCAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNDA0O1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IGZhbHNlLCBtZXNzYWdlOiAnQ291bGQgbm90IGZpbmQgdG91cmlzdCB3aXRoIGdpdmVuIElEJyB9KTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpOyBcclxufVxyXG5cclxuY29uc3QgdXBkYXRlVG91cmlzdERldGFpbHNCeUlkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICBcclxuICAgIFRvdXJpc3RzLmZpbmRCeUlkQW5kVXBkYXRlKHJlcS5wYXJhbXMudG91cmlzdElkLCB7XHJcbiAgICAgICAgJHNldDogcmVxLmJvZHlcclxuICAgIH0sIHsgbmV3OiB0cnVlIH0pXHJcbiAgICAgICAgLnRoZW4oKHRvdXJpc3QpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgdG91cmlzdDogdG91cmlzdCB9KTtcclxuICAgICAgICB9LCAoZXJyKSA9PiAge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwNDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogJ0NvdWxkIG5vdCBmaW5kIHRvdXJpc3Qgd2l0aCBnaXZlbiBJRCcgfSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuY29uc3QgZGVsZXRlQVRvdXJpc3RCeUlkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICBUb3VyaXN0cy5maW5kQnlJZEFuZFJlbW92ZShyZXEucGFyYW1zLnRvdXJpc3RJZClcclxuICAgICAgICAudGhlbigocmVzcCkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCByZXNwb25zZTogcmVzcCB9KTtcclxuICAgICAgICB9LCAoZXJyKSA9PiBuZXh0KGVycikpXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IG5leHQoZXJyKSk7XHJcbn1cclxuXHJcbmV4cG9ydHMuZ2V0VG91cmlzdERldGFpbHNCeUlkID0gZ2V0VG91cmlzdERldGFpbHNCeUlkO1xyXG5leHBvcnRzLnVwZGF0ZVRvdXJpc3REZXRhaWxzQnlJZCA9IHVwZGF0ZVRvdXJpc3REZXRhaWxzQnlJZDtcclxuZXhwb3J0cy5kZWxldGVBVG91cmlzdEJ5SWQgPSBkZWxldGVBVG91cmlzdEJ5SWQ7XHJcblxyXG5cclxuIl19\",\"originalCode\":\"const Tourists = require('../models/users');\\r\\nconst utils = require('../utils/utils');\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Tourist Operations \\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nconst getAllTourists = (req, res, next) => {\\r\\n var query = { \\\"role\\\": \\\"user\\\" };\\r\\n // var obj = Object.assign(query, { $text: { $search: searchBy } });\\r\\n Tourists.find(query)\\r\\n .then((tourists) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, tourists: tourists });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst getAllTouristsByName = (req, res, next) => {\\r\\n var query = { \\\"role\\\": \\\"user\\\" };\\r\\n if (req.body.similarTo) {\\r\\n var searchBy = req.body.similarTo || {}\\r\\n query = { \\\"role\\\": \\\"user\\\", $text: { $search: searchBy } }\\r\\n }\\r\\n\\r\\n var sortby = req.body.sortBy || {};\\r\\n Tourists.find(query).sort(sortby)\\r\\n .then((tourists) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, tourists: tourists });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst addTourist = async (req, res, next) => {\\r\\n const randomPassword = utils.password_generator(10);\\r\\n var tourist = {\\r\\n username: req.body.email,\\r\\n firstname: req.body.firstname,\\r\\n lastname: req.body.lastname,\\r\\n email: req.body.email,\\r\\n mobile: req.body.mobile,\\r\\n role: 'user'\\r\\n }\\r\\n try {\\r\\n Tourists.register(new Tourists(tourist),\\r\\n randomPassword, (err, tourist) => {\\r\\n if (err) {\\r\\n res.statusCode = 403;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: err.message });\\r\\n }\\r\\n else {\\r\\n tourist.save((err, tourist) => {\\r\\n if (err) {\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Error while Saving new user.' });\\r\\n }\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, email: tourist.email, password: randomPassword });\\r\\n });\\r\\n }\\r\\n });\\r\\n } catch (error) {\\r\\n next(err);\\r\\n }\\r\\n}\\r\\n\\r\\nconst deleteAllTourists = (req, res, next) => {\\r\\n Tourists.remove({ \\\"role\\\": \\\"user\\\" })\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, response: resp });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nexports.getAllTourists = getAllTourists;\\r\\nexports.getAllTouristsByName = getAllTouristsByName;\\r\\nexports.addTourist = addTourist;\\r\\nexports.deleteAllTourists = deleteAllTourists;\\r\\n\\r\\n\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Tourist Operations Specified by ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nconst getTouristDetailsById = (req, res, next) => {\\r\\n var touristId = req.params.touristId;\\r\\n Tourists.findById(touristId)\\r\\n .then((tourist) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, tourist: tourist });\\r\\n }, (err) => {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Could not find tourist with given ID' });\\r\\n })\\r\\n .catch((err) => next(err)); \\r\\n}\\r\\n\\r\\nconst updateTouristDetailsById = (req, res, next) => {\\r\\n \\r\\n Tourists.findByIdAndUpdate(req.params.touristId, {\\r\\n $set: req.body\\r\\n }, { new: true })\\r\\n .then((tourist) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, tourist: tourist });\\r\\n }, (err) => {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Could not find tourist with given ID' });\\r\\n })\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst deleteATouristById = (req, res, next) => {\\r\\n Tourists.findByIdAndRemove(req.params.touristId)\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, response: resp });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nexports.getTouristDetailsById = getTouristDetailsById;\\r\\nexports.updateTouristDetailsById = updateTouristDetailsById;\\r\\nexports.deleteATouristById = deleteATouristById;\\r\\n\\r\\n\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/ff/touristController_ff3455758448d6e0c4e2be11f313067b.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2546\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\touristController.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":20391,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":20388,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"getAllTourists\",\"ranges\":[{\"startOffset\":417,\"endOffset\":790,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getAllTouristsByName\",\"ranges\":[{\"startOffset\":822,\"endOffset\":1347,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"addTourist\",\"ranges\":[{\"startOffset\":1369,\"endOffset\":2534,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"deleteAllTourists\",\"ranges\":[{\"startOffset\":2563,\"endOffset\":2839,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getTouristDetailsById\",\"ranges\":[{\"startOffset\":3278,\"endOffset\":3762,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"updateTouristDetailsById\",\"ranges\":[{\"startOffset\":3798,\"endOffset\":4309,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"deleteATouristById\",\"ranges\":[{\"startOffset\":4339,\"endOffset\":4622,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const express = require('express');\\n\\nconst bodyParser = require('body-parser');\\n\\nconst cors = require('./cors');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nconst dashboardController = require('../controllers/dashboardController');\\n\\nconst dashboardRouter = express.Router();\\ndashboardRouter.use(bodyParser.json());\\ndashboardRouter.route('/admin').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, authenticate.verifyAdmin, dashboardController.getDashboard);\\nmodule.exports = dashboardRouter;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRhc2hib2FyZFJvdXRlci5qcyJdLCJuYW1lcyI6WyJleHByZXNzIiwicmVxdWlyZSIsImJvZHlQYXJzZXIiLCJjb3JzIiwiYXV0aGVudGljYXRlIiwiZGFzaGJvYXJkQ29udHJvbGxlciIsImRhc2hib2FyZFJvdXRlciIsIlJvdXRlciIsInVzZSIsImpzb24iLCJyb3V0ZSIsIm9wdGlvbnMiLCJjb3JzV2l0aE9wdGlvbnMiLCJyZXEiLCJyZXMiLCJzZW5kU3RhdHVzIiwiZ2V0IiwidmVyaWZ5VXNlciIsInZlcmlmeUFkbWluIiwiZ2V0RGFzaGJvYXJkIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsT0FBTyxHQUFHQyxPQUFPLENBQUMsU0FBRCxDQUF2Qjs7QUFDQSxNQUFNQyxVQUFVLEdBQUdELE9BQU8sQ0FBQyxhQUFELENBQTFCOztBQUVBLE1BQU1FLElBQUksR0FBR0YsT0FBTyxDQUFDLFFBQUQsQ0FBcEI7O0FBQ0EsSUFBSUcsWUFBWSxHQUFHSCxPQUFPLENBQUMsNEJBQUQsQ0FBMUI7O0FBQ0EsTUFBTUksbUJBQW1CLEdBQUdKLE9BQU8sQ0FBQyxvQ0FBRCxDQUFuQzs7QUFFQSxNQUFNSyxlQUFlLEdBQUdOLE9BQU8sQ0FBQ08sTUFBUixFQUF4QjtBQUVBRCxlQUFlLENBQUNFLEdBQWhCLENBQW9CTixVQUFVLENBQUNPLElBQVgsRUFBcEI7QUFFQUgsZUFBZSxDQUFDSSxLQUFoQixDQUFzQixRQUF0QixFQUNLQyxPQURMLENBQ2FSLElBQUksQ0FBQ1MsZUFEbEIsRUFDbUMsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEtBQWM7QUFBRUEsRUFBQUEsR0FBRyxDQUFDQyxVQUFKLENBQWUsR0FBZjtBQUFzQixDQUR6RSxFQUVLQyxHQUZMLENBRVNiLElBQUksQ0FBQ0EsSUFGZCxFQUVtQkMsWUFBWSxDQUFDYSxVQUZoQyxFQUU0Q2IsWUFBWSxDQUFDYyxXQUZ6RCxFQUVzRWIsbUJBQW1CLENBQUNjLFlBRjFGO0FBSUFDLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQmYsZUFBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBleHByZXNzID0gcmVxdWlyZSgnZXhwcmVzcycpO1xyXG5jb25zdCBib2R5UGFyc2VyID0gcmVxdWlyZSgnYm9keS1wYXJzZXInKTtcclxuXHJcbmNvbnN0IGNvcnMgPSByZXF1aXJlKCcuL2NvcnMnKTtcclxudmFyIGF1dGhlbnRpY2F0ZSA9IHJlcXVpcmUoJy4uL21pZGRsZXdhcmUvYXV0aGVudGljYXRlJyk7XHJcbmNvbnN0IGRhc2hib2FyZENvbnRyb2xsZXIgPSByZXF1aXJlKCcuLi9jb250cm9sbGVycy9kYXNoYm9hcmRDb250cm9sbGVyJyk7XHJcblxyXG5jb25zdCBkYXNoYm9hcmRSb3V0ZXIgPSBleHByZXNzLlJvdXRlcigpO1xyXG5cclxuZGFzaGJvYXJkUm91dGVyLnVzZShib2R5UGFyc2VyLmpzb24oKSk7XHJcblxyXG5kYXNoYm9hcmRSb3V0ZXIucm91dGUoJy9hZG1pbicpXHJcbiAgICAub3B0aW9ucyhjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcbiAgICAuZ2V0KGNvcnMuY29ycyxhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeUFkbWluLCBkYXNoYm9hcmRDb250cm9sbGVyLmdldERhc2hib2FyZCk7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IGRhc2hib2FyZFJvdXRlcjsiXX0=\",\"originalCode\":\"const express = require('express');\\r\\nconst bodyParser = require('body-parser');\\r\\n\\r\\nconst cors = require('./cors');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\nconst dashboardController = require('../controllers/dashboardController');\\r\\n\\r\\nconst dashboardRouter = express.Router();\\r\\n\\r\\ndashboardRouter.use(bodyParser.json());\\r\\n\\r\\ndashboardRouter.route('/admin')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors,authenticate.verifyUser, authenticate.verifyAdmin, dashboardController.getDashboard);\\r\\n\\r\\nmodule.exports = dashboardRouter;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/07/dashboardRouter_0791a49f2f45fc0f57ade98f27175c5c.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2547\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\dashboardRouter.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":2824,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":2821,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":482,\"endOffset\":522,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const Place = require('../models/visitingPlaces');\\n\\nconst User = require('../models/users');\\n\\nconst Schedule = require('../models/schedules');\\n\\nexports.getDashboard = async (req, res, next) => {\\n try {\\n const users_count = (await User.find().countDocuments()) - 1;\\n const tourist_count_total = await User.find({\\n \\\"role\\\": \\\"user\\\"\\n }).countDocuments();\\n const assistant_count_total = await User.find({\\n \\\"role\\\": \\\"moderater\\\"\\n }).countDocuments();\\n const tourist_count_in = await User.find({\\n \\\"role\\\": \\\"user\\\",\\n \\\"userstate\\\": \\\"in\\\"\\n }).countDocuments();\\n const place_count = await Place.find().countDocuments();\\n const place_names = await Place.find({}, {\\n _id: 0,\\n name: 1\\n });\\n const place_locations = await Place.find({}, {\\n _id: 0,\\n \\\"location.coordinates\\\": 1\\n });\\n var locations = [];\\n place_locations.forEach(element => {\\n var longitude = element.location.coordinates[0];\\n var latitude = element.location.coordinates[1];\\n locations.push({\\n longitude,\\n latitude\\n });\\n });\\n const schedules_count_total = await Schedule.find().countDocuments();\\n const schedules_count_new = await Schedule.find({\\n \\\"state\\\": \\\"new\\\"\\n }).countDocuments();\\n const schedules_count_canceled = await Schedule.find({\\n \\\"state\\\": \\\"cancled\\\"\\n }).countDocuments();\\n const schedules_count_notcompleted = await Schedule.find({\\n \\\"state\\\": \\\"notcompleted\\\"\\n }).countDocuments();\\n const schedules_count_completed = await Schedule.find({\\n \\\"state\\\": \\\"completed\\\"\\n }).countDocuments();\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n dashboardValues: {\\n users_count: users_count,\\n tourist_count_total: tourist_count_total,\\n assistant_count_total: assistant_count_total,\\n tourist_count_in: tourist_count_in,\\n place_count: place_count,\\n place_names: place_names,\\n place_locations: locations,\\n schedules_count_total: schedules_count_total,\\n schedules_count_new: schedules_count_new,\\n schedules_count_canceled: schedules_count_canceled,\\n schedules_count_notcompleted: schedules_count_notcompleted,\\n schedules_count_completed: schedules_count_completed\\n }\\n });\\n } catch (err) {\\n next(err);\\n }\\n};\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRhc2hib2FyZENvbnRyb2xsZXIuanMiXSwibmFtZXMiOlsiUGxhY2UiLCJyZXF1aXJlIiwiVXNlciIsIlNjaGVkdWxlIiwiZXhwb3J0cyIsImdldERhc2hib2FyZCIsInJlcSIsInJlcyIsIm5leHQiLCJ1c2Vyc19jb3VudCIsImZpbmQiLCJjb3VudERvY3VtZW50cyIsInRvdXJpc3RfY291bnRfdG90YWwiLCJhc3Npc3RhbnRfY291bnRfdG90YWwiLCJ0b3VyaXN0X2NvdW50X2luIiwicGxhY2VfY291bnQiLCJwbGFjZV9uYW1lcyIsIl9pZCIsIm5hbWUiLCJwbGFjZV9sb2NhdGlvbnMiLCJsb2NhdGlvbnMiLCJmb3JFYWNoIiwiZWxlbWVudCIsImxvbmdpdHVkZSIsImxvY2F0aW9uIiwiY29vcmRpbmF0ZXMiLCJsYXRpdHVkZSIsInB1c2giLCJzY2hlZHVsZXNfY291bnRfdG90YWwiLCJzY2hlZHVsZXNfY291bnRfbmV3Iiwic2NoZWR1bGVzX2NvdW50X2NhbmNlbGVkIiwic2NoZWR1bGVzX2NvdW50X25vdGNvbXBsZXRlZCIsInNjaGVkdWxlc19jb3VudF9jb21wbGV0ZWQiLCJzdGF0dXNDb2RlIiwic2V0SGVhZGVyIiwianNvbiIsInN1Y2Nlc3MiLCJkYXNoYm9hcmRWYWx1ZXMiLCJlcnIiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLEtBQUssR0FBR0MsT0FBTyxDQUFDLDBCQUFELENBQXJCOztBQUNBLE1BQU1DLElBQUksR0FBR0QsT0FBTyxDQUFDLGlCQUFELENBQXBCOztBQUNBLE1BQU1FLFFBQVEsR0FBR0YsT0FBTyxDQUFDLHFCQUFELENBQXhCOztBQUVBRyxPQUFPLENBQUNDLFlBQVIsR0FBdUIsT0FBT0MsR0FBUCxFQUFZQyxHQUFaLEVBQWlCQyxJQUFqQixLQUEwQjtBQUM3QyxNQUFJO0FBQ0EsVUFBTUMsV0FBVyxHQUFHLE9BQU1QLElBQUksQ0FBQ1EsSUFBTCxHQUFZQyxjQUFaLEVBQU4sSUFBcUMsQ0FBekQ7QUFDQSxVQUFNQyxtQkFBbUIsR0FBRyxNQUFNVixJQUFJLENBQUNRLElBQUwsQ0FBVTtBQUFFLGNBQVE7QUFBVixLQUFWLEVBQThCQyxjQUE5QixFQUFsQztBQUNBLFVBQU1FLHFCQUFxQixHQUFHLE1BQU1YLElBQUksQ0FBQ1EsSUFBTCxDQUFVO0FBQUUsY0FBUTtBQUFWLEtBQVYsRUFBbUNDLGNBQW5DLEVBQXBDO0FBQ0EsVUFBTUcsZ0JBQWdCLEdBQUcsTUFBTVosSUFBSSxDQUFDUSxJQUFMLENBQVU7QUFBRSxjQUFRLE1BQVY7QUFBa0IsbUJBQWE7QUFBL0IsS0FBVixFQUFpREMsY0FBakQsRUFBL0I7QUFDQSxVQUFNSSxXQUFXLEdBQUcsTUFBTWYsS0FBSyxDQUFDVSxJQUFOLEdBQWFDLGNBQWIsRUFBMUI7QUFDQSxVQUFNSyxXQUFXLEdBQUcsTUFBTWhCLEtBQUssQ0FBQ1UsSUFBTixDQUFXLEVBQVgsRUFBZTtBQUFFTyxNQUFBQSxHQUFHLEVBQUUsQ0FBUDtBQUFVQyxNQUFBQSxJQUFJLEVBQUU7QUFBaEIsS0FBZixDQUExQjtBQUNBLFVBQU1DLGVBQWUsR0FBRyxNQUFNbkIsS0FBSyxDQUFDVSxJQUFOLENBQVcsRUFBWCxFQUFlO0FBQUVPLE1BQUFBLEdBQUcsRUFBRSxDQUFQO0FBQVUsOEJBQXdCO0FBQWxDLEtBQWYsQ0FBOUI7QUFDQSxRQUFJRyxTQUFTLEdBQUcsRUFBaEI7QUFDQUQsSUFBQUEsZUFBZSxDQUFDRSxPQUFoQixDQUF3QkMsT0FBTyxJQUFJO0FBQy9CLFVBQUlDLFNBQVMsR0FBR0QsT0FBTyxDQUFDRSxRQUFSLENBQWlCQyxXQUFqQixDQUE2QixDQUE3QixDQUFoQjtBQUNBLFVBQUlDLFFBQVEsR0FBR0osT0FBTyxDQUFDRSxRQUFSLENBQWlCQyxXQUFqQixDQUE2QixDQUE3QixDQUFmO0FBQ0FMLE1BQUFBLFNBQVMsQ0FBQ08sSUFBVixDQUFlO0FBQUVKLFFBQUFBLFNBQUY7QUFBYUcsUUFBQUE7QUFBYixPQUFmO0FBQ0gsS0FKRDtBQUtBLFVBQU1FLHFCQUFxQixHQUFHLE1BQU16QixRQUFRLENBQUNPLElBQVQsR0FBZ0JDLGNBQWhCLEVBQXBDO0FBQ0EsVUFBTWtCLG1CQUFtQixHQUFHLE1BQU0xQixRQUFRLENBQUNPLElBQVQsQ0FBYztBQUFFLGVBQVM7QUFBWCxLQUFkLEVBQWtDQyxjQUFsQyxFQUFsQztBQUNBLFVBQU1tQix3QkFBd0IsR0FBRyxNQUFNM0IsUUFBUSxDQUFDTyxJQUFULENBQWM7QUFBRSxlQUFTO0FBQVgsS0FBZCxFQUFzQ0MsY0FBdEMsRUFBdkM7QUFDQSxVQUFNb0IsNEJBQTRCLEdBQUcsTUFBTTVCLFFBQVEsQ0FBQ08sSUFBVCxDQUFjO0FBQUUsZUFBUztBQUFYLEtBQWQsRUFBMkNDLGNBQTNDLEVBQTNDO0FBQ0EsVUFBTXFCLHlCQUF5QixHQUFHLE1BQU03QixRQUFRLENBQUNPLElBQVQsQ0FBYztBQUFFLGVBQVM7QUFBWCxLQUFkLEVBQXdDQyxjQUF4QyxFQUF4QztBQUVBSixJQUFBQSxHQUFHLENBQUMwQixVQUFKLEdBQWlCLEdBQWpCO0FBQ0ExQixJQUFBQSxHQUFHLENBQUMyQixTQUFKLENBQWMsY0FBZCxFQUE4QixrQkFBOUI7QUFDQTNCLElBQUFBLEdBQUcsQ0FBQzRCLElBQUosQ0FBUztBQUNMQyxNQUFBQSxPQUFPLEVBQUUsSUFESjtBQUNVQyxNQUFBQSxlQUFlLEVBQUU7QUFDNUI1QixRQUFBQSxXQUFXLEVBQUVBLFdBRGU7QUFFNUJHLFFBQUFBLG1CQUFtQixFQUFFQSxtQkFGTztBQUc1QkMsUUFBQUEscUJBQXFCLEVBQUVBLHFCQUhLO0FBSTVCQyxRQUFBQSxnQkFBZ0IsRUFBRUEsZ0JBSlU7QUFLNUJDLFFBQUFBLFdBQVcsRUFBRUEsV0FMZTtBQU01QkMsUUFBQUEsV0FBVyxFQUFFQSxXQU5lO0FBTzVCRyxRQUFBQSxlQUFlLEVBQUVDLFNBUFc7QUFRNUJRLFFBQUFBLHFCQUFxQixFQUFFQSxxQkFSSztBQVM1QkMsUUFBQUEsbUJBQW1CLEVBQUVBLG1CQVRPO0FBVTVCQyxRQUFBQSx3QkFBd0IsRUFBRUEsd0JBVkU7QUFXNUJDLFFBQUFBLDRCQUE0QixFQUFFQSw0QkFYRjtBQVk1QkMsUUFBQUEseUJBQXlCLEVBQUVBO0FBWkM7QUFEM0IsS0FBVDtBQWdCSCxHQXRDRCxDQXNDRSxPQUFPTSxHQUFQLEVBQVk7QUFDVjlCLElBQUFBLElBQUksQ0FBQzhCLEdBQUQsQ0FBSjtBQUNIO0FBQ0osQ0ExQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBQbGFjZSA9IHJlcXVpcmUoJy4uL21vZGVscy92aXNpdGluZ1BsYWNlcycpO1xyXG5jb25zdCBVc2VyID0gcmVxdWlyZSgnLi4vbW9kZWxzL3VzZXJzJyk7XHJcbmNvbnN0IFNjaGVkdWxlID0gcmVxdWlyZSgnLi4vbW9kZWxzL3NjaGVkdWxlcycpO1xyXG5cclxuZXhwb3J0cy5nZXREYXNoYm9hcmQgPSBhc3luYyAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgICAgY29uc3QgdXNlcnNfY291bnQgPSBhd2FpdCBVc2VyLmZpbmQoKS5jb3VudERvY3VtZW50cygpIC0gMTtcclxuICAgICAgICBjb25zdCB0b3VyaXN0X2NvdW50X3RvdGFsID0gYXdhaXQgVXNlci5maW5kKHsgXCJyb2xlXCI6IFwidXNlclwiIH0pLmNvdW50RG9jdW1lbnRzKCk7XHJcbiAgICAgICAgY29uc3QgYXNzaXN0YW50X2NvdW50X3RvdGFsID0gYXdhaXQgVXNlci5maW5kKHsgXCJyb2xlXCI6IFwibW9kZXJhdGVyXCIgfSkuY291bnREb2N1bWVudHMoKTtcclxuICAgICAgICBjb25zdCB0b3VyaXN0X2NvdW50X2luID0gYXdhaXQgVXNlci5maW5kKHsgXCJyb2xlXCI6IFwidXNlclwiLCBcInVzZXJzdGF0ZVwiOiBcImluXCIgfSkuY291bnREb2N1bWVudHMoKTtcclxuICAgICAgICBjb25zdCBwbGFjZV9jb3VudCA9IGF3YWl0IFBsYWNlLmZpbmQoKS5jb3VudERvY3VtZW50cygpO1xyXG4gICAgICAgIGNvbnN0IHBsYWNlX25hbWVzID0gYXdhaXQgUGxhY2UuZmluZCh7fSwgeyBfaWQ6IDAsIG5hbWU6IDEgfSk7XHJcbiAgICAgICAgY29uc3QgcGxhY2VfbG9jYXRpb25zID0gYXdhaXQgUGxhY2UuZmluZCh7fSwgeyBfaWQ6IDAsIFwibG9jYXRpb24uY29vcmRpbmF0ZXNcIjogMSB9KTtcclxuICAgICAgICB2YXIgbG9jYXRpb25zID0gW107XHJcbiAgICAgICAgcGxhY2VfbG9jYXRpb25zLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICAgIHZhciBsb25naXR1ZGUgPSBlbGVtZW50LmxvY2F0aW9uLmNvb3JkaW5hdGVzWzBdO1xyXG4gICAgICAgICAgICB2YXIgbGF0aXR1ZGUgPSBlbGVtZW50LmxvY2F0aW9uLmNvb3JkaW5hdGVzWzFdO1xyXG4gICAgICAgICAgICBsb2NhdGlvbnMucHVzaCh7IGxvbmdpdHVkZSwgbGF0aXR1ZGUgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgY29uc3Qgc2NoZWR1bGVzX2NvdW50X3RvdGFsID0gYXdhaXQgU2NoZWR1bGUuZmluZCgpLmNvdW50RG9jdW1lbnRzKCk7XHJcbiAgICAgICAgY29uc3Qgc2NoZWR1bGVzX2NvdW50X25ldyA9IGF3YWl0IFNjaGVkdWxlLmZpbmQoeyBcInN0YXRlXCI6IFwibmV3XCIgfSkuY291bnREb2N1bWVudHMoKTtcclxuICAgICAgICBjb25zdCBzY2hlZHVsZXNfY291bnRfY2FuY2VsZWQgPSBhd2FpdCBTY2hlZHVsZS5maW5kKHsgXCJzdGF0ZVwiOiBcImNhbmNsZWRcIiB9KS5jb3VudERvY3VtZW50cygpO1xyXG4gICAgICAgIGNvbnN0IHNjaGVkdWxlc19jb3VudF9ub3Rjb21wbGV0ZWQgPSBhd2FpdCBTY2hlZHVsZS5maW5kKHsgXCJzdGF0ZVwiOiBcIm5vdGNvbXBsZXRlZFwiIH0pLmNvdW50RG9jdW1lbnRzKCk7XHJcbiAgICAgICAgY29uc3Qgc2NoZWR1bGVzX2NvdW50X2NvbXBsZXRlZCA9IGF3YWl0IFNjaGVkdWxlLmZpbmQoeyBcInN0YXRlXCI6IFwiY29tcGxldGVkXCIgfSkuY291bnREb2N1bWVudHMoKTtcclxuXHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICByZXMuanNvbih7XHJcbiAgICAgICAgICAgIHN1Y2Nlc3M6IHRydWUsIGRhc2hib2FyZFZhbHVlczoge1xyXG4gICAgICAgICAgICAgICAgdXNlcnNfY291bnQ6IHVzZXJzX2NvdW50LFxyXG4gICAgICAgICAgICAgICAgdG91cmlzdF9jb3VudF90b3RhbDogdG91cmlzdF9jb3VudF90b3RhbCxcclxuICAgICAgICAgICAgICAgIGFzc2lzdGFudF9jb3VudF90b3RhbDogYXNzaXN0YW50X2NvdW50X3RvdGFsLFxyXG4gICAgICAgICAgICAgICAgdG91cmlzdF9jb3VudF9pbjogdG91cmlzdF9jb3VudF9pbixcclxuICAgICAgICAgICAgICAgIHBsYWNlX2NvdW50OiBwbGFjZV9jb3VudCxcclxuICAgICAgICAgICAgICAgIHBsYWNlX25hbWVzOiBwbGFjZV9uYW1lcyxcclxuICAgICAgICAgICAgICAgIHBsYWNlX2xvY2F0aW9uczogbG9jYXRpb25zLFxyXG4gICAgICAgICAgICAgICAgc2NoZWR1bGVzX2NvdW50X3RvdGFsOiBzY2hlZHVsZXNfY291bnRfdG90YWwsXHJcbiAgICAgICAgICAgICAgICBzY2hlZHVsZXNfY291bnRfbmV3OiBzY2hlZHVsZXNfY291bnRfbmV3LFxyXG4gICAgICAgICAgICAgICAgc2NoZWR1bGVzX2NvdW50X2NhbmNlbGVkOiBzY2hlZHVsZXNfY291bnRfY2FuY2VsZWQsXHJcbiAgICAgICAgICAgICAgICBzY2hlZHVsZXNfY291bnRfbm90Y29tcGxldGVkOiBzY2hlZHVsZXNfY291bnRfbm90Y29tcGxldGVkLFxyXG4gICAgICAgICAgICAgICAgc2NoZWR1bGVzX2NvdW50X2NvbXBsZXRlZDogc2NoZWR1bGVzX2NvdW50X2NvbXBsZXRlZFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICBuZXh0KGVycik7XHJcbiAgICB9XHJcbn1cclxuXHJcbiJdfQ==\",\"originalCode\":\"const Place = require('../models/visitingPlaces');\\r\\nconst User = require('../models/users');\\r\\nconst Schedule = require('../models/schedules');\\r\\n\\r\\nexports.getDashboard = async (req, res, next) => {\\r\\n try {\\r\\n const users_count = await User.find().countDocuments() - 1;\\r\\n const tourist_count_total = await User.find({ \\\"role\\\": \\\"user\\\" }).countDocuments();\\r\\n const assistant_count_total = await User.find({ \\\"role\\\": \\\"moderater\\\" }).countDocuments();\\r\\n const tourist_count_in = await User.find({ \\\"role\\\": \\\"user\\\", \\\"userstate\\\": \\\"in\\\" }).countDocuments();\\r\\n const place_count = await Place.find().countDocuments();\\r\\n const place_names = await Place.find({}, { _id: 0, name: 1 });\\r\\n const place_locations = await Place.find({}, { _id: 0, \\\"location.coordinates\\\": 1 });\\r\\n var locations = [];\\r\\n place_locations.forEach(element => {\\r\\n var longitude = element.location.coordinates[0];\\r\\n var latitude = element.location.coordinates[1];\\r\\n locations.push({ longitude, latitude });\\r\\n });\\r\\n const schedules_count_total = await Schedule.find().countDocuments();\\r\\n const schedules_count_new = await Schedule.find({ \\\"state\\\": \\\"new\\\" }).countDocuments();\\r\\n const schedules_count_canceled = await Schedule.find({ \\\"state\\\": \\\"cancled\\\" }).countDocuments();\\r\\n const schedules_count_notcompleted = await Schedule.find({ \\\"state\\\": \\\"notcompleted\\\" }).countDocuments();\\r\\n const schedules_count_completed = await Schedule.find({ \\\"state\\\": \\\"completed\\\" }).countDocuments();\\r\\n\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({\\r\\n success: true, dashboardValues: {\\r\\n users_count: users_count,\\r\\n tourist_count_total: tourist_count_total,\\r\\n assistant_count_total: assistant_count_total,\\r\\n tourist_count_in: tourist_count_in,\\r\\n place_count: place_count,\\r\\n place_names: place_names,\\r\\n place_locations: locations,\\r\\n schedules_count_total: schedules_count_total,\\r\\n schedules_count_new: schedules_count_new,\\r\\n schedules_count_canceled: schedules_count_canceled,\\r\\n schedules_count_notcompleted: schedules_count_notcompleted,\\r\\n schedules_count_completed: schedules_count_completed\\r\\n }\\r\\n });\\r\\n } catch (err) {\\r\\n next(err);\\r\\n }\\r\\n}\\r\\n\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/34/dashboardController_34872bbac017cfae6fcc33926d204118.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2548\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\dashboardController.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":9854,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":9851,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"Object.
.exports.getDashboard\",\"ranges\":[{\"startOffset\":256,\"endOffset\":2463,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const app = require('../../app');\\n\\nconst server = require(\\\"supertest\\\")(app);\\n\\nconst jwt_decode = require('jwt-decode');\\n\\nconst Users = require('../../models/users');\\n\\nvar userToken;\\nvar assistantToken;\\nvar adminToken;\\nvar passwordAssistant;\\nvar passwordUser;\\nconst admin = {\\n \\\"firstname\\\": \\\"Admin\\\",\\n \\\"lastname\\\": \\\"Admin\\\",\\n \\\"email\\\": \\\"admin@gmail.com\\\",\\n \\\"password\\\": \\\"admin-password\\\"\\n};\\nconst assistant = {\\n \\\"firstname\\\": \\\"Pasan\\\",\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\n \\\"email\\\": \\\"pasanFernamdo@gmail.com\\\"\\n};\\nconst tourist = {\\n \\\"firstname\\\": \\\"Sunil\\\",\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\n \\\"email\\\": \\\"sunilFernamdo@gmail.com\\\"\\n};\\n\\nconst signupAdmin = async () => {\\n await Users.deleteMany({});\\n await server.post(\\\"/users/signup/admin\\\").send(admin);\\n};\\n\\nconst getAdminToken = async () => {\\n if (adminToken) {\\n return adminToken;\\n }\\n\\n await signupAdmin();\\n var creds = {\\n username: admin.email,\\n password: admin.password\\n };\\n const response = await server.post(\\\"/users/login\\\").send(creds);\\n adminToken = response.body.token;\\n return adminToken;\\n};\\n\\nconst addAssistant = async () => {\\n if (!adminToken) {\\n await getAdminToken();\\n }\\n\\n const response = await server.post(\\\"/employees\\\").set(\\\"Authorization\\\", `Bearer ${adminToken}`).send(assistant).expect(200);\\n passwordAssistant = response.body.password;\\n};\\n\\nconst getAssistantToken = async () => {\\n if (assistantToken) {\\n return assistantToken;\\n }\\n\\n if (passwordAssistant == null) {\\n await addAssistant();\\n }\\n\\n var creds = {\\n username: assistant.email,\\n password: passwordAssistant\\n };\\n const response = await server.post(\\\"/users/login\\\").send(creds);\\n assistantToken = response.body.token;\\n return assistantToken;\\n};\\n\\nconst addTourist = async () => {\\n if (!assistantToken) {\\n await getAssistantToken();\\n }\\n\\n const response = await server.post(\\\"/tourists\\\").set(\\\"Authorization\\\", `Bearer ${assistantToken}`).send(tourist).expect(200);\\n passwordUser = response.body.password;\\n};\\n\\nconst getTouristToken = async () => {\\n if (userToken) {\\n return userToken;\\n }\\n\\n if (passwordUser == null) {\\n await addTourist();\\n }\\n\\n var creds = {\\n username: tourist.email,\\n password: passwordUser\\n };\\n const response = await server.post(\\\"/users/login\\\").send(creds);\\n userToken = response.body.token;\\n return userToken;\\n};\\n\\nconst getExistingId = async () => {\\n const newTourist = {\\n \\\"firstname\\\": \\\"Namal\\\",\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\n \\\"email\\\": \\\"namalfernamdo@gmail.com\\\",\\n \\\"mobile\\\": \\\"981114844\\\",\\n \\\"rommnumber\\\": \\\"41\\\"\\n };\\n const tourist = new Users(newTourist);\\n await tourist.save();\\n return tourist._id.toString();\\n};\\n\\nconst getNonExistingId = async () => {\\n const newTourist = {\\n \\\"firstname\\\": \\\"Kamal\\\",\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\n \\\"email\\\": \\\"kamalfernamdo@gmail.com\\\",\\n \\\"username\\\": \\\"kamalfernamdo@gmail.com\\\"\\n };\\n const tourist = new Users(newTourist);\\n await tourist.save();\\n await tourist.remove();\\n return tourist._id.toString();\\n};\\n\\nconst getExistingIdAssistanct = async () => {\\n const newAssistant = {\\n \\\"firstname\\\": \\\"Kasun\\\",\\n \\\"lastname\\\": \\\"Perera\\\",\\n \\\"email\\\": \\\"kasun@gmail.com\\\"\\n };\\n const assistant = new Users(newAssistant);\\n await assistant.save();\\n return assistant._id.toString();\\n};\\n\\nconst getNonExistingIdAssistant = async () => {\\n const newAssistant = {\\n \\\"firstname\\\": \\\"Kamal\\\",\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\n \\\"email\\\": \\\"kamalfernamdo@gmail.com\\\"\\n };\\n const assistant = new Users(newAssistant);\\n await assistant.save();\\n await assistant.remove();\\n return assistant._id.toString();\\n};\\n\\nconst decodeToken = token => {\\n var decoded = jwt_decode(token);\\n return decoded;\\n};\\n\\nmodule.exports = {\\n getAdminToken,\\n getAssistantToken,\\n getTouristToken,\\n decodeToken,\\n addTourist,\\n getTouristToken,\\n getExistingId,\\n getNonExistingId,\\n getExistingIdAssistanct,\\n getNonExistingIdAssistant,\\n addAssistant\\n};\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVzZXJfaGVscGVyLmpzIl0sIm5hbWVzIjpbImFwcCIsInJlcXVpcmUiLCJzZXJ2ZXIiLCJqd3RfZGVjb2RlIiwiVXNlcnMiLCJ1c2VyVG9rZW4iLCJhc3Npc3RhbnRUb2tlbiIsImFkbWluVG9rZW4iLCJwYXNzd29yZEFzc2lzdGFudCIsInBhc3N3b3JkVXNlciIsImFkbWluIiwiYXNzaXN0YW50IiwidG91cmlzdCIsInNpZ251cEFkbWluIiwiZGVsZXRlTWFueSIsInBvc3QiLCJzZW5kIiwiZ2V0QWRtaW5Ub2tlbiIsImNyZWRzIiwidXNlcm5hbWUiLCJlbWFpbCIsInBhc3N3b3JkIiwicmVzcG9uc2UiLCJib2R5IiwidG9rZW4iLCJhZGRBc3Npc3RhbnQiLCJzZXQiLCJleHBlY3QiLCJnZXRBc3Npc3RhbnRUb2tlbiIsImFkZFRvdXJpc3QiLCJnZXRUb3VyaXN0VG9rZW4iLCJnZXRFeGlzdGluZ0lkIiwibmV3VG91cmlzdCIsInNhdmUiLCJfaWQiLCJ0b1N0cmluZyIsImdldE5vbkV4aXN0aW5nSWQiLCJyZW1vdmUiLCJnZXRFeGlzdGluZ0lkQXNzaXN0YW5jdCIsIm5ld0Fzc2lzdGFudCIsImdldE5vbkV4aXN0aW5nSWRBc3Npc3RhbnQiLCJkZWNvZGVUb2tlbiIsImRlY29kZWQiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxHQUFHLEdBQUdDLE9BQU8sQ0FBQyxXQUFELENBQW5COztBQUNBLE1BQU1DLE1BQU0sR0FBR0QsT0FBTyxDQUFDLFdBQUQsQ0FBUCxDQUFxQkQsR0FBckIsQ0FBZjs7QUFDQSxNQUFNRyxVQUFVLEdBQUdGLE9BQU8sQ0FBQyxZQUFELENBQTFCOztBQUNBLE1BQU1HLEtBQUssR0FBR0gsT0FBTyxDQUFDLG9CQUFELENBQXJCOztBQUVBLElBQUlJLFNBQUo7QUFDQSxJQUFJQyxjQUFKO0FBQ0EsSUFBSUMsVUFBSjtBQUNBLElBQUlDLGlCQUFKO0FBQ0EsSUFBSUMsWUFBSjtBQUVBLE1BQU1DLEtB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dGVudCI6WyJjb25zdCBhcHAgPSByZXF1aXJlKCcuLi8uLi9hcHAnKTtcclxuY29uc3Qgc2VydmVyID0gcmVxdWlyZShcInN1cGVydGVzdFwiKShhcHApO1xyXG5jb25zdCBqd3RfZGVjb2RlID0gcmVxdWlyZSgnand0LWRlY29kZScpO1xyXG5jb25zdCBVc2VycyA9IHJlcXVpcmUoJy4uLy4uL21vZGVscy91c2VycycpO1xyXG5cclxudmFyIHVzZXJUb2tlbjtcclxudmFyIGFzc2lzdGFudFRva2VuO1xyXG52YXIgYWRtaW5Ub2tlbjtcclxudmFyIHBhc3N3b3JkQXNzaXN0YW50O1xyXG52YXIgcGFzc3dvcmRVc2VyO1xyXG5cclxuY29uc3QgYWRtaW4gPSB7XHJcbiAgICBcImZpcnN0bmFtZVwiOiBcIkFkbWluXCIsXHJcbiAgICBcImxhc3RuYW1lXCI6IFwiQWRtaW5cIixcclxuICAgIFwiZW1haWxcIjogXCJhZG1pbkBnbWFpbC5jb21cIixcclxuICAgIFwicGFzc3dvcmRcIjogXCJhZG1pbi1wYXNzd29yZFwiXHJcbn07XHJcbmNvbnN0IGFzc2lzdGFudCA9IHtcclxuICAgIFwiZmlyc3RuYW1lXCI6IFwiUGFzYW5cIixcclxuICAgIFwibGFzdG5hbWVcIjogXCJGZXJuYW1kb1wiLFxyXG4gICAgXCJlbWFpbFwiOiBcInBhc2FuRmVybmFtZG9AZ21haWwuY29tXCJcclxufTtcclxuY29uc3QgdG91cmlzdCA9IHtcclxuICAgIFwiZmlyc3RuYW1lXCI6IFwiU3VuaWxcIixcclxuICAgIFwibGFzdG5hbWVcIjogXCJGZXJuYW1kb1wiLFxyXG4gICAgXCJlbWFpbFwiOiBcInN1bmlsRmVybmFtZG9AZ21haWwuY29tXCJcclxufTtcclxuXHJcbmNvbnN0IHNpZ251cEFkbWluID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgYXdhaXQgVXNlcnMuZGVsZXRlTWFueSh7fSk7XHJcbiAgICBhd2FpdCBzZXJ2ZXJcclxuICAgICAgICAucG9zdChcIi91c2Vycy9zaWdudXAvYWRtaW5cIilcclxuICAgICAgICAuc2VuZChhZG1pbik7XHJcbn07XHJcblxyXG5jb25zdCBnZXRBZG1pblRva2VuID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgaWYgKGFkbWluVG9rZW4pIHtcclxuICAgICAgICByZXR1cm4gYWRtaW5Ub2tlbjtcclxuICAgIH1cclxuICAgIGF3YWl0IHNpZ251cEFkbWluKCk7XHJcbiAgICB2YXIgY3JlZHMgPSB7XHJcbiAgICAgICAgdXNlcm5hbWU6IGFkbWluLmVtYWlsLFxyXG4gICAgICAgIHBhc3N3b3JkOiBhZG1pbi5wYXNzd29yZCxcclxuICAgIH07XHJcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHNlcnZlclxyXG4gICAgICAgIC5wb3N0KFwiL3VzZXJzL2xvZ2luXCIpXHJcbiAgICAgICAgLnNlbmQoY3JlZHMpO1xyXG4gICAgYWRtaW5Ub2tlbiA9IHJlc3BvbnNlLmJvZHkudG9rZW47XHJcbiAgICByZXR1cm4gYWRtaW5Ub2tlbjtcclxufVxyXG5cclxuY29uc3QgYWRkQXNzaXN0YW50ID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgaWYgKCFhZG1pblRva2VuKSB7XHJcbiAgICAgICAgYXdhaXQgZ2V0QWRtaW5Ub2tlbigpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBzZXJ2ZXJcclxuICAgICAgICAucG9zdChcIi9lbXBsb3llZXNcIilcclxuICAgICAgICAuc2V0KFwiQXV0aG9yaXphdGlvblwiLCBgQmVhcmVyICR7YWRtaW5Ub2tlbn1gKVxyXG4gICAgICAgIC5zZW5kKGFzc2lzdGFudClcclxuICAgICAgICAuZXhwZWN0KDIwMCk7XHJcbiAgICAgICAgICAgXHJcbiAgICBwYXNzd29yZEFzc2lzdGFudCA9ICByZXNwb25zZS5ib2R5LnBhc3N3b3JkO1xyXG59O1xyXG5cclxuY29uc3QgZ2V0QXNzaXN0YW50VG9rZW4gPSBhc3luYyAoKSA9PiB7XHJcbiAgICBpZiAoYXNzaXN0YW50VG9rZW4pIHtcclxuICAgICAgICByZXR1cm4gYXNzaXN0YW50VG9rZW47XHJcbiAgICB9XHJcbiAgICBpZihwYXNzd29yZEFzc2lzdGFudD09bnVsbCl7YXdhaXQgYWRkQXNzaXN0YW50KCk7fVxyXG4gICAgdmFyIGNyZWRzID0ge1xyXG4gICAgICAgIHVzZXJuYW1lOiBhc3Npc3RhbnQuZW1haWwsXHJcbiAgICAgICAgcGFzc3dvcmQ6IHBhc3N3b3JkQXNzaXN0YW50LFxyXG4gICAgfTtcclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgc2VydmVyXHJcbiAgICAgICAgLnBvc3QoXCIvdXNlcnMvbG9naW5cIilcclxuICAgICAgICAuc2VuZChjcmVkcyk7XHJcbiAgICBhc3Npc3RhbnRUb2tlbiA9IHJlc3BvbnNlLmJvZHkudG9rZW47XHJcbiAgICByZXR1cm4gYXNzaXN0YW50VG9rZW47XHJcbn1cclxuXHJcbmNvbnN0IGFkZFRvdXJpc3QgPSBhc3luYyAoKSA9PiB7XHJcbiAgICBpZiAoIWFzc2lzdGFudFRva2VuKSB7XHJcbiAgICAgICAgYXdhaXQgZ2V0QXNzaXN0YW50VG9rZW4oKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgc2VydmVyXHJcbiAgICAgICAgLnBvc3QoXCIvdG91cmlzdHNcIilcclxuICAgICAgICAuc2V0KFwiQXV0aG9yaXphdGlvblwiLCBgQmVhcmVyICR7YXNzaXN0YW50VG9rZW59YClcclxuICAgICAgICAuc2VuZCh0b3VyaXN0KVxyXG4gICAgICAgIC5leHBlY3QoMjAwKTtcclxuICAgIHBhc3N3b3JkVXNlcj0gIHJlc3BvbnNlLmJvZHkucGFzc3dvcmQ7XHJcbn07XHJcbiBcclxuXHJcbmNvbnN0IGdldFRvdXJpc3RUb2tlbiA9IGFzeW5jICgpID0+IHtcclxuICAgIGlmICh1c2VyVG9rZW4pIHtcclxuICAgICAgICByZXR1cm4gdXNlclRva2VuO1xyXG4gICAgfVxyXG4gICAgaWYocGFzc3dvcmRVc2VyID09IG51bGwpIHsgYXdhaXQgYWRkVG91cmlzdCgpO31cclxuICAgIHZhciBjcmVkcyA9IHtcclxuICAgICAgICB1c2VybmFtZTogdG91cmlzdC5lbWFpbCxcclxuICAgICAgICBwYXNzd29yZDogcGFzc3dvcmRVc2VyLFxyXG4gICAgfTtcclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgc2VydmVyXHJcbiAgICAgICAgLnBvc3QoXCIvdXNlcnMvbG9naW5cIilcclxuICAgICAgICAuc2VuZChjcmVkcyk7XHJcbiAgICB1c2VyVG9rZW4gPSByZXNwb25zZS5ib2R5LnRva2VuO1xyXG4gICAgcmV0dXJuIHVzZXJUb2tlbjtcclxufVxyXG5cclxuY29uc3QgZ2V0RXhpc3RpbmdJZCA9IGFzeW5jICgpID0+IHtcclxuICAgIGNvbnN0IG5ld1RvdXJpc3QgPSB7XHJcbiAgICAgICAgXCJmaXJzdG5hbWVcIjogXCJOYW1hbFwiLFxyXG4gICAgICAgIFwibGFzdG5hbWVcIjogXCJGZXJuYW1kb1wiLFxyXG4gICAgICAgIFwiZW1haWxcIjogXCJuYW1hbGZlcm5hbWRvQGdtYWlsLmNvbVwiLFxyXG4gICAgICAgIFwibW9iaWxlXCI6IFwiOTgxMTE0ODQ0XCIsXHJcbiAgICAgICAgXCJyb21tbnVtYmVyXCIgOiBcIjQxXCIsXHJcblxyXG4gICAgfVxyXG4gICAgY29uc3QgdG91cmlzdCA9IG5ldyBVc2VycyhuZXdUb3VyaXN0KTtcclxuICAgIGF3YWl0IHRvdXJpc3Quc2F2ZSgpO1xyXG5cclxuICAgIHJldHVybiB0b3VyaXN0Ll9pZC50b1N0cmluZygpO1xyXG5cclxuICAgIFxyXG59XHJcblxyXG5jb25zdCBnZXROb25FeGlzdGluZ0lkID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgY29uc3QgbmV3VG91cmlzdCA9IHtcclxuICAgICAgICBcImZpcnN0bmFtZVwiOiBcIkthbWFsXCIsXHJcbiAgICAgICAgXCJsYXN0bmFtZVwiOiBcIkZlcm5hbWRvXCIsXHJcbiAgICAgICAgXCJlbWFpbFwiOiBcImthbWFsZmVybmFtZG9AZ21haWwuY29tXCIsXHJcbiAgICAgICAgXCJ1c2VybmFtZVwiOiBcImthbWFsZmVybmFtZG9AZ21haWwuY29tXCJcclxuICAgIH1cclxuICAgIGNvbnN0IHRvdXJpc3QgPSBuZXcgVXNlcnMobmV3VG91cmlzdCk7XHJcbiAgICBhd2FpdCB0b3VyaXN0LnNhdmUoKTtcclxuICAgIGF3YWl0IHRvdXJpc3QucmVtb3ZlKCk7XHJcblxyXG4gICAgcmV0dXJuIHRvdXJpc3QuX2lkLnRvU3RyaW5nKCk7XHJcbn1cclxuXHJcbmNvbnN0IGdldEV4aXN0aW5nSWRBc3Npc3RhbmN0ID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgY29uc3QgbmV3QXNzaXN0YW50ID0ge1xyXG4gICAgICAgIFwiZmlyc3RuYW1lXCI6IFwiS2FzdW5cIixcclxuICAgICAgICBcImxhc3RuYW1lXCI6IFwiUGVyZXJhXCIsXHJcbiAgICAgICAgXCJlbWFpbFwiOiBcImthc3VuQGdtYWlsLmNvbVwiLFxyXG4gICAgfVxyXG4gICAgY29uc3QgYXNzaXN0YW50ID0gbmV3IFVzZXJzKG5ld0Fzc2lzdGFudCk7XHJcbiAgICBhd2FpdCBhc3Npc3RhbnQuc2F2ZSgpO1xyXG5cclxuICAgIHJldHVybiBhc3Npc3RhbnQuX2lkLnRvU3RyaW5nKCk7XHJcblxyXG4gICAgXHJcbn1cclxuXHJcbmNvbnN0IGdldE5vbkV4aXN0aW5nSWRBc3Npc3RhbnQgPSBhc3luYyAoKSA9PiB7XHJcbiAgICBjb25zdCBuZXdBc3Npc3RhbnQgPSB7XHJcbiAgICAgICAgXCJmaXJzdG5hbWVcIjogXCJLYW1hbFwiLFxyXG4gICAgICAgIFwibGFzdG5hbWVcIjogXCJGZXJuYW1kb1wiLFxyXG4gICAgICAgIFwiZW1haWxcIjogXCJrYW1hbGZlcm5hbWRvQGdtYWlsLmNvbVwiXHJcbiAgICB9XHJcbiAgICBjb25zdCBhc3Npc3RhbnQgPSBuZXcgVXNlcnMobmV3QXNzaXN0YW50KTtcclxuICAgIGF3YWl0IGFzc2lzdGFudC5zYXZlKCk7XHJcbiAgICBhd2FpdCBhc3Npc3RhbnQucmVtb3ZlKCk7XHJcblxyXG4gICAgcmV0dXJuIGFzc2lzdGFudC5faWQudG9TdHJpbmcoKTtcclxufVxyXG5cclxuY29uc3QgZGVjb2RlVG9rZW4gPSAodG9rZW4pID0+IHtcclxuICAgIHZhciBkZWNvZGVkID0gand0X2RlY29kZSh0b2tlbik7XHJcbiAgICByZXR1cm4gZGVjb2RlZDtcclxufVxyXG5cclxubW9kdWxlLmV4cG9ydHMgPSB7XHJcbiAgICBnZXRBZG1pblRva2VuLCBnZXRBc3Npc3RhbnRUb2tlbiwgZ2V0VG91cmlzdFRva2VuLCBkZWNvZGVUb2tlbiwgYWRkVG91cmlzdCwgZ2V0VG91cmlzdFRva2VuICxnZXRFeGlzdGluZ0lkICxnZXROb25FeGlzdGluZ0lkLCBnZXRFeGlzdGluZ0lkQXNzaXN0YW5jdCwgZ2V0Tm9uRXhpc3RpbmdJZEFzc2lzdGFudCwgYWRkQXNzaXN0YW50XHJcbn1cclxuIl19\",\"originalCode\":\"const app = require('../../app');\\r\\nconst server = require(\\\"supertest\\\")(app);\\r\\nconst jwt_decode = require('jwt-decode');\\r\\nconst Users = require('../../models/users');\\r\\n\\r\\nvar userToken;\\r\\nvar assistantToken;\\r\\nvar adminToken;\\r\\nvar passwordAssistant;\\r\\nvar passwordUser;\\r\\n\\r\\nconst admin = {\\r\\n \\\"firstname\\\": \\\"Admin\\\",\\r\\n \\\"lastname\\\": \\\"Admin\\\",\\r\\n \\\"email\\\": \\\"admin@gmail.com\\\",\\r\\n \\\"password\\\": \\\"admin-password\\\"\\r\\n};\\r\\nconst assistant = {\\r\\n \\\"firstname\\\": \\\"Pasan\\\",\\r\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\r\\n \\\"email\\\": \\\"pasanFernamdo@gmail.com\\\"\\r\\n};\\r\\nconst tourist = {\\r\\n \\\"firstname\\\": \\\"Sunil\\\",\\r\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\r\\n \\\"email\\\": \\\"sunilFernamdo@gmail.com\\\"\\r\\n};\\r\\n\\r\\nconst signupAdmin = async () => {\\r\\n await Users.deleteMany({});\\r\\n await server\\r\\n .post(\\\"/users/signup/admin\\\")\\r\\n .send(admin);\\r\\n};\\r\\n\\r\\nconst getAdminToken = async () => {\\r\\n if (adminToken) {\\r\\n return adminToken;\\r\\n }\\r\\n await signupAdmin();\\r\\n var creds = {\\r\\n username: admin.email,\\r\\n password: admin.password,\\r\\n };\\r\\n const response = await server\\r\\n .post(\\\"/users/login\\\")\\r\\n .send(creds);\\r\\n adminToken = response.body.token;\\r\\n return adminToken;\\r\\n}\\r\\n\\r\\nconst addAssistant = async () => {\\r\\n if (!adminToken) {\\r\\n await getAdminToken();\\r\\n }\\r\\n const response = await server\\r\\n .post(\\\"/employees\\\")\\r\\n .set(\\\"Authorization\\\", `Bearer ${adminToken}`)\\r\\n .send(assistant)\\r\\n .expect(200);\\r\\n \\r\\n passwordAssistant = response.body.password;\\r\\n};\\r\\n\\r\\nconst getAssistantToken = async () => {\\r\\n if (assistantToken) {\\r\\n return assistantToken;\\r\\n }\\r\\n if(passwordAssistant==null){await addAssistant();}\\r\\n var creds = {\\r\\n username: assistant.email,\\r\\n password: passwordAssistant,\\r\\n };\\r\\n const response = await server\\r\\n .post(\\\"/users/login\\\")\\r\\n .send(creds);\\r\\n assistantToken = response.body.token;\\r\\n return assistantToken;\\r\\n}\\r\\n\\r\\nconst addTourist = async () => {\\r\\n if (!assistantToken) {\\r\\n await getAssistantToken();\\r\\n }\\r\\n const response = await server\\r\\n .post(\\\"/tourists\\\")\\r\\n .set(\\\"Authorization\\\", `Bearer ${assistantToken}`)\\r\\n .send(tourist)\\r\\n .expect(200);\\r\\n passwordUser= response.body.password;\\r\\n};\\r\\n \\r\\n\\r\\nconst getTouristToken = async () => {\\r\\n if (userToken) {\\r\\n return userToken;\\r\\n }\\r\\n if(passwordUser == null) { await addTourist();}\\r\\n var creds = {\\r\\n username: tourist.email,\\r\\n password: passwordUser,\\r\\n };\\r\\n const response = await server\\r\\n .post(\\\"/users/login\\\")\\r\\n .send(creds);\\r\\n userToken = response.body.token;\\r\\n return userToken;\\r\\n}\\r\\n\\r\\nconst getExistingId = async () => {\\r\\n const newTourist = {\\r\\n \\\"firstname\\\": \\\"Namal\\\",\\r\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\r\\n \\\"email\\\": \\\"namalfernamdo@gmail.com\\\",\\r\\n \\\"mobile\\\": \\\"981114844\\\",\\r\\n \\\"rommnumber\\\" : \\\"41\\\",\\r\\n\\r\\n }\\r\\n const tourist = new Users(newTourist);\\r\\n await tourist.save();\\r\\n\\r\\n return tourist._id.toString();\\r\\n\\r\\n \\r\\n}\\r\\n\\r\\nconst getNonExistingId = async () => {\\r\\n const newTourist = {\\r\\n \\\"firstname\\\": \\\"Kamal\\\",\\r\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\r\\n \\\"email\\\": \\\"kamalfernamdo@gmail.com\\\",\\r\\n \\\"username\\\": \\\"kamalfernamdo@gmail.com\\\"\\r\\n }\\r\\n const tourist = new Users(newTourist);\\r\\n await tourist.save();\\r\\n await tourist.remove();\\r\\n\\r\\n return tourist._id.toString();\\r\\n}\\r\\n\\r\\nconst getExistingIdAssistanct = async () => {\\r\\n const newAssistant = {\\r\\n \\\"firstname\\\": \\\"Kasun\\\",\\r\\n \\\"lastname\\\": \\\"Perera\\\",\\r\\n \\\"email\\\": \\\"kasun@gmail.com\\\",\\r\\n }\\r\\n const assistant = new Users(newAssistant);\\r\\n await assistant.save();\\r\\n\\r\\n return assistant._id.toString();\\r\\n\\r\\n \\r\\n}\\r\\n\\r\\nconst getNonExistingIdAssistant = async () => {\\r\\n const newAssistant = {\\r\\n \\\"firstname\\\": \\\"Kamal\\\",\\r\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\r\\n \\\"email\\\": \\\"kamalfernamdo@gmail.com\\\"\\r\\n }\\r\\n const assistant = new Users(newAssistant);\\r\\n await assistant.save();\\r\\n await assistant.remove();\\r\\n\\r\\n return assistant._id.toString();\\r\\n}\\r\\n\\r\\nconst decodeToken = (token) => {\\r\\n var decoded = jwt_decode(token);\\r\\n return decoded;\\r\\n}\\r\\n\\r\\nmodule.exports = {\\r\\n getAdminToken, getAssistantToken, getTouristToken, decodeToken, addTourist, getTouristToken ,getExistingId ,getNonExistingId, getExistingIdAssistanct, getNonExistingIdAssistant, addAssistant\\r\\n}\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/79/user_helper_79166e334a8b342d542dc0574b645dc7.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2692\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\tests\\\\helpers\\\\user_helper.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":16466,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":16463,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"signupAdmin\",\"ranges\":[{\"startOffset\":714,\"endOffset\":815,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getAdminToken\",\"ranges\":[{\"startOffset\":840,\"endOffset\":1126,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"addAssistant\",\"ranges\":[{\"startOffset\":1150,\"endOffset\":1389,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getAssistantToken\",\"ranges\":[{\"startOffset\":1418,\"endOffset\":1770,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"addTourist\",\"ranges\":[{\"startOffset\":1792,\"endOffset\":2035,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getTouristToken\",\"ranges\":[{\"startOffset\":2062,\"endOffset\":2380,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getExistingId\",\"ranges\":[{\"startOffset\":2405,\"endOffset\":2690,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getNonExistingId\",\"ranges\":[{\"startOffset\":2718,\"endOffset\":3021,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"getExistingIdAssistanct\",\"ranges\":[{\"startOffset\":3056,\"endOffset\":3290,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"getNonExistingIdAssistant\",\"ranges\":[{\"startOffset\":3327,\"endOffset\":3599,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"decodeToken\",\"ranges\":[{\"startOffset\":3622,\"endOffset\":3687,\"count\":0}],\"isBlockCoverage\":false}]}}]},{\"leaks\":false,\"numFailingTests\":0,\"numPassingTests\":15,\"numPendingTests\":0,\"numTodoTests\":0,\"openHandles\":[],\"perfStats\":{\"end\":1615204308904,\"runtime\":3584,\"slow\":false,\"start\":1615204305320},\"skipped\":false,\"snapshot\":{\"added\":0,\"fileDeleted\":false,\"matched\":0,\"unchecked\":0,\"unmatched\":0,\"updated\":0,\"uncheckedKeys\":[]},\"testFilePath\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\tests\\\\tourist.test.js\",\"testResults\":[{\"ancestorTitles\":[\"Tourist Model\"],\"duration\":1,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Tourist Model Tourist model exists\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"Tourist model exists\"},{\"ancestorTitles\":[\"GET /tourists\"],\"duration\":11,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"GET /tourists requires Authorization - 401\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"requires Authorization - 401\"},{\"ancestorTitles\":[\"GET /tourists\"],\"duration\":18,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"GET /tourists with Authorization - 200\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"with Authorization - 200\"},{\"ancestorTitles\":[\"GET /tourists\"],\"duration\":95,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"GET /tourists server error - 500\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"server error - 500\"},{\"ancestorTitles\":[\"POST /tourists\"],\"duration\":21,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"POST /tourists requires Authorization - 401\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"requires Authorization - 401\"},{\"ancestorTitles\":[\"POST /tourists\"],\"duration\":43,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"POST /tourists with invalid Authorization - 403\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"with invalid Authorization - 403\"},{\"ancestorTitles\":[\"POST /tourists\"],\"duration\":256,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"POST /tourists with Authorization - 200\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"with Authorization - 200\"},{\"ancestorTitles\":[\"POST /tourists\"],\"duration\":16,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"POST /tourists already existing - 403\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"already existing - 403\"},{\"ancestorTitles\":[\"POST /tourists\"],\"duration\":12,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"POST /tourists validation failed - 403\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"validation failed - 403\"},{\"ancestorTitles\":[\"POST /tourists\",\"POST /tourists/search\"],\"duration\":8,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"POST /tourists POST /tourists/search requires Authorization - 401\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"requires Authorization - 401\"},{\"ancestorTitles\":[\"POST /tourists\",\"POST /tourists/search\"],\"duration\":29,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"POST /tourists POST /tourists/search with Authorization - 200\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"with Authorization - 200\"},{\"ancestorTitles\":[\"POST /tourists\",\"POST /tourists/search\"],\"duration\":20,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"POST /tourists POST /tourists/search with Authorization - another one - 200\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"with Authorization - another one - 200\"},{\"ancestorTitles\":[\"PUT /tourists\"],\"duration\":9,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"PUT /tourists does not support - 403\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"does not support - 403\"},{\"ancestorTitles\":[\"DELETE /tourists\"],\"duration\":10,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"DELETE /tourists requires Authorization - 401\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"requires Authorization - 401\"},{\"ancestorTitles\":[\"DELETE /tourists\"],\"duration\":19,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"DELETE /tourists with Authorization - 200\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"with Authorization - 200\"}],\"failureMessage\":null,\"v8Coverage\":[{\"codeTransformResult\":{\"code\":\"var createError = require('http-errors');\\n\\nvar express = require('express');\\n\\nconst cors = require('cors');\\n\\nvar path = require('path');\\n\\nconst bodyParser = require('body-parser');\\n\\nconst expressValidator = require('express-validator');\\n\\nvar session = require('express-session');\\n\\nvar FileStore = require('session-file-store')(session);\\n\\nvar cookieParser = require('cookie-parser');\\n\\nvar logger = require('morgan');\\n\\nvar passport = require('passport');\\n\\nconst mongoose = require('mongoose');\\n\\nrequire('dotenv').config();\\n\\nvar userRouter = require('./routes/userRouter');\\n\\nvar employeeRouter = require('./routes/employeeRouter');\\n\\nvar placeRouter = require('./routes/placeRouter');\\n\\nvar scheduleRouter = require('./routes/scheduleRouter');\\n\\nvar touristRouter = require('./routes/touristRouter');\\n\\nvar dashboardRouter = require('./routes/dashboardRouter');\\n\\nvar app = express(); // view engine setup\\n\\napp.set('views', path.join(__dirname, 'views'));\\napp.set('view engine', 'jade');\\napp.use(cors());\\napp.use(passport.initialize());\\napp.use(bodyParser.json());\\napp.use(cookieParser('the-immortal-coils')); // app.use(logger('dev'));\\n\\napp.use(express.json());\\napp.use(express.urlencoded({\\n extended: false\\n}));\\napp.use(cookieParser()); // app.use(express.static('build'));\\n\\napp.use(express.static(path.join(__dirname, 'build')));\\nvar url = process.env.mongoUrl;\\n\\nif (process.env.NODE_ENV === 'test') {\\n url = process.env.testMongoUrl;\\n}\\n\\nmongoose.connect(url, {\\n useNewUrlParser: true,\\n useCreateIndex: true,\\n useUnifiedTopology: true\\n}).then(db => {}, err => {\\n if (err) {\\n console.log('👺 Error connecting to MongoDB');\\n } else {\\n console.log('✅ Connected to MongoDB');\\n }\\n});\\napp.use('/users', userRouter);\\napp.use('/employees', employeeRouter);\\napp.use('/places', placeRouter);\\napp.use('/schedules', scheduleRouter);\\napp.use('/tourists', touristRouter);\\napp.use('/dashboard', dashboardRouter); // catch 404 and forward to error handler\\n\\napp.use(function (req, res, next) {\\n next(createError(404));\\n}); // error handler\\n\\napp.use(function (err, req, res, next) {\\n // set locals, only providing error in development\\n res.locals.message = err.message;\\n res.locals.error = req.app.get('env') === 'development' ? err : {}; // render the error page\\n\\n res.status(err.status || 500);\\n res.render('error');\\n});\\nmodule.exports = app;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC5qcyJdLCJuYW1lcyI6WyJjcmVhdGVFcnJvciIsInJlcXVpcmUiLCJleHByZXNzIiwiY29ycyIsInBhdGgiLCJib2R5UGFyc2VyIiwiZXhwcmVzc1ZhbGlkYXRvciIsInNlc3Npb24iLCJGaWxlU3RvcmUiLCJjb29raWVQYXJzZXIiLCJsb2dnZXIiLCJwYXNzcG9ydCIsIm1vbmdvb3NlIiwiY29uZmlnIiwidXNlclJvdXRlciIsImVtcGxveWVlUm91dGVyIiwicGxhY2VSb3V0ZXIiLCJzY2hlZHVsZVJvdXRlciIsInRvdXJpc3RSb3V0ZXIiLCJkYXNoYm9hcmRSb3V0ZXIiLCJhcHAiLCJzZXQiLCJqb2luIiwiX19kaXJuYW1lIiwidXNlIiwiaW5pdGlhbGl6ZSIsImpzb24iLCJ1cmxlbmNvZGVkIiwiZXh0ZW5kZWQiLCJzdGF0aWMiLCJ1cmwiLCJwcm9jZXNzIiwiZW52IiwibW9uZ29VcmwiLCJOT0RFX0VOViIsInRlc3RNb25nb1VybCIsImNvbm5lY3QiLCJ1c2VOZXdVcmxQYXJzZXIiLCJ1c2VDcmVhdGVJbmRleCIsInVzZVVuaWZpZWRUb3BvbG9neSIsInRoZW4iLCJkYiIsImVyciIsImNvbnNvbGUiLCJsb2ciLCJyZXEiLCJyZXMiLCJuZXh0IiwibG9jYWxzIiwibWVzc2FnZSIsImVycm9yIiwiZ2V0Iiwic3RhdHVzIiwicmVuZGVyIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsSUFBSUEsV0FBVyxHQUFHQyxPQUFPLENBQUMsYUFBRCxDQUF6Qjs7QUFDQSxJQUFJQyxPQUFPLEdBQUdELE9BQU8sQ0FBQyxTQUFELENBQXJCOztBQUNBLE1BQU1FLElBQUksR0FBR0YsT0FBTyxDQUFDLE1BQUQsQ0FBcEI7O0FBQ0EsSUFBSUcsSUFBSSxHQUFHSCxPQUFPLENBQUMsTUFBRCxDQUFsQjs7QUFDQSxNQUFNSSxVQUFVLEdBQUdKLE9BQU8sQ0FBQyxhQUFELENBQTFCOztBQUNBLE1BQU1LLGdCQUFnQixHQUFHTCxPQUFPLENBQUMs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a0JWLFVBQWxCO0FBQ0FNLEdBQUcsQ0FBQ0ksR0FBSixDQUFRLFlBQVIsRUFBc0JULGNBQXRCO0FBQ0FLLEdBQUcsQ0FBQ0ksR0FBSixDQUFRLFNBQVIsRUFBbUJSLFdBQW5CO0FBQ0FJLEdBQUcsQ0FBQ0ksR0FBSixDQUFRLFlBQVIsRUFBc0JQLGNBQXRCO0FBQ0FHLEdBQUcsQ0FBQ0ksR0FBSixDQUFRLFdBQVIsRUFBcUJOLGFBQXJCO0FBQ0FFLEdBQUcsQ0FBQ0ksR0FBSixDQUFRLFlBQVIsRUFBc0JMLGVBQXRCLEUsQ0FFQTs7QUFDQUMsR0FBRyxDQUFDSSxHQUFKLENBQVEsVUFBVXFCLEdBQVYsRUFBZUMsR0FBZixFQUFvQkMsSUFBcEIsRUFBMEI7QUFDaENBLEVBQUFBLElBQUksQ0FBQy9DLFdBQVcsQ0FBQyxHQUFELENBQVosQ0FBSjtBQUNELENBRkQsRSxDQUlBOztBQUNBb0IsR0FBRyxDQUFDSSxHQUFKLENBQVEsVUFBVWtCLEdBQVYsRUFBZUcsR0FBZixFQUFvQkMsR0FBcEIsRUFBeUJDLElBQXpCLEVBQStCO0FBQ3JDO0FBQ0FELEVBQUFBLEdBQUcsQ0FBQ0UsTUFBSixDQUFXQyxPQUFYLEdBQXFCUCxHQUFHLENBQUNPLE9BQXpCO0FBQ0FILEVBQUFBLEdBQUcsQ0FBQ0UsTUFBSixDQUFXRSxLQUFYLEdBQW1CTCxHQUFHLENBQUN6QixHQUFKLENBQVErQixHQUFSLENBQVksS0FBWixNQUF1QixhQUF2QixHQUF1Q1QsR0FBdkMsR0FBNkMsRUFBaEUsQ0FIcUMsQ0FLckM7O0FBQ0FJLEVBQUFBLEdBQUcsQ0FBQ00sTUFBSixDQUFXVixHQUFHLENBQUNVLE1BQUosSUFBYyxHQUF6QjtBQUNBTixFQUFBQSxHQUFHLENBQUNPLE1BQUosQ0FBVyxPQUFYO0FBQ0QsQ0FSRDtBQVVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUJuQyxHQUFqQiIsInNvdXJjZXNDb250ZW50IjpbInZhciBjcmVhdGVFcnJvciA9IHJlcXVpcmUoJ2h0dHAtZXJyb3JzJyk7XHJcbnZhciBleHByZXNzID0gcmVxdWlyZSgnZXhwcmVzcycpO1xyXG5jb25zdCBjb3JzID0gcmVxdWlyZSgnY29ycycpO1xyXG52YXIgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcclxuY29uc3QgYm9keVBhcnNlciA9IHJlcXVpcmUoJ2JvZHktcGFyc2VyJylcclxuY29uc3QgZXhwcmVzc1ZhbGlkYXRvciA9IHJlcXVpcmUoJ2V4cHJlc3MtdmFsaWRhdG9yJylcclxudmFyIHNlc3Npb24gPSByZXF1aXJlKCdleHByZXNzLXNlc3Npb24nKTtcclxudmFyIEZpbGVTdG9yZSA9IHJlcXVpcmUoJ3Nlc3Npb24tZmlsZS1zdG9yZScpKHNlc3Npb24pO1xyXG52YXIgY29va2llUGFyc2VyID0gcmVxdWlyZSgnY29va2llLXBhcnNlcicpO1xyXG52YXIgbG9nZ2VyID0gcmVxdWlyZSgnbW9yZ2FuJyk7XHJcbnZhciBwYXNzcG9ydCA9IHJlcXVpcmUoJ3Bhc3Nwb3J0Jyk7XHJcbmNvbnN0IG1vbmdvb3NlID0gcmVxdWlyZSgnbW9uZ29vc2UnKTtcclxucmVxdWlyZSgnZG90ZW52JykuY29uZmlnKClcclxuXHJcbnZhciB1c2VyUm91dGVyID0gcmVxdWlyZSgnLi9yb3V0ZXMvdXNlclJvdXRlcicpO1xyXG52YXIgZW1wbG95ZWVSb3V0ZXIgPSByZXF1aXJlKCcuL3JvdXRlcy9lbXBsb3llZVJvdXRlcicpO1xyXG52YXIgcGxhY2VSb3V0ZXIgPSByZXF1aXJlKCcuL3JvdXRlcy9wbGFjZVJvdXRlcicpO1xyXG52YXIgc2NoZWR1bGVSb3V0ZXIgPSByZXF1aXJlKCcuL3JvdXRlcy9zY2hlZHVsZVJvdXRlcicpO1xyXG52YXIgdG91cmlzdFJvdXRlciA9IHJlcXVpcmUoJy4vcm91dGVzL3RvdXJpc3RSb3V0ZXInKTtcclxudmFyIGRhc2hib2FyZFJvdXRlciA9IHJlcXVpcmUoJy4vcm91dGVzL2Rhc2hib2FyZFJvdXRlcicpO1xyXG5cclxudmFyIGFwcCA9IGV4cHJlc3MoKTtcclxuXHJcbi8vIHZpZXcgZW5naW5lIHNldHVwXHJcbmFwcC5zZXQoJ3ZpZXdzJywgcGF0aC5qb2luKF9fZGlybmFtZSwgJ3ZpZXdzJykpO1xyXG5hcHAuc2V0KCd2aWV3IGVuZ2luZScsICdqYWRlJyk7XHJcbmFwcC51c2UoY29ycygpKTtcclxuYXBwLnVzZShwYXNzcG9ydC5pbml0aWFsaXplKCkpO1xyXG5cclxuYXBwLnVzZShib2R5UGFyc2VyLmpzb24oKSk7XHJcblxyXG5hcHAudXNlKGNvb2tpZVBhcnNlcigndGhlLWltbW9ydGFsLWNvaWxzJykpO1xyXG4vLyBhcHAudXNlKGxvZ2dlcignZGV2JykpO1xyXG5hcHAudXNlKGV4cHJlc3MuanNvbigpKTtcclxuYXBwLnVzZShleHByZXNzLnVybGVuY29kZWQoeyBleHRlbmRlZDogZmFsc2UgfSkpO1xyXG5hcHAudXNlKGNvb2tpZVBhcnNlcigpKTtcclxuLy8gYXBwLnVzZShleHByZXNzLnN0YXRpYygnYnVpbGQnKSk7XHJcbmFwcC51c2UoZXhwcmVzcy5zdGF0aWMocGF0aC5qb2luKF9fZGlybmFtZSwgJ2J1aWxkJykpKTtcclxuXHJcbnZhciB1cmwgPSBwcm9jZXNzLmVudi5tb25nb1VybDtcclxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAndGVzdCcpIHtcclxuICB1cmwgPSBwcm9jZXNzLmVudi50ZXN0TW9uZ29Vcmw7XHJcbn1cclxubW9uZ29vc2UuY29ubmVjdCh1cmwsIHsgdXNlTmV3VXJsUGFyc2VyOiB0cnVlLCB1c2VDcmVhdGVJbmRleDogdHJ1ZSwgdXNlVW5pZmllZFRvcG9sb2d5OiB0cnVlIH0pLnRoZW4oKGRiKSA9PiB7XHJcbn0sIChlcnIpID0+IHtcclxuICBpZiAoZXJyKSB7XHJcbiAgICBjb25zb2xlLmxvZygn8J+RuiAgRXJyb3IgY29ubmVjdGluZyB0byBNb25nb0RCJyk7XHJcbiAgfSBlbHNlIHtcclxuICAgIGNvbnNvbGUubG9nKCfinIUgIENvbm5lY3RlZCB0byBNb25nb0RCJyk7XHJcbiAgfVxyXG59KTtcclxuXHJcbmFwcC51c2UoJy91c2VycycsIHVzZXJSb3V0ZXIpO1xyXG5hcHAudXNlKCcvZW1wbG95ZWVzJywgZW1wbG95ZWVSb3V0ZXIpO1xyXG5hcHAudXNlKCcvcGxhY2VzJywgcGxhY2VSb3V0ZXIpO1xyXG5hcHAudXNlKCcvc2NoZWR1bGVzJywgc2NoZWR1bGVSb3V0ZXIpO1xyXG5hcHAudXNlKCcvdG91cmlzdHMnLCB0b3VyaXN0Um91dGVyKTtcclxuYXBwLnVzZSgnL2Rhc2hib2FyZCcsIGRhc2hib2FyZFJvdXRlcik7XHJcblxyXG4vLyBjYXRjaCA0MDQgYW5kIGZvcndhcmQgdG8gZXJyb3IgaGFuZGxlclxyXG5hcHAudXNlKGZ1bmN0aW9uIChyZXEsIHJlcywgbmV4dCkge1xyXG4gIG5leHQoY3JlYXRlRXJyb3IoNDA0KSk7XHJcbn0pO1xyXG5cclxuLy8gZXJyb3IgaGFuZGxlclxyXG5hcHAudXNlKGZ1bmN0aW9uIChlcnIsIHJlcSwgcmVzLCBuZXh0KSB7XHJcbiAgLy8gc2V0IGxvY2Fscywgb25seSBwcm92aWRpbmcgZXJyb3IgaW4gZGV2ZWxvcG1lbnRcclxuICByZXMubG9jYWxzLm1lc3NhZ2UgPSBlcnIubWVzc2FnZTtcclxuICByZXMubG9jYWxzLmVycm9yID0gcmVxLmFwcC5nZXQoJ2VudicpID09PSAnZGV2ZWxvcG1lbnQnID8gZXJyIDoge307XHJcblxyXG4gIC8vIHJlbmRlciB0aGUgZXJyb3IgcGFnZVxyXG4gIHJlcy5zdGF0dXMoZXJyLnN0YXR1cyB8fCA1MDApO1xyXG4gIHJlcy5yZW5kZXIoJ2Vycm9yJyk7XHJcbn0pO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBhcHA7XHJcbiJdfQ==\",\"originalCode\":\"var createError = require('http-errors');\\r\\nvar express = require('express');\\r\\nconst cors = require('cors');\\r\\nvar path = require('path');\\r\\nconst bodyParser = require('body-parser')\\r\\nconst expressValidator = require('express-validator')\\r\\nvar session = require('express-session');\\r\\nvar FileStore = require('session-file-store')(session);\\r\\nvar cookieParser = require('cookie-parser');\\r\\nvar logger = require('morgan');\\r\\nvar passport = require('passport');\\r\\nconst mongoose = require('mongoose');\\r\\nrequire('dotenv').config()\\r\\n\\r\\nvar userRouter = require('./routes/userRouter');\\r\\nvar employeeRouter = require('./routes/employeeRouter');\\r\\nvar placeRouter = require('./routes/placeRouter');\\r\\nvar scheduleRouter = require('./routes/scheduleRouter');\\r\\nvar touristRouter = require('./routes/touristRouter');\\r\\nvar dashboardRouter = require('./routes/dashboardRouter');\\r\\n\\r\\nvar app = express();\\r\\n\\r\\n// view engine setup\\r\\napp.set('views', path.join(__dirname, 'views'));\\r\\napp.set('view engine', 'jade');\\r\\napp.use(cors());\\r\\napp.use(passport.initialize());\\r\\n\\r\\napp.use(bodyParser.json());\\r\\n\\r\\napp.use(cookieParser('the-immortal-coils'));\\r\\n// app.use(logger('dev'));\\r\\napp.use(express.json());\\r\\napp.use(express.urlencoded({ extended: false }));\\r\\napp.use(cookieParser());\\r\\n// app.use(express.static('build'));\\r\\napp.use(express.static(path.join(__dirname, 'build')));\\r\\n\\r\\nvar url = process.env.mongoUrl;\\r\\nif (process.env.NODE_ENV === 'test') {\\r\\n url = process.env.testMongoUrl;\\r\\n}\\r\\nmongoose.connect(url, { useNewUrlParser: true, useCreateIndex: true, useUnifiedTopology: true }).then((db) => {\\r\\n}, (err) => {\\r\\n if (err) {\\r\\n console.log('👺 Error connecting to MongoDB');\\r\\n } else {\\r\\n console.log('✅ Connected to MongoDB');\\r\\n }\\r\\n});\\r\\n\\r\\napp.use('/users', userRouter);\\r\\napp.use('/employees', employeeRouter);\\r\\napp.use('/places', placeRouter);\\r\\napp.use('/schedules', scheduleRouter);\\r\\napp.use('/tourists', touristRouter);\\r\\napp.use('/dashboard', dashboardRouter);\\r\\n\\r\\n// catch 404 and forward to error handler\\r\\napp.use(function (req, res, next) {\\r\\n next(createError(404));\\r\\n});\\r\\n\\r\\n// error handler\\r\\napp.use(function (err, req, res, next) {\\r\\n // set locals, only providing error in development\\r\\n res.locals.message = err.message;\\r\\n res.locals.error = req.app.get('env') === 'development' ? err : {};\\r\\n\\r\\n // render the error page\\r\\n res.status(err.status || 500);\\r\\n res.render('error');\\r\\n});\\r\\n\\r\\nmodule.exports = app;\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/01/app_010e21b7416079df77678cc6cb70a530.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"1596\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\app.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":10626,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":10623,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1632,\"endOffset\":1640,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1642,\"endOffset\":1776,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":2049,\"endOffset\":2104,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":2133,\"endOffset\":2408,\"count\":2}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"var express = require('express');\\n\\nvar userRouter = express.Router();\\n\\nconst bodyParser = require('body-parser');\\n\\nvar upload = require('../controllers/upload');\\n\\nconst {\\n checkSchema\\n} = require('express-validator');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nvar validationRules = require('../middleware/validation');\\n\\nvar userController = require('../controllers/userController');\\n\\nconst cors = require('./cors');\\n\\nuserRouter.use(bodyParser.json());\\nuserRouter.options('*', cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n});\\nuserRouter.post('/signup/admin', cors.corsWithOptions, userController.signupAdmin);\\nuserRouter.post('/login', cors.corsWithOptions, userController.login);\\nuserRouter.post('/changepassoword/:id', authenticate.verifyUser, userController.changePassoword);\\nuserRouter.post(\\\"/updateprofilepicture/:id\\\", authenticate.verifyUser, upload.UploadUserImage);\\nuserRouter.get('/logout', authenticate.verifyUser, userController.logout);\\nmodule.exports = userRouter;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVzZXJSb3V0ZXIuanMiXSwibmFtZXMiOlsiZXhwcmVzcyIsInJlcXVpcmUiLCJ1c2VyUm91dGVyIiwiUm91dGVyIiwiYm9keVBhcnNlciIsInVwbG9hZCIsImNoZWNrU2NoZW1hIiwiYXV0aGVudGljYXRlIiwidmFsaWRhdGlvblJ1bGVzIiwidXNlckNvbnRyb2xsZXIiLCJjb3JzIiwidXNlIiwianNvbiIsIm9wdGlvbnMiLCJjb3JzV2l0aE9wdGlvbnMiLCJyZXEiLCJyZXMiLCJzZW5kU3RhdHVzIiwicG9zdCIsInNpZ251cEFkbWluIiwibG9naW4iLCJ2ZXJpZnlVc2VyIiwiY2hhbmdlUGFzc293b3JkIiwiVXBsb2FkVXNlckltYWdlIiwiZ2V0IiwibG9nb3V0IiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsSUFBSUEsT0FBTyxHQUFHQyxPQUFPLENBQUMsU0FBRCxDQUFyQjs7QUFDQSxJQUFJQyxVQUFVLEdBQUdGLE9BQU8sQ0FBQ0csTUFBUixFQUFqQjs7QUFFQSxNQUFNQyxVQUFVLEdBQUdILE9BQU8sQ0FBQyxhQUFELENBQTFCOztBQUNBLElBQUlJLE1BQU0sR0FBR0osT0FBTyxDQUFDLHVCQUFELENBQXBCOztBQUNBLE1BQU07QUFBRUssRUFBQUE7QUFBRixJQUFrQkwsT0FBTyxDQUFDLG1CQUFELENBQS9COztBQUNBLElBQUlNLFlBQVksR0FBR04sT0FBTyxDQUFDLDRCQUFELENBQTFCOztBQUNBLElBQUlPLGVBQWUsR0FBR1AsT0FBTyxDQUFDLDBCQUFELENBQTdCOztBQUNBLElBQUlRLGNBQWMsR0FBR1IsT0FBTyxDQUFDLCtCQUFELENBQTVCOztBQUNBLE1BQU1TLElBQUksR0FBR1QsT0FBTyxDQUFDLFFBQUQsQ0FBcEI7O0FBRUFDLFVBQVUsQ0FBQ1MsR0FBWCxDQUFlUCxVQUFVLENBQUNRLElBQVgsRUFBZjtBQUVBVixVQUFVLENBQUNXLE9BQVgsQ0FBbUIsR0FBbkIsRUFBd0JILElBQUksQ0FBQ0ksZUFBN0IsRUFBOEMsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEtBQWM7QUFBRUEsRUFBQUEsR0FBRyxDQUFDQyxVQUFKLENBQWUsR0FBZjtBQUFzQixDQUFwRjtBQUVBZixVQUFVLENBQUNnQixJQUFYLENBQWdCLGVBQWhCLEVBQWlDUixJQUFJLENBQUNJLGVBQXRDLEVBQXVETCxjQUFjLENBQUNVLFdBQXRFO0FBRUFqQixVQUFVLENBQUNnQixJQUFYLENBQWdCLFFBQWhCLEVBQTBCUixJQUFJLENBQUNJLGVBQS9CLEVBQWdETCxjQUFjLENBQUNXLEtBQS9EO0FBRUFsQixVQUFVLENBQUNnQixJQUFYLENBQWdCLHNCQUFoQixFQUF1Q1gsWUFBWSxDQUFDYyxVQUFwRCxFQUFnRVosY0FBYyxDQUFDYSxlQUEvRTtBQUVBcEIsVUFBVSxDQUFDZ0IsSUFBWCxDQUFnQiwyQkFBaEIsRUFBNENYLFlBQVksQ0FBQ2MsVUFBekQsRUFBcUVoQixNQUFNLENBQUNrQixlQUE1RTtBQUVBckIsVUFBVSxDQUFDc0IsR0FBWCxDQUFlLFNBQWYsRUFBeUJqQixZQUFZLENBQUNjLFVBQXRDLEVBQWtEWixjQUFjLENBQUNnQixNQUFqRTtBQUVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUJ6QixVQUFqQiIsInNvdXJjZXNDb250ZW50IjpbInZhciBleHByZXNzID0gcmVxdWlyZSgnZXhwcmVzcycpO1xyXG52YXIgdXNlclJvdXRlciA9IGV4cHJlc3MuUm91dGVyKCk7XHJcblxyXG5jb25zdCBib2R5UGFyc2VyID0gcmVxdWlyZSgnYm9keS1wYXJzZXInKTtcclxudmFyIHVwbG9hZCA9IHJlcXVpcmUoJy4uL2NvbnRyb2xsZXJzL3VwbG9hZCcpO1xyXG5jb25zdCB7IGNoZWNrU2NoZW1hIH0gPSByZXF1aXJlKCdleHByZXNzLXZhbGlkYXRvcicpO1xyXG52YXIgYXV0aGVudGljYXRlID0gcmVxdWlyZSgnLi4vbWlkZGxld2FyZS9hdXRoZW50aWNhdGUnKTtcclxudmFyIHZhbGlkYXRpb25SdWxlcyA9IHJlcXVpcmUoJy4uL21pZGRsZXdhcmUvdmFsaWRhdGlvbicpO1xyXG52YXIgdXNlckNvbnRyb2xsZXIgPSByZXF1aXJlKCcuLi9jb250cm9sbGVycy91c2VyQ29udHJvbGxlcicpO1xyXG5jb25zdCBjb3JzID0gcmVxdWlyZSgnLi9jb3JzJyk7XHJcblxyXG51c2VyUm91dGVyLnVzZShib2R5UGFyc2VyLmpzb24oKSk7XHJcblxyXG51c2VyUm91dGVyLm9wdGlvbnMoJyonLCBjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcblxyXG51c2VyUm91dGVyLnBvc3QoJy9zaWdudXAvYWRtaW4nLCBjb3JzLmNvcnNXaXRoT3B0aW9ucywgdXNlckNvbnRyb2xsZXIuc2lnbnVwQWRtaW4pO1xyXG5cclxudXNlclJvdXRlci5wb3N0KCcvbG9naW4nLCBjb3JzLmNvcnNXaXRoT3B0aW9ucywgdXNlckNvbnRyb2xsZXIubG9naW4pO1xyXG5cclxudXNlclJvdXRlci5wb3N0KCcvY2hhbmdlcGFzc293b3JkLzppZCcsYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIHVzZXJDb250cm9sbGVyLmNoYW5nZVBhc3Nvd29yZCk7XHJcblxyXG51c2VyUm91dGVyLnBvc3QoXCIvdXBkYXRlcHJvZmlsZXBpY3R1cmUvOmlkXCIsYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIHVwbG9hZC5VcGxvYWRVc2VySW1hZ2UpO1xyXG5cclxudXNlclJvdXRlci5nZXQoJy9sb2dvdXQnLGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCB1c2VyQ29udHJvbGxlci5sb2dvdXQpO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSB1c2VyUm91dGVyO1xyXG4iXX0=\",\"originalCode\":\"var express = require('express');\\r\\nvar userRouter = express.Router();\\r\\n\\r\\nconst bodyParser = require('body-parser');\\r\\nvar upload = require('../controllers/upload');\\r\\nconst { checkSchema } = require('express-validator');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\nvar validationRules = require('../middleware/validation');\\r\\nvar userController = require('../controllers/userController');\\r\\nconst cors = require('./cors');\\r\\n\\r\\nuserRouter.use(bodyParser.json());\\r\\n\\r\\nuserRouter.options('*', cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n\\r\\nuserRouter.post('/signup/admin', cors.corsWithOptions, userController.signupAdmin);\\r\\n\\r\\nuserRouter.post('/login', cors.corsWithOptions, userController.login);\\r\\n\\r\\nuserRouter.post('/changepassoword/:id',authenticate.verifyUser, userController.changePassoword);\\r\\n\\r\\nuserRouter.post(\\\"/updateprofilepicture/:id\\\",authenticate.verifyUser, upload.UploadUserImage);\\r\\n\\r\\nuserRouter.get('/logout',authenticate.verifyUser, userController.logout);\\r\\n\\r\\nmodule.exports = userRouter;\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/a6/userRouter_a6221ff3be20743fe1c0fd1dc9fd8435.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2377\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\userRouter.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":4566,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":4563,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":606,\"endOffset\":646,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const sharp = require('sharp');\\n\\nconst uid = require('uid');\\n\\nconst fs = require('fs');\\n\\nconst Users = require('../models/users');\\n\\nconst Places = require('../models/visitingPlaces');\\n\\nconst uploadFile = async (req, res) => {\\n try {\\n await upload(req, res);\\n\\n if (req.file == undefined) {\\n return res.send(`You must select a file.`);\\n }\\n\\n return res.send(`File has been uploaded.`);\\n } catch (error) {\\n return res.send(`Error when trying upload image: ${error}`);\\n }\\n};\\n\\nconst UploadUserImage = async (req, res, next) => {\\n try {\\n const user_id = req.params._id;\\n const user = await Users.findById(user_id);\\n console.log(req);\\n let imageUrl;\\n\\n if (req.file) {\\n imageUrl = `${uid()}__${req.file.originalname}`;\\n let filename = `images/userImages/${imageUrl}`;\\n let previousImagePath = `images/userImages/${user.image}`;\\n const imageExist = fs.existsSync(previousImagePath);\\n\\n if (imageExist) {\\n deleteImage(previousImagePath);\\n }\\n\\n await sharp(req.file.path).rotate().resize(500, 500).toFile(filename);\\n fs.unlink(req.file.path, err => {\\n if (err) {}\\n });\\n } else {\\n imageUrl = 'profile.png';\\n }\\n\\n user.image = imageUrl;\\n await user.save();\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n message: 'Successfully updated profile picture'\\n });\\n } catch (err) {\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Error while updating profile picture'\\n });\\n }\\n};\\n\\nconst uploadPlaceImage = async (req, res, next) => {\\n try {\\n const place_id = req.params._id;\\n const place = await Places.findById(place_id);\\n let imageUrl;\\n\\n if (req.file) {\\n imageUrl = `${uid()}__${req.file.originalname}`;\\n let filename = `images/placeImages/${imageUrl}`;\\n let previousImagePath = `images/placeImages/${place.image}`;\\n const imageExist = fs.existsSync(previousImagePath);\\n\\n if (imageExist) {\\n deleteImage(previousImagePath);\\n }\\n\\n await sharp(req.file.path).rotate().resize(500, 500).toFile(filename);\\n fs.unlink(req.file.path, err => {\\n if (err) {}\\n });\\n } else {\\n imageUrl = 'image.png';\\n }\\n\\n place.image = imageUrl;\\n await place.save();\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n message: 'Successfully updated profile picture'\\n });\\n } catch (err) {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Error while updating profile picture'\\n });\\n }\\n};\\n\\nexports.UploadUserImage = UploadUserImage;\\nexports.uploadFile = uploadFile;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVwbG9hZC5qcyJdLCJuYW1lcyI6WyJzaGFycCIsInJlcXVpcmUiLCJ1aWQiLCJmcyIsIlVzZXJzIiwiUGxhY2VzIiwidXBsb2FkRmlsZSIsInJlcSIsInJlcyIsInVwbG9hZCIsImZpbGUiLCJ1bmRlZmluZWQiLCJzZW5kIiwiZXJyb3IiLCJVcGxvYWRVc2VySW1hZ2UiLCJuZXh0IiwidXNlcl9pZCIsInBhcmFtcyIsIl9pZCIsInVzZXIiLCJmaW5kQnlJZCIsImNvbnNvbGUiLCJsb2ciLCJpbWFnZVVybCIsIm9yaWdpbmFsbmFtZSIsImZpbGVuYW1lIiwicHJldmlvdXNJbWFnZVBhdGgiLCJpbWFnZSIsImltYWdlRXhpc3QiLCJleGlzdHNTeW5jIiwiZGVsZXRlSW1hZ2UiLCJwYXRoIiwicm90YXRlIiwicmVzaXplIiwidG9GaWxlIiwidW5saW5rIiwiZXJyIiwic2F2ZSIsInN0YXR1c0NvZGUiLCJzZXRIZWFkZXIiLCJqc29uIiwic3VjY2VzcyIsIm1lc3NhZ2UiLCJ1cGxvYWRQbGFjZUltYWdlIiwicGxhY2VfaWQiLCJwbGFjZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLEtBQUssR0FBR0MsT0FBTyxDQUFDLE9BQUQsQ0FBckI7O0FBQ0EsTUFBTUMsR0FBRyxHQUFHRCxPQUFPLENBQUMsS0FBRCxDQUFuQjs7QUFDQSxNQUFNRSxFQUFFLEdBQUdGLE9BQU8sQ0FBQyxJQUFELENBQWxCOztBQUNBLE1BQU1HLEtBQUssR0FBR0gsT0FBTyxDQUFDLGlCQUFELENBQXJCOztBQUNBLE1BQU1JLE1BQU0sR0FBR0osT0FBTyxDQUFDLDBCQUFELENBQXRCOztBQUVBLE1BQU1LLFVBQVUsR0FBRyxPQUFPQyxHQUFQLEVBQVlDLEdBQVosS0FBb0I7QUFDbkMsTUFBSTtBQUNBLFVBQU1DLE1BQU0sQ0FBQ0YsR0FBRCxFQUFNQyxHQUFOLENBQVo7O0FBRUEsUUFBSUQsR0FBRyxDQUFDRyxJQUFKLElBQVlDLFNBQWhCLEVBQTJCO0FBQ3ZCLGFBQU9I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Q0FBQzhCLFVBQUosR0FBaUIsR0FBakI7QUFDQTlCLElBQUFBLEdBQUcsQ0FBQytCLFNBQUosQ0FBYyxjQUFkLEVBQThCLGtCQUE5QjtBQUNBL0IsSUFBQUEsR0FBRyxDQUFDZ0MsSUFBSixDQUFTO0FBQUVDLE1BQUFBLE9BQU8sRUFBRSxLQUFYO0FBQWtCQyxNQUFBQSxPQUFPLEVBQUU7QUFBM0IsS0FBVDtBQUNIO0FBQ0osQ0F6Q0Q7O0FBMkNBSSxPQUFPLENBQUNoQyxlQUFSLEdBQTBCQSxlQUExQjtBQUNBZ0MsT0FBTyxDQUFDeEMsVUFBUixHQUFxQkEsVUFBckIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBzaGFycCA9IHJlcXVpcmUoJ3NoYXJwJyk7XHJcbmNvbnN0IHVpZCA9IHJlcXVpcmUoJ3VpZCcpO1xyXG5jb25zdCBmcyA9IHJlcXVpcmUoJ2ZzJyk7XHJcbmNvbnN0IFVzZXJzID0gcmVxdWlyZSgnLi4vbW9kZWxzL3VzZXJzJyk7XHJcbmNvbnN0IFBsYWNlcyA9IHJlcXVpcmUoJy4uL21vZGVscy92aXNpdGluZ1BsYWNlcycpXHJcblxyXG5jb25zdCB1cGxvYWRGaWxlID0gYXN5bmMgKHJlcSwgcmVzKSA9PiB7XHJcbiAgICB0cnkge1xyXG4gICAgICAgIGF3YWl0IHVwbG9hZChyZXEsIHJlcyk7XHJcblxyXG4gICAgICAgIGlmIChyZXEuZmlsZSA9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlcy5zZW5kKGBZb3UgbXVzdCBzZWxlY3QgYSBmaWxlLmApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHJlcy5zZW5kKGBGaWxlIGhhcyBiZWVuIHVwbG9hZGVkLmApO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICByZXR1cm4gcmVzLnNlbmQoYEVycm9yIHdoZW4gdHJ5aW5nIHVwbG9hZCBpbWFnZTogJHtlcnJvcn1gKTtcclxuICAgIH1cclxufTtcclxuXHJcbmNvbnN0IFVwbG9hZFVzZXJJbWFnZSA9IGFzeW5jIChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgICBjb25zdCB1c2VyX2lkID0gcmVxLnBhcmFtcy5faWQ7XHJcbiAgICAgICAgY29uc3QgdXNlciA9IGF3YWl0IFVzZXJzLmZpbmRCeUlkKHVzZXJfaWQpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKHJlcSk7XHJcblxyXG4gICAgICAgIGxldCBpbWFnZVVybDtcclxuICAgICAgICBpZiAocmVxLmZpbGUpIHtcclxuICAgICAgICAgICAgaW1hZ2VVcmwgPSBgJHt1aWQoKX1fXyR7cmVxLmZpbGUub3JpZ2luYWxuYW1lfWA7XHJcbiAgICAgICAgICAgIGxldCBmaWxlbmFtZSA9IGBpbWFnZXMvdXNlckltYWdlcy8ke2ltYWdlVXJsfWA7XHJcbiAgICAgICAgICAgIGxldCBwcmV2aW91c0ltYWdlUGF0aCA9IGBpbWFnZXMvdXNlckltYWdlcy8ke3VzZXIuaW1hZ2V9YDtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGltYWdlRXhpc3QgPSBmcy5leGlzdHNTeW5jKHByZXZpb3VzSW1hZ2VQYXRoKTtcclxuICAgICAgICAgICAgaWYgKGltYWdlRXhpc3QpIHtcclxuICAgICAgICAgICAgICAgIGRlbGV0ZUltYWdlKHByZXZpb3VzSW1hZ2VQYXRoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBhd2FpdCBzaGFycChyZXEuZmlsZS5wYXRoKVxyXG4gICAgICAgICAgICAgICAgLnJvdGF0ZSgpXHJcbiAgICAgICAgICAgICAgICAucmVzaXplKDUwMCwgNTAwKVxyXG4gICAgICAgICAgICAgICAgLnRvRmlsZShmaWxlbmFtZSk7XHJcblxyXG4gICAgICAgICAgICBmcy51bmxpbmsocmVxLmZpbGUucGF0aCwgKGVycikgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGltYWdlVXJsID0gJ3Byb2ZpbGUucG5nJztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHVzZXIuaW1hZ2UgPSBpbWFnZVVybDtcclxuICAgICAgICBhd2FpdCB1c2VyLnNhdmUoKTtcclxuXHJcblxyXG4gICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCBtZXNzYWdlOiAnU3VjY2Vzc2Z1bGx5IHVwZGF0ZWQgcHJvZmlsZSBwaWN0dXJlJyB9KTtcclxuXHJcbiAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDUwMDtcclxuICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogZmFsc2UsIG1lc3NhZ2U6ICdFcnJvciB3aGlsZSB1cGRhdGluZyBwcm9maWxlIHBpY3R1cmUnIH0pO1xyXG4gICAgfVxyXG59O1xyXG5cclxuY29uc3QgdXBsb2FkUGxhY2VJbWFnZSA9IGFzeW5jIChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgICBjb25zdCBwbGFjZV9pZCA9IHJlcS5wYXJhbXMuX2lkO1xyXG4gICAgICAgIGNvbnN0IHBsYWNlID0gYXdhaXQgUGxhY2VzLmZpbmRCeUlkKHBsYWNlX2lkKTtcclxuXHJcbiAgICAgICAgbGV0IGltYWdlVXJsO1xyXG4gICAgICAgIGlmIChyZXEuZmlsZSkge1xyXG4gICAgICAgICAgICBpbWFnZVVybCA9IGAke3VpZCgpfV9fJHtyZXEuZmlsZS5vcmlnaW5hbG5hbWV9YDtcclxuICAgICAgICAgICAgbGV0IGZpbGVuYW1lID0gYGltYWdlcy9wbGFjZUltYWdlcy8ke2ltYWdlVXJsfWA7XHJcbiAgICAgICAgICAgIGxldCBwcmV2aW91c0ltYWdlUGF0aCA9IGBpbWFnZXMvcGxhY2VJbWFnZXMvJHtwbGFjZS5pbWFnZX1gO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgaW1hZ2VFeGlzdCA9IGZzLmV4aXN0c1N5bmMocHJldmlvdXNJbWFnZVBhdGgpO1xyXG4gICAgICAgICAgICBpZiAoaW1hZ2VFeGlzdCkge1xyXG4gICAgICAgICAgICAgICAgZGVsZXRlSW1hZ2UocHJldmlvdXNJbWFnZVBhdGgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGF3YWl0IHNoYXJwKHJlcS5maWxlLnBhdGgpXHJcbiAgICAgICAgICAgICAgICAucm90YXRlKClcclxuICAgICAgICAgICAgICAgIC5yZXNpemUoNTAwLCA1MDApXHJcbiAgICAgICAgICAgICAgICAudG9GaWxlKGZpbGVuYW1lKTtcclxuXHJcbiAgICAgICAgICAgIGZzLnVubGluayhyZXEuZmlsZS5wYXRoLCAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaW1hZ2VVcmwgPSAnaW1hZ2UucG5nJztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHBsYWNlLmltYWdlID0gaW1hZ2VVcmw7XHJcbiAgICAgICAgYXdhaXQgcGxhY2Uuc2F2ZSgpO1xyXG5cclxuXHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA1MDA7XHJcbiAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIG1lc3NhZ2U6ICdTdWNjZXNzZnVsbHkgdXBkYXRlZCBwcm9maWxlIHBpY3R1cmUnIH0pO1xyXG5cclxuICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogJ0Vycm9yIHdoaWxlIHVwZGF0aW5nIHByb2ZpbGUgcGljdHVyZScgfSk7XHJcbiAgICB9XHJcbn07XHJcblxyXG5leHBvcnRzLlVwbG9hZFVzZXJJbWFnZSA9IFVwbG9hZFVzZXJJbWFnZTtcclxuZXhwb3J0cy51cGxvYWRGaWxlID0gdXBsb2FkRmlsZTsiXX0=\",\"originalCode\":\"const sharp = require('sharp');\\r\\nconst uid = require('uid');\\r\\nconst fs = require('fs');\\r\\nconst Users = require('../models/users');\\r\\nconst Places = require('../models/visitingPlaces')\\r\\n\\r\\nconst uploadFile = async (req, res) => {\\r\\n try {\\r\\n await upload(req, res);\\r\\n\\r\\n if (req.file == undefined) {\\r\\n return res.send(`You must select a file.`);\\r\\n }\\r\\n\\r\\n return res.send(`File has been uploaded.`);\\r\\n } catch (error) {\\r\\n return res.send(`Error when trying upload image: ${error}`);\\r\\n }\\r\\n};\\r\\n\\r\\nconst UploadUserImage = async (req, res, next) => {\\r\\n try {\\r\\n const user_id = req.params._id;\\r\\n const user = await Users.findById(user_id);\\r\\n console.log(req);\\r\\n\\r\\n let imageUrl;\\r\\n if (req.file) {\\r\\n imageUrl = `${uid()}__${req.file.originalname}`;\\r\\n let filename = `images/userImages/${imageUrl}`;\\r\\n let previousImagePath = `images/userImages/${user.image}`;\\r\\n\\r\\n const imageExist = fs.existsSync(previousImagePath);\\r\\n if (imageExist) {\\r\\n deleteImage(previousImagePath);\\r\\n }\\r\\n await sharp(req.file.path)\\r\\n .rotate()\\r\\n .resize(500, 500)\\r\\n .toFile(filename);\\r\\n\\r\\n fs.unlink(req.file.path, (err) => {\\r\\n if (err) {\\r\\n }\\r\\n })\\r\\n } else {\\r\\n imageUrl = 'profile.png';\\r\\n }\\r\\n\\r\\n user.image = imageUrl;\\r\\n await user.save();\\r\\n\\r\\n\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, message: 'Successfully updated profile picture' });\\r\\n\\r\\n } catch (err) {\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Error while updating profile picture' });\\r\\n }\\r\\n};\\r\\n\\r\\nconst uploadPlaceImage = async (req, res, next) => {\\r\\n try {\\r\\n const place_id = req.params._id;\\r\\n const place = await Places.findById(place_id);\\r\\n\\r\\n let imageUrl;\\r\\n if (req.file) {\\r\\n imageUrl = `${uid()}__${req.file.originalname}`;\\r\\n let filename = `images/placeImages/${imageUrl}`;\\r\\n let previousImagePath = `images/placeImages/${place.image}`;\\r\\n\\r\\n const imageExist = fs.existsSync(previousImagePath);\\r\\n if (imageExist) {\\r\\n deleteImage(previousImagePath);\\r\\n }\\r\\n await sharp(req.file.path)\\r\\n .rotate()\\r\\n .resize(500, 500)\\r\\n .toFile(filename);\\r\\n\\r\\n fs.unlink(req.file.path, (err) => {\\r\\n if (err) {\\r\\n }\\r\\n })\\r\\n } else {\\r\\n imageUrl = 'image.png';\\r\\n }\\r\\n\\r\\n place.image = imageUrl;\\r\\n await place.save();\\r\\n\\r\\n\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, message: 'Successfully updated profile picture' });\\r\\n\\r\\n } catch (err) {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Error while updating profile picture' });\\r\\n }\\r\\n};\\r\\n\\r\\nexports.UploadUserImage = UploadUserImage;\\r\\nexports.uploadFile = uploadFile;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/7c/upload_7c4638f764653e4bdd79a0ce3f99ff41.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2378\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\upload.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":12934,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":12931,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"uploadFile\",\"ranges\":[{\"startOffset\":293,\"endOffset\":580,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"UploadUserImage\",\"ranges\":[{\"startOffset\":607,\"endOffset\":1726,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"uploadPlaceImage\",\"ranges\":[{\"startOffset\":1754,\"endOffset\":2858,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"var mongoose = require('mongoose');\\n\\nvar Schema = mongoose.Schema;\\n\\nvar passportLocalMongoose = require('passport-local-mongoose');\\n\\nvar User = new Schema({\\n firstname: {\\n type: String,\\n required: true\\n },\\n lastname: {\\n type: String,\\n required: true\\n },\\n email: {\\n type: String,\\n required: true,\\n unique: true\\n },\\n mobile: {\\n type: String\\n },\\n role: {\\n type: String,\\n default: \\\"user\\\",\\n enum: ['user', 'moderater', 'admin']\\n },\\n image: {\\n type: String\\n },\\n suite: {\\n type: String,\\n enum: ['gold', 'luxury', 'platinum']\\n },\\n rommnumber: {\\n type: String\\n },\\n userstate: {\\n type: String,\\n default: \\\"in\\\",\\n enum: ['in', 'out']\\n }\\n}, {\\n timestamps: true\\n});\\nUser.plugin(passportLocalMongoose);\\nUser.index({\\n '$**': 'text'\\n});\\nvar Users = mongoose.model('User', User);\\nmodule.exports = Users;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVzZXJzLmpzIl0sIm5hbWVzIjpbIm1vbmdvb3NlIiwicmVxdWlyZSIsIlNjaGVtYSIsInBhc3Nwb3J0TG9jYWxNb25nb29zZSIsIlVzZXIiLCJmaXJzdG5hbWUiLCJ0eXBlIiwiU3RyaW5nIiwicmVxdWlyZWQiLCJsYXN0bmFtZSIsImVtYWlsIiwidW5pcXVlIiwibW9iaWxlIiwicm9sZSIsImRlZmF1bHQiLCJlbnVtIiwiaW1hZ2UiLCJzdWl0ZSIsInJvbW1udW1iZXIiLCJ1c2Vyc3RhdGUiLCJ0aW1lc3RhbXBzIiwicGx1Z2luIiwiaW5kZXgiLCJVc2VycyIsIm1vZGVsIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsSUFBSUEsUUFBUSxHQUFHQyxPQUFPLENBQUMsVUFBRCxDQUF0Qjs7QUFDQSxJQUFJQyxNQUFNLEdBQUdGLFFBQVEsQ0FBQ0UsTUFBdEI7O0FBRUEsSUFBSUMscUJBQXFCLEdBQUdGLE9BQU8sQ0FBQyx5QkFBRCxDQUFuQzs7QUFFQSxJQUFJRyxJQUFJLEdBQUcsSUFBSUYsTUFBSixDQUFXO0FBQ2xCRyxFQUFBQSxTQUFTLEVBQUU7QUFDUEMsSUFBQUEsSUFBSSxFQUFFQyxNQURDO0FBRVBDLElBQUFBLFFBQVEsRUFBRTtBQUZILEdBRE87QUFLbEJDLEVBQUFBLFFBQVEsRUFBRTtBQUNOSCxJQUFBQSxJQUFJLEVBQUVDLE1BREE7QUFFTkMsSUFBQUEsUUFBUSxFQUFFO0FBRkosR0FMUTtBQVNsQkUsRUFBQUEsS0FBSyxFQUFFO0FBQ0hKLElBQUFBLElBQUksRUFBRUMsTUFESDtBQUVIQyxJQUFBQSxRQUFRLEVBQUUsSUFGUDtBQUdIRyxJQUFBQSxNQUFNLEVBQUU7QUFITCxHQVRXO0FBY2xCQyxFQUFBQSxNQUFNLEVBQUM7QUFDSE4sSUFBQUEsSUFBSSxFQUFFQztBQURILEdBZFc7QUFpQmxCTSxFQUFBQSxJQUFJLEVBQ0o7QUFDSVAsSUFBQUEsSUFBSSxFQUFFQyxNQURWO0FBRUlPLElBQUFBLE9BQU8sRUFBRSxNQUZiO0FBR0lDLElBQUFBLElBQUksRUFBQyxDQUFDLE1BQUQsRUFBUSxXQUFSLEVBQW9CLE9BQXBCO0FBSFQsR0FsQmtCO0FBdUJsQkMsRUFBQUEsS0FBSyxFQUFFO0FBQ0hWLElBQUFBLElBQUksRUFBRUM7QUFESCxHQXZCVztBQTBCbEJVLEVBQUFBLEtBQUssRUFBQztBQUNGWCxJQUFBQSxJQUFJLEVBQUVDLE1BREo7QUFFRlEsSUFBQUEsSUFBSSxFQUFDLENBQUMsTUFBRCxFQUFRLFFBQVIsRUFBaUIsVUFBakI7QUFGSCxHQTFCWTtBQThCbEJHLEVBQUFBLFVBQVUsRUFBQztBQUNQWixJQUFBQSxJQUFJLEVBQUVDO0FBREMsR0E5Qk87QUFpQ2xCWSxFQUFBQSxTQUFTLEVBQUM7QUFDTmIsSUFBQUEsSUFBSSxFQUFFQyxNQURBO0FBRU5PLElBQUFBLE9BQU8sRUFBRSxJQUZIO0FBR05DLElBQUFBLElBQUksRUFBQyxDQUFDLElBQUQsRUFBTSxLQUFOO0FBSEM7QUFqQ1EsQ0FBWCxFQXNDUjtBQUNDSyxFQUFBQSxVQUFVLEVBQUU7QUFEYixDQXRDUSxDQUFYO0FBMENBaEIsSUFBSSxDQUFDaUIsTUFBTCxDQUFZbEIscUJBQVo7QUFDQUMsSUFBSSxDQUFDa0IsS0FBTCxDQUFXO0FBQUMsU0FBTTtBQUFQLENBQVg7QUFDQSxJQUFJQyxLQUFLLEdBQUd2QixRQUFRLENBQUN3QixLQUFULENBQWUsTUFBZixFQUF1QnBCLElBQXZCLENBQVo7QUFFQXFCLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQkgsS0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgbW9uZ29vc2UgPSByZXF1aXJlKCdtb25nb29zZScpO1xyXG52YXIgU2NoZW1hID0gbW9uZ29vc2UuU2NoZW1hO1xyXG5cclxudmFyIHBhc3Nwb3J0TG9jYWxNb25nb29zZSA9IHJlcXVpcmUoJ3Bhc3Nwb3J0LWxvY2FsLW1vbmdvb3NlJyk7XHJcblxyXG52YXIgVXNlciA9IG5ldyBTY2hlbWEoe1xyXG4gICAgZmlyc3RuYW1lOiB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlXHJcbiAgICB9LFxyXG4gICAgbGFzdG5hbWU6IHtcclxuICAgICAgICB0eXBlOiBTdHJpbmcsXHJcbiAgICAgICAgcmVxdWlyZWQ6IHRydWVcclxuICAgIH0sXHJcbiAgICBlbWFpbDoge1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgICB1bmlxdWU6IHRydWVcclxuICAgIH0sXHJcbiAgICBtb2JpbGU6e1xyXG4gICAgICAgIHR5cGU6IFN0cmluZ1xyXG4gICAgfSxcclxuICAgIHJvbGU6XHJcbiAgICB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICAgIGRlZmF1bHQ6IFwidXNlclwiLFxyXG4gICAgICAgIGVudW06Wyd1c2VyJywnbW9kZXJhdGVyJywnYWRtaW4nXVxyXG4gICAgfSxcclxuICAgIGltYWdlOiB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nXHJcbiAgICB9LFxyXG4gICAgc3VpdGU6e1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICBlbnVtOlsnZ29sZCcsJ2x1eHVyeScsJ3BsYXRpbnVtJ11cclxuICAgIH0sXHJcbiAgICByb21tbnVtYmVyOntcclxuICAgICAgICB0eXBlOiBTdHJpbmdcclxuICAgIH0sXHJcbiAgICB1c2Vyc3RhdGU6e1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICBkZWZhdWx0OiBcImluXCIsXHJcbiAgICAgICAgZW51bTpbJ2luJywnb3V0J11cclxuICAgIH1cclxufSwge1xyXG4gICAgdGltZXN0YW1wczogdHJ1ZVxyXG59KTtcclxuXHJcblVzZXIucGx1Z2luKHBhc3Nwb3J0TG9jYWxNb25nb29zZSk7XHJcblVzZXIuaW5kZXgoeyckKionOid0ZXh0J30pO1xyXG52YXIgVXNlcnMgPSBtb25nb29zZS5tb2RlbCgnVXNlcicsIFVzZXIpO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBVc2VyczsiXX0=\",\"originalCode\":\"var mongoose = require('mongoose');\\r\\nvar Schema = mongoose.Schema;\\r\\n\\r\\nvar passportLocalMongoose = require('passport-local-mongoose');\\r\\n\\r\\nvar User = new Schema({\\r\\n firstname: {\\r\\n type: String,\\r\\n required: true\\r\\n },\\r\\n lastname: {\\r\\n type: String,\\r\\n required: true\\r\\n },\\r\\n email: {\\r\\n type: String,\\r\\n required: true,\\r\\n unique: true\\r\\n },\\r\\n mobile:{\\r\\n type: String\\r\\n },\\r\\n role:\\r\\n {\\r\\n type: String,\\r\\n default: \\\"user\\\",\\r\\n enum:['user','moderater','admin']\\r\\n },\\r\\n image: {\\r\\n type: String\\r\\n },\\r\\n suite:{\\r\\n type: String,\\r\\n enum:['gold','luxury','platinum']\\r\\n },\\r\\n rommnumber:{\\r\\n type: String\\r\\n },\\r\\n userstate:{\\r\\n type: String,\\r\\n default: \\\"in\\\",\\r\\n enum:['in','out']\\r\\n }\\r\\n}, {\\r\\n timestamps: true\\r\\n});\\r\\n\\r\\nUser.plugin(passportLocalMongoose);\\r\\nUser.index({'$**':'text'});\\r\\nvar Users = mongoose.model('User', User);\\r\\n\\r\\nmodule.exports = Users;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/fa/users_fa250a82bd410ffb1909f920e93eed19.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2448\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\models\\\\users.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":4633,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":4630,\"count\":1}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const mongoose = require('mongoose');\\n\\nconst Schema = mongoose.Schema;\\nconst pointSchema = new Schema({\\n type: {\\n type: String,\\n enum: ['Point'],\\n required: true,\\n default: 'Point'\\n },\\n coordinates: {\\n type: [Number],\\n required: true\\n }\\n});\\nconst placeSchema = new Schema({\\n name: {\\n type: String,\\n required: true,\\n unique: true\\n },\\n description: {\\n type: String,\\n required: true\\n },\\n location: {\\n type: pointSchema,\\n index: '2dsphere',\\n required: true\\n },\\n distance: {\\n type: String,\\n required: true\\n },\\n timeToReach: {\\n type: String,\\n required: true\\n },\\n image: {\\n type: String\\n },\\n travellingMethods: [{\\n type: String,\\n enum: ['Bus', 'Car', 'Train', 'Threewheeler', 'Foot']\\n }]\\n}, {\\n timestamps: true\\n});\\nplaceSchema.index({\\n '$**': 'text'\\n});\\nvar Places = mongoose.model('Place', placeSchema);\\nmodule.exports = Places;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInZpc2l0aW5nUGxhY2VzLmpzIl0sIm5hbWVzIjpbIm1vbmdvb3NlIiwicmVxdWlyZSIsIlNjaGVtYSIsInBvaW50U2NoZW1hIiwidHlwZSIsIlN0cmluZyIsImVudW0iLCJyZXF1aXJlZCIsImRlZmF1bHQiLCJjb29yZGluYXRlcyIsIk51bWJlciIsInBsYWNlU2NoZW1hIiwibmFtZSIsInVuaXF1ZSIsImRlc2NyaXB0aW9uIiwibG9jYXRpb24iLCJpbmRleCIsImRpc3RhbmNlIiwidGltZVRvUmVhY2giLCJpbWFnZSIsInRyYXZlbGxpbmdNZXRob2RzIiwidGltZXN0YW1wcyIsIlBsYWNlcyIsIm1vZGVsIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsUUFBUSxHQUFHQyxPQUFPLENBQUMsVUFBRCxDQUF4Qjs7QUFDQSxNQUFNQyxNQUFNLEdBQUdGLFFBQVEsQ0FBQ0UsTUFBeEI7QUFFQSxNQUFNQyxXQUFXLEdBQUcsSUFBSUQsTUFBSixDQUFXO0FBQzNCRSxFQUFBQSxJQUFJLEVBQUU7QUFDRkEsSUFBQUEsSUFBSSxFQUFFQyxNQURKO0FBRUZDLElBQUFBLElBQUksRUFBRSxDQUFDLE9BQUQsQ0FGSjtBQUdGQyxJQUFBQSxRQUFRLEVBQUUsSUFIUjtBQUlGQyxJQUFBQSxPQUFPLEVBQUU7QUFKUCxHQURxQjtBQU8zQkMsRUFBQUEsV0FBVyxFQUFFO0FBQ1RMLElBQUFBLElBQUksRUFBRSxDQUFDTSxNQUFELENBREc7QUFFVEgsSUFBQUEsUUFBUSxFQUFFO0FBRkQ7QUFQYyxDQUFYLENBQXBCO0FBYUEsTUFBTUksV0FBVyxHQUFHLElBQUlULE1BQUosQ0FBVztBQUMzQlUsRUFBQUEsSUFBSSxFQUFFO0FBQ0ZSLElBQUFBLElBQUksRUFBRUMsTUFESjtBQUVGRSxJQUFBQSxRQUFRLEVBQUUsSUFGUjtBQUdGTSxJQUFBQSxNQUFNLEVBQUU7QUFITixHQURxQjtBQU0zQkMsRUFBQUEsV0FBVyxFQUFFO0FBQ1RWLElBQUFBLElBQUksRUFBRUMsTUFERztBQUVURSxJQUFBQSxRQUFRLEVBQUU7QUFGRCxHQU5jO0FBVTNCUSxFQUFBQSxRQUFRLEVBQUU7QUFDTlgsSUFBQUEsSUFBSSxFQUFFRCxXQURBO0FBRU5hLElBQUFBLEtBQUssRUFBRSxVQUZEO0FBR05ULElBQUFBLFFBQVEsRUFBRTtBQUhKLEdBVmlCO0FBZTNCVSxFQUFBQSxRQUFRLEVBQUU7QUFDTmIsSUFBQUEsSUFBSSxFQUFFQyxNQURBO0FBRU5FLElBQUFBLFFBQVEsRUFBRTtBQUZKLEdBZmlCO0FBbUIzQlcsRUFBQUEsV0FBVyxFQUFFO0FBQ1RkLElBQUFBLElBQUksRUFBRUMsTUFERztBQUVURSxJQUFBQSxRQUFRLEVBQUU7QUFGRCxHQW5CYztBQXVCM0JZLEVBQUFBLEtBQUssRUFDTDtBQUNJZixJQUFBQSxJQUFJLEVBQUVDO0FBRFYsR0F4QjJCO0FBMkIzQmUsRUFBQUEsaUJBQWlCLEVBQUUsQ0FDZjtBQUNJaEIsSUFBQUEsSUFBSSxFQUFFQyxNQURWO0FBRUlDLElBQUFBLElBQUksRUFBRSxDQUFDLEtBQUQsRUFBUSxLQUFSLEVBQWUsT0FBZixFQUF3QixjQUF4QixFQUF3QyxNQUF4QztBQUZWLEdBRGU7QUEzQlEsQ0FBWCxFQWlDakI7QUFDQ2UsRUFBQUEsVUFBVSxFQUFFO0FBRGIsQ0FqQ2lCLENBQXBCO0FBcUNBVixXQUFXLENBQUNLLEtBQVosQ0FBa0I7QUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJTSxNQUFNLEdBQUd0QixRQUFRLENBQUN1QixLQUFULENBQWUsT0FBZixFQUF3QlosV0FBeEIsQ0FBYjtBQUVBYSxNQUFNLENBQUNDLE9BQVAsR0FBaUJILE1BQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgbW9uZ29vc2UgPSByZXF1aXJlKCdtb25nb29zZScpO1xyXG5jb25zdCBTY2hlbWEgPSBtb25nb29zZS5TY2hlbWE7XHJcblxyXG5jb25zdCBwb2ludFNjaGVtYSA9IG5ldyBTY2hlbWEoe1xyXG4gICAgdHlwZToge1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICBlbnVtOiBbJ1BvaW50J10sXHJcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXHJcbiAgICAgICAgZGVmYXVsdDogJ1BvaW50J1xyXG4gICAgfSxcclxuICAgIGNvb3JkaW5hdGVzOiB7XHJcbiAgICAgICAgdHlwZTogW051bWJlcl0sXHJcbiAgICAgICAgcmVxdWlyZWQ6IHRydWVcclxuICAgIH1cclxufSk7XHJcblxyXG5jb25zdCBwbGFjZVNjaGVtYSA9IG5ldyBTY2hlbWEoe1xyXG4gICAgbmFtZToge1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgICB1bmlxdWU6IHRydWVcclxuICAgIH0sXHJcbiAgICBkZXNjcmlwdGlvbjoge1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICByZXF1aXJlZDogdHJ1ZVxyXG4gICAgfSxcclxuICAgIGxvY2F0aW9uOiB7XHJcbiAgICAgICAgdHlwZTogcG9pbnRTY2hlbWEsXHJcbiAgICAgICAgaW5kZXg6ICcyZHNwaGVyZScsXHJcbiAgICAgICAgcmVxdWlyZWQ6IHRydWVcclxuICAgIH0sXHJcbiAgICBkaXN0YW5jZToge1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICByZXF1aXJlZDogdHJ1ZVxyXG4gICAgfSxcclxuICAgIHRpbWVUb1JlYWNoOiB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlXHJcbiAgICB9LFxyXG4gICAgaW1hZ2U6XHJcbiAgICB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgfSxcclxuICAgIHRyYXZlbGxpbmdNZXRob2RzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXHJcbiAgICAgICAgICAgIGVudW06IFsnQnVzJywgJ0NhcicsICdUcmFpbicsICdUaHJlZXdoZWVsZXInLCAnRm9vdCddXHJcbiAgICAgICAgfVxyXG4gICAgXVxyXG59LCB7XHJcbiAgICB0aW1lc3RhbXBzOiB0cnVlXHJcbn0pO1xyXG5cclxucGxhY2VTY2hlbWEuaW5kZXgoeyAnJCoqJzogJ3RleHQnIH0pO1xyXG52YXIgUGxhY2VzID0gbW9uZ29vc2UubW9kZWwoJ1BsYWNlJywgcGxhY2VTY2hlbWEpO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBQbGFjZXM7Il19\",\"originalCode\":\"const mongoose = require('mongoose');\\r\\nconst Schema = mongoose.Schema;\\r\\n\\r\\nconst pointSchema = new Schema({\\r\\n type: {\\r\\n type: String,\\r\\n enum: ['Point'],\\r\\n required: true,\\r\\n default: 'Point'\\r\\n },\\r\\n coordinates: {\\r\\n type: [Number],\\r\\n required: true\\r\\n }\\r\\n});\\r\\n\\r\\nconst placeSchema = new Schema({\\r\\n name: {\\r\\n type: String,\\r\\n required: true,\\r\\n unique: true\\r\\n },\\r\\n description: {\\r\\n type: String,\\r\\n required: true\\r\\n },\\r\\n location: {\\r\\n type: pointSchema,\\r\\n index: '2dsphere',\\r\\n required: true\\r\\n },\\r\\n distance: {\\r\\n type: String,\\r\\n required: true\\r\\n },\\r\\n timeToReach: {\\r\\n type: String,\\r\\n required: true\\r\\n },\\r\\n image:\\r\\n {\\r\\n type: String,\\r\\n },\\r\\n travellingMethods: [\\r\\n {\\r\\n type: String,\\r\\n enum: ['Bus', 'Car', 'Train', 'Threewheeler', 'Foot']\\r\\n }\\r\\n ]\\r\\n}, {\\r\\n timestamps: true\\r\\n});\\r\\n\\r\\nplaceSchema.index({ '$**': 'text' });\\r\\nvar Places = mongoose.model('Place', placeSchema);\\r\\n\\r\\nmodule.exports = Places;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/c4/visitingPlaces_c4ccc91c117df8c4aeada72a82534688.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2459\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\models\\\\visitingPlaces.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":4920,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":4917,\"count\":1}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"var passport = require('passport');\\n\\nvar LocalStrategy = require('passport-local').Strategy;\\n\\nvar User = require('../models/users');\\n\\nvar JwtStrategy = require('passport-jwt').Strategy;\\n\\nvar ExtractJwt = require('passport-jwt').ExtractJwt;\\n\\nvar jwt = require('jsonwebtoken');\\n\\npassport.use(new LocalStrategy(User.authenticate()));\\npassport.serializeUser(User.serializeUser());\\npassport.deserializeUser(User.deserializeUser());\\n\\nexports.getToken = user => {\\n return jwt.sign(user, process.env.secretKey, {\\n expiresIn: 3600\\n });\\n};\\n\\nvar opts = {};\\nopts.jwtFromRequest = ExtractJwt.fromAuthHeaderAsBearerToken();\\nopts.secretOrKey = process.env.secretKey;\\nexports.jwtPassport = passport.use(new JwtStrategy(opts, (jwt_payload, done) => {\\n User.findOne({\\n _id: jwt_payload._id\\n }, (err, user) => {\\n if (err) {\\n return done(err, false);\\n } else if (user) {\\n return done(null, user);\\n } else {\\n return done(null, false);\\n }\\n });\\n}));\\nexports.verifyUser = passport.authenticate('jwt', {\\n session: false\\n});\\n\\nexports.verifyAdmin = (req, res, next) => {\\n if (req.user.role == 'admin') {\\n return next();\\n } else if (req.user.role != 'admin') {\\n err = new Error('You are not authorized to perform this operation!');\\n err.status = 403;\\n return next(err);\\n } else {\\n err = new Error('Admin Verification Failed!');\\n err.status = 500;\\n return next(err);\\n }\\n};\\n\\nexports.verifyModerater = (req, res, next) => {\\n if (req.user.role != 'user') {\\n return next();\\n } else if (req.user.role == 'user') {\\n err = new Error('You are not authorized to perform this operation!');\\n err.status = 403;\\n return next(err);\\n }\\n};\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF1dGhlbnRpY2F0ZS5qcyJdLCJuYW1lcyI6WyJwYXNzcG9ydCIsInJlcXVpcmUiLCJMb2NhbFN0cmF0ZWd5IiwiU3RyYXRlZ3kiLCJVc2VyIiwiSnd0U3RyYXRlZ3kiLCJFeHRyYWN0Snd0Iiwiand0IiwidXNlIiwiYXV0aGVudGljYXRlIiwic2VyaWFsaXplVXNlciIsImRlc2VyaWFsaXplVXNlciIsImV4cG9ydHMiLCJnZXRUb2tlbiIsInVzZXIiLCJzaWduIiwicHJvY2VzcyIsImVudiIsInNlY3JldEtleSIsImV4cGlyZXNJbiIsIm9wdHMiLCJqd3RGcm9tUmVxdWVzdCIsImZyb21BdXRoSGVhZGVyQXNCZWFyZXJUb2tlbiIsInNlY3JldE9yS2V5Iiwiand0UGFzc3BvcnQiLCJqd3RfcGF5bG9hZCIsImRvbmUiLCJmaW5kT25lIiwiX2lkIiwiZXJyIiwidmVyaWZ5VXNlciIsInNlc3Npb24iLCJ2ZXJpZnlBZG1pbiIsInJlcSIsInJlcyIsIm5leHQiLCJyb2xlIiwiRXJyb3IiLCJzdGF0dXMiLCJ2ZXJpZnlNb2RlcmF0ZXIiXSwibWFwcGluZ3MiOiJBQUFBLElBQUlBLFFBQVEsR0FBR0MsT0FBTyxDQUFDLFVBQUQsQ0FBdEI7O0FBQ0EsSUFBSUMsYUFBYSxHQUFHRCxPQUFPLENBQUMsZ0JBQUQsQ0FBUCxDQUEwQkUsUUFBOUM7O0FBQ0EsSUFBSUMsSUFBSSxHQUFHSCxPQUFPLENBQUMsaUJBQUQsQ0FBbEI7O0FBRUEsSUFBSUksV0FBVyxHQUFHSixPQUFPLENBQUMsY0FBRCxDQUFQLENBQXdCRSxRQUExQzs7QUFDQSxJQUFJRyxVQUFVLEdBQUdMLE9BQU8sQ0FBQyxjQUFELENBQVAsQ0FBd0JLLFVBQXpDOztBQUNBLElBQUlDLEdBQUcsR0FBR04sT0FBTyxDQUFDLGNBQUQsQ0FBakI7O0FBR0FELFFBQVEsQ0FBQ1EsR0FBVCxDQUFhLElBQUlOLGFBQUosQ0FBa0JFLElBQUksQ0FBQ0ssWUFBTCxFQUFsQixDQUFiO0FBQ0FULFFBQVEsQ0FBQ1UsYUFB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dCI6WyJ2YXIgcGFzc3BvcnQgPSByZXF1aXJlKCdwYXNzcG9ydCcpO1xyXG52YXIgTG9jYWxTdHJhdGVneSA9IHJlcXVpcmUoJ3Bhc3Nwb3J0LWxvY2FsJykuU3RyYXRlZ3k7XHJcbnZhciBVc2VyID0gcmVxdWlyZSgnLi4vbW9kZWxzL3VzZXJzJyk7XHJcblxyXG52YXIgSnd0U3RyYXRlZ3kgPSByZXF1aXJlKCdwYXNzcG9ydC1qd3QnKS5TdHJhdGVneTtcclxudmFyIEV4dHJhY3RKd3QgPSByZXF1aXJlKCdwYXNzcG9ydC1qd3QnKS5FeHRyYWN0Snd0O1xyXG52YXIgand0ID0gcmVxdWlyZSgnanNvbndlYnRva2VuJyk7XHJcblxyXG5cclxucGFzc3BvcnQudXNlKG5ldyBMb2NhbFN0cmF0ZWd5KFVzZXIuYXV0aGVudGljYXRlKCkpKTtcclxucGFzc3BvcnQuc2VyaWFsaXplVXNlcihVc2VyLnNlcmlhbGl6ZVVzZXIoKSk7XHJcbnBhc3Nwb3J0LmRlc2VyaWFsaXplVXNlcihVc2VyLmRlc2VyaWFsaXplVXNlcigpKTtcclxuXHJcbmV4cG9ydHMuZ2V0VG9rZW4gPSAodXNlcikgPT4ge1xyXG4gICAgcmV0dXJuIGp3dC5zaWduKHVzZXIsIHByb2Nlc3MuZW52LnNlY3JldEtleSxcclxuICAgICAgICB7IGV4cGlyZXNJbjogMzYwMCB9KTtcclxufTtcclxuXHJcbnZhciBvcHRzID0ge307XHJcbm9wdHMuand0RnJvbVJlcXVlc3QgPSBFeHRyYWN0Snd0LmZyb21BdXRoSGVhZGVyQXNCZWFyZXJUb2tlbigpO1xyXG5vcHRzLnNlY3JldE9yS2V5ID0gcHJvY2Vzcy5lbnYuc2VjcmV0S2V5O1xyXG5cclxuZXhwb3J0cy5qd3RQYXNzcG9ydCA9IHBhc3Nwb3J0LnVzZShuZXcgSnd0U3RyYXRlZ3kob3B0cyxcclxuICAgIChqd3RfcGF5bG9hZCwgZG9uZSkgPT4ge1xyXG4gICAgICAgIFVzZXIuZmluZE9uZSh7IF9pZDogand0X3BheWxvYWQuX2lkIH0sIChlcnIsIHVzZXIpID0+IHtcclxuICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRvbmUoZXJyLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAodXNlcikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRvbmUobnVsbCwgdXNlcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZG9uZShudWxsLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH0pKTtcclxuXHJcbmV4cG9ydHMudmVyaWZ5VXNlciA9IHBhc3Nwb3J0LmF1dGhlbnRpY2F0ZSgnand0JywgeyBzZXNzaW9uOiBmYWxzZSB9KTtcclxuXHJcbmV4cG9ydHMudmVyaWZ5QWRtaW4gPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIGlmIChyZXEudXNlci5yb2xlID09ICdhZG1pbicpIHtcclxuICAgICAgICByZXR1cm4gbmV4dCgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAocmVxLnVzZXIucm9sZSAhPSAnYWRtaW4nKSB7XHJcbiAgICAgICAgZXJyID0gbmV3IEVycm9yKCdZb3UgYXJlIG5vdCBhdXRob3JpemVkIHRvIHBlcmZvcm0gdGhpcyBvcGVyYXRpb24hJyk7XHJcbiAgICAgICAgZXJyLnN0YXR1cyA9IDQwMztcclxuICAgICAgICByZXR1cm4gbmV4dChlcnIpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgZXJyID0gbmV3IEVycm9yKCdBZG1pbiBWZXJpZmljYXRpb24gRmFpbGVkIScpO1xyXG4gICAgICAgIGVyci5zdGF0dXMgPSA1MDA7XHJcbiAgICAgICAgcmV0dXJuIG5leHQoZXJyKTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0cy52ZXJpZnlNb2RlcmF0ZXIgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIGlmIChyZXEudXNlci5yb2xlICE9ICd1c2VyJykge1xyXG4gICAgICAgIHJldHVybiBuZXh0KCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChyZXEudXNlci5yb2xlID09ICd1c2VyJykge1xyXG4gICAgICAgIGVyciA9IG5ldyBFcnJvcignWW91IGFyZSBub3QgYXV0aG9yaXplZCB0byBwZXJmb3JtIHRoaXMgb3BlcmF0aW9uIScpO1xyXG4gICAgICAgIGVyci5zdGF0dXMgPSA0MDM7XHJcbiAgICAgICAgcmV0dXJuIG5leHQoZXJyKTtcclxuICAgIH1cclxufVxyXG4iXX0=\",\"originalCode\":\"var passport = require('passport');\\r\\nvar LocalStrategy = require('passport-local').Strategy;\\r\\nvar User = require('../models/users');\\r\\n\\r\\nvar JwtStrategy = require('passport-jwt').Strategy;\\r\\nvar ExtractJwt = require('passport-jwt').ExtractJwt;\\r\\nvar jwt = require('jsonwebtoken');\\r\\n\\r\\n\\r\\npassport.use(new LocalStrategy(User.authenticate()));\\r\\npassport.serializeUser(User.serializeUser());\\r\\npassport.deserializeUser(User.deserializeUser());\\r\\n\\r\\nexports.getToken = (user) => {\\r\\n return jwt.sign(user, process.env.secretKey,\\r\\n { expiresIn: 3600 });\\r\\n};\\r\\n\\r\\nvar opts = {};\\r\\nopts.jwtFromRequest = ExtractJwt.fromAuthHeaderAsBearerToken();\\r\\nopts.secretOrKey = process.env.secretKey;\\r\\n\\r\\nexports.jwtPassport = passport.use(new JwtStrategy(opts,\\r\\n (jwt_payload, done) => {\\r\\n User.findOne({ _id: jwt_payload._id }, (err, user) => {\\r\\n if (err) {\\r\\n return done(err, false);\\r\\n }\\r\\n else if (user) {\\r\\n return done(null, user);\\r\\n }\\r\\n else {\\r\\n return done(null, false);\\r\\n }\\r\\n });\\r\\n }));\\r\\n\\r\\nexports.verifyUser = passport.authenticate('jwt', { session: false });\\r\\n\\r\\nexports.verifyAdmin = (req, res, next) => {\\r\\n if (req.user.role == 'admin') {\\r\\n return next();\\r\\n }\\r\\n else if (req.user.role != 'admin') {\\r\\n err = new Error('You are not authorized to perform this operation!');\\r\\n err.status = 403;\\r\\n return next(err);\\r\\n }\\r\\n else {\\r\\n err = new Error('Admin Verification Failed!');\\r\\n err.status = 500;\\r\\n return next(err);\\r\\n }\\r\\n}\\r\\n\\r\\nexports.verifyModerater = (req, res, next) => {\\r\\n if (req.user.role != 'user') {\\r\\n return next();\\r\\n }\\r\\n else if (req.user.role == 'user') {\\r\\n err = new Error('You are not authorized to perform this operation!');\\r\\n err.status = 403;\\r\\n return next(err);\\r\\n }\\r\\n}\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/17/authenticate_1749ed24acd3b9174e3e8d9c003de68d.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2460\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\middleware\\\\authenticate.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":8164,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":8161,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
.exports.getToken\",\"ranges\":[{\"startOffset\":536,\"endOffset\":622,\"count\":3}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":803,\"endOffset\":1050,\"count\":13}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":875,\"endOffset\":1046,\"count\":13}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
.exports.verifyAdmin\",\"ranges\":[{\"startOffset\":1150,\"endOffset\":1495,\"count\":2},{\"startOffset\":1228,\"endOffset\":1493,\"count\":0}],\"isBlockCoverage\":true},{\"functionName\":\"Object.
.exports.verifyModerater\",\"ranges\":[{\"startOffset\":1524,\"endOffset\":1761,\"count\":5},{\"startOffset\":1577,\"endOffset\":1601,\"count\":4},{\"startOffset\":1601,\"endOffset\":1759,\"count\":1}],\"isBlockCoverage\":true}]}},{\"codeTransformResult\":{\"code\":\"var validationRules = {\\n id: {\\n in: ['params', 'query'],\\n errorMessage: 'ID is wrong',\\n isInt: true,\\n toInt: true\\n },\\n name: {\\n errorMessage: 'Name should be at least 2 chars long and maximum of 50 chars',\\n isLength: {\\n options: {\\n min: 2,\\n max: 50\\n }\\n },\\n trim: true\\n },\\n description: {\\n errorMessage: 'Description should be at least 2 chars long and maximum of 200 chars',\\n isLength: {\\n options: {\\n min: 2,\\n max: 200\\n }\\n },\\n trim: true\\n },\\n distance: {\\n errorMessage: 'Distance should be at least 1 chars long and maximum of 200 chars',\\n isLength: {\\n options: {\\n min: 1,\\n max: 200\\n }\\n },\\n trim: true\\n },\\n timeToReach: {\\n errorMessage: 'Time To Reach should be at least 2 chars long and maximum of 200 chars',\\n isLength: {\\n options: {\\n min: 2,\\n max: 200\\n }\\n },\\n trim: true\\n },\\n firstname: {\\n errorMessage: 'First Name should be at least 3 chars long and maximum of 50 chars',\\n isLength: {\\n options: {\\n min: 3,\\n max: 50\\n }\\n },\\n trim: true\\n },\\n lastname: {\\n errorMessage: 'Last Name should be at least 3 chars long and maximum of 50 chars',\\n isLength: {\\n options: {\\n min: 3,\\n max: 50\\n }\\n },\\n trim: true\\n },\\n email: {\\n errorMessage: 'Please enter a valid email address',\\n isEmail: true,\\n trim: true\\n },\\n mobile: {\\n errorMessage: 'Please enter Phone Number in 10 digits',\\n isLength: {\\n options: {\\n min: 10,\\n max: 10\\n }\\n },\\n matches: {\\n options: [/^\\\\d{10}$/],\\n errorMessage: \\\"Please enter digits\\\"\\n },\\n trim: true\\n },\\n password: {\\n isLength: {\\n errorMessage: 'Password should be at least 6 chars long',\\n options: {\\n min: 6\\n }\\n }\\n },\\n confirm_password: {\\n errorMessage: 'Must have the same value as the password field',\\n custom: {\\n options: (value, {\\n req\\n }) => value === req.body.password\\n }\\n },\\n suite: {\\n errorMessage: 'Please select suite type',\\n isIn: {\\n options: [['gold', 'luxury', 'platinum']]\\n }\\n },\\n roomnumber: {\\n errorMessage: 'Room Number should be at least 3 chars long and maximum of 50 chars',\\n isLength: {\\n options: {\\n min: 3,\\n max: 50\\n }\\n },\\n trim: true\\n },\\n state: {\\n errorMessage: 'Please select correct state',\\n isIn: {\\n options: [[\\\"new\\\", \\\"not-completed\\\", \\\"canceled\\\", \\\"completed\\\"]]\\n }\\n },\\n method: {\\n errorMessage: 'Please select correct travelling method',\\n isIn: {\\n options: [['Bus', 'Car', 'Train', 'Threewheeler', 'Foot']]\\n }\\n }\\n};\\nexports.validationRules = validationRules;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInZhbGlkYXRpb24uanMiXSwibmFtZXMiOlsidmFsaWRhdGlvblJ1bGVzIiwiaWQiLCJpbiIsImVycm9yTWVzc2FnZSIsImlzSW50IiwidG9JbnQiLCJuYW1lIiwiaXNMZW5ndGgiLCJvcHRpb25zIiwibWluIiwibWF4IiwidHJpbSIsImRlc2NyaXB0aW9uIiwiZGlzdGFuY2UiLCJ0aW1lVG9SZWFjaCIsImZpcnN0bmFtZSIsImxhc3RuYW1lIiwiZW1haWwiLCJpc0VtYWlsIiwibW9iaWxlIiwibWF0Y2hlcyIsInBhc3N3b3JkIiwiY29uZmlybV9wYXNzd29yZCIsImN1c3RvbSIsInZhbHVlIiwicmVxIiwiYm9keSIsInN1aXRlIiwiaXNJbiIsInJvb21udW1iZXIiLCJzdGF0ZSIsIm1ldGhvZCIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLElBQUlBLGVBQWUsR0FBRztBQUNsQkMsRUFBQUEsRUFBRSxFQUFFO0FBQ0FDLElBQUFBLEVBQUUsRUFBRSxDQUFDLFFBQUQsRUFBVyxPQUFYLENBREo7QUFFQUMsSUFBQUEsWUFBWSxFQUFFLGFBRmQ7QUFHQUMsSUFBQUEsS0FBSyxFQUFFLElBSFA7QUFJQUMsSUFBQUEsS0FBSyxFQUFFO0FBSlAsR0FEYztBQU9sQkMsRUFBQUEsSUFBSSxFQUFFO0FBQ0ZILElBQUFBLFlBQVksRUFBRSw4REFEWjtBQUVGSSxJQUFBQSxRQUFRLEVBQUU7QUFDTkMsTUFBQUEsT0FBTyxFQUFFO0FBQUVDLFFBQUFBLEdBQUcsRUFBRSxDQUFQO0FBQVVDLFFBQUFBLEdBQUcsRUFBRTtBQUFmO0FBREgsS0FGUjtBQUtGQyxJQUFBQSxJQUFJLEVBQUU7QUFMSixHQVBZO0FBY2xCQyxFQUFBQSxXQUFXLEVBQUU7QUFDVFQsSUFBQUEsWUFBWSxFQUFFLHNFQURMO0FBRVRJLElBQUFBLFFBQVEsRUFBRTtBQUNOQyxNQUFBQSxPQUFPLEVBQUU7QUFBRUMsUUFBQUEsR0FBRyxFQUFFLENBQVA7QUFBVUMsUUFBQUEsR0FBRyxFQUFFO0FBQWY7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RTtBQUFFQyxRQUFBQSxHQUFHLEVBQUUsQ0FBUDtBQUFVQyxRQUFBQSxHQUFHLEVBQUU7QUFBZjtBQURILEtBRkY7QUFLUkMsSUFBQUEsSUFBSSxFQUFFO0FBTEUsR0FuRk07QUEwRmxCbUIsRUFBQUEsS0FBSyxFQUFFO0FBQ0gzQixJQUFBQSxZQUFZLEVBQUUsNkJBRFg7QUFFSHlCLElBQUFBLElBQUksRUFBRTtBQUNGcEIsTUFBQUEsT0FBTyxFQUFFLENBQUMsQ0FBQyxLQUFELEVBQVEsZUFBUixFQUF5QixVQUF6QixFQUFxQyxXQUFyQyxDQUFEO0FBRFA7QUFGSCxHQTFGVztBQWdHbEJ1QixFQUFBQSxNQUFNLEVBQUU7QUFDSjVCLElBQUFBLFlBQVksRUFBRSx5Q0FEVjtBQUVKeUIsSUFBQUEsSUFBSSxFQUFFO0FBQ0ZwQixNQUFBQSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEtBQUQsRUFBUSxLQUFSLEVBQWUsT0FBZixFQUF3QixjQUF4QixFQUF3QyxNQUF4QyxDQUFEO0FBRFA7QUFGRjtBQWhHVSxDQUF0QjtBQXdHQXdCLE9BQU8sQ0FBQ2hDLGVBQVIsR0FBMEJBLGVBQTFCIiwic291cmNlc0NvbnRlbnQiOlsidmFyIHZhbGlkYXRpb25SdWxlcyA9IHtcclxuICAgIGlkOiB7XHJcbiAgICAgICAgaW46IFsncGFyYW1zJywgJ3F1ZXJ5J10sXHJcbiAgICAgICAgZXJyb3JNZXNzYWdlOiAnSUQgaXMgd3JvbmcnLFxyXG4gICAgICAgIGlzSW50OiB0cnVlLFxyXG4gICAgICAgIHRvSW50OiB0cnVlLFxyXG4gICAgfSxcclxuICAgIG5hbWU6IHtcclxuICAgICAgICBlcnJvck1lc3NhZ2U6ICdOYW1lIHNob3VsZCBiZSBhdCBsZWFzdCAyIGNoYXJzIGxvbmcgYW5kIG1heGltdW0gb2YgNTAgY2hhcnMnLFxyXG4gICAgICAgIGlzTGVuZ3RoOiB7XHJcbiAgICAgICAgICAgIG9wdGlvbnM6IHsgbWluOiAyLCBtYXg6IDUwIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHRyaW06IHRydWVcclxuICAgIH0sXHJcbiAgICBkZXNjcmlwdGlvbjoge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ0Rlc2NyaXB0aW9uIHNob3VsZCBiZSBhdCBsZWFzdCAyIGNoYXJzIGxvbmcgYW5kIG1heGltdW0gb2YgMjAwIGNoYXJzJyxcclxuICAgICAgICBpc0xlbmd0aDoge1xyXG4gICAgICAgICAgICBvcHRpb25zOiB7IG1pbjogMiwgbWF4OiAyMDAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHJpbTogdHJ1ZVxyXG4gICAgfSxcclxuICAgIGRpc3RhbmNlOiB7XHJcbiAgICAgICAgZXJyb3JNZXNzYWdlOiAnRGlzdGFuY2Ugc2hvdWxkIGJlIGF0IGxlYXN0IDEgY2hhcnMgbG9uZyBhbmQgbWF4aW11bSBvZiAyMDAgY2hhcnMnLFxyXG4gICAgICAgIGlzTGVuZ3RoOiB7XHJcbiAgICAgICAgICAgIG9wdGlvbnM6IHsgbWluOiAxLCBtYXg6IDIwMCB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICB0cmltOiB0cnVlXHJcbiAgICB9LFxyXG4gICAgdGltZVRvUmVhY2g6IHtcclxuICAgICAgICBlcnJvck1lc3NhZ2U6ICdUaW1lIFRvIFJlYWNoIHNob3VsZCBiZSBhdCBsZWFzdCAyIGNoYXJzIGxvbmcgYW5kIG1heGltdW0gb2YgMjAwIGNoYXJzJyxcclxuICAgICAgICBpc0xlbmd0aDoge1xyXG4gICAgICAgICAgICBvcHRpb25zOiB7IG1pbjogMiwgbWF4OiAyMDAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHJpbTogdHJ1ZVxyXG4gICAgfSxcclxuICAgIGZpcnN0bmFtZToge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ0ZpcnN0IE5hbWUgc2hvdWxkIGJlIGF0IGxlYXN0IDMgY2hhcnMgbG9uZyBhbmQgbWF4aW11bSBvZiA1MCBjaGFycycsXHJcbiAgICAgICAgaXNMZW5ndGg6IHtcclxuICAgICAgICAgICAgb3B0aW9uczogeyBtaW46IDMsIG1heDogNTAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHJpbTogdHJ1ZVxyXG4gICAgfSxcclxuICAgIGxhc3RuYW1lOiB7XHJcbiAgICAgICAgZXJyb3JNZXNzYWdlOiAnTGFzdCBOYW1lIHNob3VsZCBiZSBhdCBsZWFzdCAzIGNoYXJzIGxvbmcgYW5kIG1heGltdW0gb2YgNTAgY2hhcnMnLFxyXG4gICAgICAgIGlzTGVuZ3RoOiB7XHJcbiAgICAgICAgICAgIG9wdGlvbnM6IHsgbWluOiAzLCBtYXg6IDUwIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHRyaW06IHRydWVcclxuICAgIH0sXHJcbiAgICBlbWFpbDoge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ1BsZWFzZSBlbnRlciBhIHZhbGlkIGVtYWlsIGFkZHJlc3MnLFxyXG4gICAgICAgIGlzRW1haWw6IHRydWUsXHJcbiAgICAgICAgdHJpbTogdHJ1ZSxcclxuICAgIH0sXHJcbiAgICBtb2JpbGU6IHtcclxuICAgICAgICBlcnJvck1lc3NhZ2U6ICdQbGVhc2UgZW50ZXIgUGhvbmUgTnVtYmVyIGluIDEwIGRpZ2l0cycsXHJcbiAgICAgICAgaXNMZW5ndGg6IHtcclxuICAgICAgICAgICAgb3B0aW9uczogeyBtaW46IDEwLCBtYXg6IDEwIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIG1hdGNoZXM6IHtcclxuICAgICAgICAgICAgb3B0aW9uczogWy9eXFxkezEwfSQvXSxcclxuICAgICAgICAgICAgZXJyb3JNZXNzYWdlOiBcIlBsZWFzZSBlbnRlciBkaWdpdHNcIlxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHJpbTogdHJ1ZVxyXG4gICAgfSxcclxuICAgIHBhc3N3b3JkOiB7XHJcbiAgICAgICAgaXNMZW5ndGg6IHtcclxuICAgICAgICAgICAgZXJyb3JNZXNzYWdlOiAnUGFzc3dvcmQgc2hvdWxkIGJlIGF0IGxlYXN0IDYgY2hhcnMgbG9uZycsXHJcbiAgICAgICAgICAgIG9wdGlvbnM6IHsgbWluOiA2IH1cclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgY29uZmlybV9wYXNzd29yZDoge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ011c3QgaGF2ZSB0aGUgc2FtZSB2YWx1ZSBhcyB0aGUgcGFzc3dvcmQgZmllbGQnLFxyXG4gICAgICAgIGN1c3RvbToge1xyXG4gICAgICAgICAgICBvcHRpb25zOiAodmFsdWUsIHsgcmVxIH0pID0+IHZhbHVlID09PSByZXEuYm9keS5wYXNzd29yZFxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICBzdWl0ZToge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ1BsZWFzZSBzZWxlY3Qgc3VpdGUgdHlwZScsXHJcbiAgICAgICAgaXNJbjoge1xyXG4gICAgICAgICAgICBvcHRpb25zOiBbWydnb2xkJywgJ2x1eHVyeScsICdwbGF0aW51bSddXSxcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgcm9vbW51bWJlcjoge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ1Jvb20gTnVtYmVyIHNob3VsZCBiZSBhdCBsZWFzdCAzIGNoYXJzIGxvbmcgYW5kIG1heGltdW0gb2YgNTAgY2hhcnMnLFxyXG4gICAgICAgIGlzTGVuZ3RoOiB7XHJcbiAgICAgICAgICAgIG9wdGlvbnM6IHsgbWluOiAzLCBtYXg6IDUwIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHRyaW06IHRydWVcclxuICAgIH0sXHJcbiAgICBzdGF0ZToge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ1BsZWFzZSBzZWxlY3QgY29ycmVjdCBzdGF0ZScsXHJcbiAgICAgICAgaXNJbjoge1xyXG4gICAgICAgICAgICBvcHRpb25zOiBbW1wibmV3XCIsIFwibm90LWNvbXBsZXRlZFwiLCBcImNhbmNlbGVkXCIsIFwiY29tcGxldGVkXCJdXSxcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgbWV0aG9kOiB7XHJcbiAgICAgICAgZXJyb3JNZXNzYWdlOiAnUGxlYXNlIHNlbGVjdCBjb3JyZWN0IHRyYXZlbGxpbmcgbWV0aG9kJyxcclxuICAgICAgICBpc0luOiB7XHJcbiAgICAgICAgICAgIG9wdGlvbnM6IFtbJ0J1cycsICdDYXInLCAnVHJhaW4nLCAnVGhyZWV3aGVlbGVyJywgJ0Zvb3QnXV0sXHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxufVxyXG5cclxuZXhwb3J0cy52YWxpZGF0aW9uUnVsZXMgPSB2YWxpZGF0aW9uUnVsZXM7Il19\",\"originalCode\":\"var validationRules = {\\r\\n id: {\\r\\n in: ['params', 'query'],\\r\\n errorMessage: 'ID is wrong',\\r\\n isInt: true,\\r\\n toInt: true,\\r\\n },\\r\\n name: {\\r\\n errorMessage: 'Name should be at least 2 chars long and maximum of 50 chars',\\r\\n isLength: {\\r\\n options: { min: 2, max: 50 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n description: {\\r\\n errorMessage: 'Description should be at least 2 chars long and maximum of 200 chars',\\r\\n isLength: {\\r\\n options: { min: 2, max: 200 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n distance: {\\r\\n errorMessage: 'Distance should be at least 1 chars long and maximum of 200 chars',\\r\\n isLength: {\\r\\n options: { min: 1, max: 200 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n timeToReach: {\\r\\n errorMessage: 'Time To Reach should be at least 2 chars long and maximum of 200 chars',\\r\\n isLength: {\\r\\n options: { min: 2, max: 200 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n firstname: {\\r\\n errorMessage: 'First Name should be at least 3 chars long and maximum of 50 chars',\\r\\n isLength: {\\r\\n options: { min: 3, max: 50 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n lastname: {\\r\\n errorMessage: 'Last Name should be at least 3 chars long and maximum of 50 chars',\\r\\n isLength: {\\r\\n options: { min: 3, max: 50 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n email: {\\r\\n errorMessage: 'Please enter a valid email address',\\r\\n isEmail: true,\\r\\n trim: true,\\r\\n },\\r\\n mobile: {\\r\\n errorMessage: 'Please enter Phone Number in 10 digits',\\r\\n isLength: {\\r\\n options: { min: 10, max: 10 }\\r\\n },\\r\\n matches: {\\r\\n options: [/^\\\\d{10}$/],\\r\\n errorMessage: \\\"Please enter digits\\\"\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n password: {\\r\\n isLength: {\\r\\n errorMessage: 'Password should be at least 6 chars long',\\r\\n options: { min: 6 }\\r\\n }\\r\\n },\\r\\n confirm_password: {\\r\\n errorMessage: 'Must have the same value as the password field',\\r\\n custom: {\\r\\n options: (value, { req }) => value === req.body.password\\r\\n }\\r\\n },\\r\\n suite: {\\r\\n errorMessage: 'Please select suite type',\\r\\n isIn: {\\r\\n options: [['gold', 'luxury', 'platinum']],\\r\\n }\\r\\n },\\r\\n roomnumber: {\\r\\n errorMessage: 'Room Number should be at least 3 chars long and maximum of 50 chars',\\r\\n isLength: {\\r\\n options: { min: 3, max: 50 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n state: {\\r\\n errorMessage: 'Please select correct state',\\r\\n isIn: {\\r\\n options: [[\\\"new\\\", \\\"not-completed\\\", \\\"canceled\\\", \\\"completed\\\"]],\\r\\n }\\r\\n },\\r\\n method: {\\r\\n errorMessage: 'Please select correct travelling method',\\r\\n isIn: {\\r\\n options: [['Bus', 'Car', 'Train', 'Threewheeler', 'Foot']],\\r\\n }\\r\\n },\\r\\n}\\r\\n\\r\\nexports.validationRules = validationRules;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/4b/validation_4b7a8ff68e044daa8c6daa8312a761dc.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2493\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\middleware\\\\validation.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":11520,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":11517,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"options\",\"ranges\":[{\"startOffset\":2073,\"endOffset\":2134,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"var express = require('express');\\n\\nvar router = express.Router();\\n\\nvar Users = require('../models/users');\\n\\nvar passport = require('passport');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nconst signupAdmin = (req, res, next) => {\\n var admin = {\\n username: req.body.email,\\n firstname: req.body.firstname,\\n lastname: req.body.lastname,\\n email: req.body.email,\\n role: 'admin'\\n };\\n Users.register(new Users(admin), req.body.password, (err, user) => {\\n if (err) {\\n res.statusCode = 403;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n status: 'Registration Unsuccessful!'\\n });\\n } else {\\n if (req.body.firstname) user.firstname = req.body.firstname;\\n if (req.body.lastname) user.lastname = req.body.lastname;\\n user.save((err, user) => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n status: 'Registration Successful!'\\n });\\n });\\n }\\n });\\n};\\n\\nconst login = (req, res, next) => {\\n passport.authenticate('local', (err, user, info) => {\\n if (!user) {\\n res.statusCode = 401;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n status: 'Login Unsuccessful!',\\n err: info\\n });\\n return next(err);\\n }\\n\\n req.logIn(user, err => {\\n var token = authenticate.getToken({\\n _id: req.user._id,\\n role: user.role\\n });\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n status: 'Login Successful!',\\n token: token\\n });\\n });\\n })(req, res, next);\\n};\\n\\nconst changePassoword = (req, res, next) => {\\n var userId = req.params.id;\\n var newPasswordString = req.body.password;\\n Users.findById(userId).then(function (sanitizedUser) {\\n if (sanitizedUser) {\\n sanitizedUser.setPassword(newPasswordString, function () {\\n sanitizedUser.save();\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n message: 'password reset successful'\\n });\\n });\\n } else {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'This user does not exist'\\n });\\n }\\n }, function (err) {\\n next(err);\\n });\\n};\\n\\nconst logout = (req, res) => {\\n if (req.session) {\\n req.session.destroy();\\n res.clearCookie('session-id');\\n } else {\\n var err = new Error('You are not logged in!');\\n err.status = 403;\\n }\\n};\\n\\nexports.signupAdmin = signupAdmin;\\nexports.login = login;\\nexports.logout = logout;\\nexports.changePassoword = changePassoword;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVzZXJDb250cm9sbGVyLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwicm91dGVyIiwiUm91dGVyIiwiVXNlcnMiLCJwYXNzcG9ydCIsImF1dGhlbnRpY2F0ZSIsInNpZ251cEFkbWluIiwicmVxIiwicmVzIiwibmV4dCIsImFkbWluIiwidXNlcm5hbWUiLCJib2R5IiwiZW1haWwiLCJmaXJzdG5hbWUiLCJsYXN0bmFtZSIsInJvbGUiLCJyZWdpc3RlciIsInBhc3N3b3JkIiwiZXJyIiwidXNlciIsInN0YXR1c0NvZGUiLCJzZXRIZWFkZXIiLCJqc29uIiwic3VjY2VzcyIsInN0YXR1cyIsInNhdmUiLCJsb2dpbiIsImluZm8iLCJsb2dJbiIsInRva2VuIiwiZ2V0VG9rZW4iLCJfaWQiLCJjaGFuZ2VQYXNzb3dvcmQiLCJ1c2VySWQiLCJwYXJhbXMiLCJpZCIsIm5ld1Bhc3N3b3JkU3RyaW5nIiwiZmluZEJ5SWQiLCJ0aGVuIiwic2FuaXRpemVkVXNlciIsInNldFBhc3N3b3JkIiwibWVzc2FnZSIsImxvZ291dCIsInNlc3Npb24iLCJkZXN0cm95IiwiY2xlYXJDb29raWUiLCJFcnJvciIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLElBQUlBLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBckI7O0FBQ0EsSUFBSUMsTUFBTSxHQUFHRixPQUFPLENBQUNHLE1BQVIsRUFBYjs7QUFFQSxJQUFJQyxLQUFLLEdBQUdILE9BQU8sQ0FBQyxpQkFBRCxDQUFuQjs7QUFDQSxJQUFJSSxRQUFRLEdBQUdKLE9BQU8sQ0FBQyxVQUFELENBQXRCOztBQUNBLElBQUlLLFlBQVksR0FBR0wsT0FBTyxDQUFDLDRCQUFELENBQTFCOztBQUdBLE1BQU1NLFdBQVcsR0FBRyxDQUFDQyxHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUNwQyxNQUFJQyxLQUFLLEdBQUc7QUFDUkMsSUFBQUEsUUFBUSxFQUFFSixHQUFHLENBQUNLLElBQUos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YkQsRUFhRyxVQUFVdkIsR0FBVixFQUFlO0FBQ2RWLElBQUFBLElBQUksQ0FBQ1UsR0FBRCxDQUFKO0FBQ0gsR0FmRDtBQWdCSCxDQW5CRDs7QUFxQkEsTUFBTXdCLE1BQU0sR0FBRyxDQUFDcEMsR0FBRCxFQUFNQyxHQUFOLEtBQWM7QUFDekIsTUFBSUQsR0FBRyxDQUFDcUMsT0FBUixFQUFpQjtBQUNickMsSUFBQUEsR0FBRyxDQUFDcUMsT0FBSixDQUFZQyxPQUFaO0FBQ0FyQyxJQUFBQSxHQUFHLENBQUNzQyxXQUFKLENBQWdCLFlBQWhCO0FBQ0gsR0FIRCxNQUlLO0FBQ0QsUUFBSTNCLEdBQUcsR0FBRyxJQUFJNEIsS0FBSixDQUFVLHdCQUFWLENBQVY7QUFDQTVCLElBQUFBLEdBQUcsQ0FBQ00sTUFBSixHQUFhLEdBQWI7QUFDSDtBQUNKLENBVEQ7O0FBV0F1QixPQUFPLENBQUMxQyxXQUFSLEdBQXNCQSxXQUF0QjtBQUNBMEMsT0FBTyxDQUFDckIsS0FBUixHQUFnQkEsS0FBaEI7QUFDQXFCLE9BQU8sQ0FBQ0wsTUFBUixHQUFpQkEsTUFBakI7QUFDQUssT0FBTyxDQUFDZixlQUFSLEdBQTBCQSxlQUExQiIsInNvdXJjZXNDb250ZW50IjpbInZhciBleHByZXNzID0gcmVxdWlyZSgnZXhwcmVzcycpO1xyXG52YXIgcm91dGVyID0gZXhwcmVzcy5Sb3V0ZXIoKTtcclxuXHJcbnZhciBVc2VycyA9IHJlcXVpcmUoJy4uL21vZGVscy91c2VycycpO1xyXG52YXIgcGFzc3BvcnQgPSByZXF1aXJlKCdwYXNzcG9ydCcpO1xyXG52YXIgYXV0aGVudGljYXRlID0gcmVxdWlyZSgnLi4vbWlkZGxld2FyZS9hdXRoZW50aWNhdGUnKTtcclxuXHJcblxyXG5jb25zdCBzaWdudXBBZG1pbiA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgdmFyIGFkbWluID0ge1xyXG4gICAgICAgIHVzZXJuYW1lOiByZXEuYm9keS5lbWFpbCxcclxuICAgICAgICBmaXJzdG5hbWU6IHJlcS5ib2R5LmZpcnN0bmFtZSxcclxuICAgICAgICBsYXN0bmFtZTogcmVxLmJvZHkubGFzdG5hbWUsXHJcbiAgICAgICAgZW1haWw6IHJlcS5ib2R5LmVtYWlsLFxyXG4gICAgICAgIHJvbGU6ICdhZG1pbidcclxuICAgIH1cclxuICAgIFVzZXJzLnJlZ2lzdGVyKG5ldyBVc2VycyhhZG1pbiksXHJcbiAgICAgICAgcmVxLmJvZHkucGFzc3dvcmQsIChlcnIsIHVzZXIpID0+IHtcclxuICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgc3RhdHVzOiAnUmVnaXN0cmF0aW9uIFVuc3VjY2Vzc2Z1bCEnIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlcS5ib2R5LmZpcnN0bmFtZSlcclxuICAgICAgICAgICAgICAgICAgICB1c2VyLmZpcnN0bmFtZSA9IHJlcS5ib2R5LmZpcnN0bmFtZTtcclxuICAgICAgICAgICAgICAgIGlmIChyZXEuYm9keS5sYXN0bmFtZSlcclxuICAgICAgICAgICAgICAgICAgICB1c2VyLmxhc3RuYW1lID0gcmVxLmJvZHkubGFzdG5hbWU7XHJcbiAgICAgICAgICAgICAgICB1c2VyLnNhdmUoKGVyciwgdXNlcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCBzdGF0dXM6ICdSZWdpc3RyYXRpb24gU3VjY2Vzc2Z1bCEnIH0pO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxufVxyXG5cclxuY29uc3QgbG9naW4gPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHBhc3Nwb3J0LmF1dGhlbnRpY2F0ZSgnbG9jYWwnLCAoZXJyLCB1c2VyLCBpbmZvKSA9PiB7XHJcblxyXG4gICAgICAgIGlmICghdXNlcikge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwMTtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgc3RhdHVzOiAnTG9naW4gVW5zdWNjZXNzZnVsIScsIGVycjogaW5mbyB9KTtcclxuICAgICAgICAgICAgcmV0dXJuIG5leHQoZXJyKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmVxLmxvZ0luKHVzZXIsIChlcnIpID0+IHtcclxuICAgICAgICAgICAgdmFyIHRva2VuID0gYXV0aGVudGljYXRlLmdldFRva2VuKHsgX2lkOiByZXEudXNlci5faWQsIHJvbGU6IHVzZXIucm9sZSB9KTtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgc3RhdHVzOiAnTG9naW4gU3VjY2Vzc2Z1bCEnLCB0b2tlbjogdG9rZW4sIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSkocmVxLCByZXMsIG5leHQpO1xyXG59XHJcblxyXG5jb25zdCBjaGFuZ2VQYXNzb3dvcmQgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHZhciB1c2VySWQgPSByZXEucGFyYW1zLmlkO1xyXG4gICAgdmFyIG5ld1Bhc3N3b3JkU3RyaW5nID0gcmVxLmJvZHkucGFzc3dvcmQ7XHJcbiAgICBVc2Vycy5maW5kQnlJZCh1c2VySWQpLnRoZW4oZnVuY3Rpb24gKHNhbml0aXplZFVzZXIpIHtcclxuICAgICAgICBpZiAoc2FuaXRpemVkVXNlcikge1xyXG4gICAgICAgICAgICBzYW5pdGl6ZWRVc2VyLnNldFBhc3N3b3JkKG5ld1Bhc3N3b3JkU3RyaW5nLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICBzYW5pdGl6ZWRVc2VyLnNhdmUoKTtcclxuICAgICAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgbWVzc2FnZTogJ3Bhc3N3b3JkIHJlc2V0IHN1Y2Nlc3NmdWwnIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwNDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogJ1RoaXMgdXNlciBkb2VzIG5vdCBleGlzdCcgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSwgZnVuY3Rpb24gKGVycikge1xyXG4gICAgICAgIG5leHQoZXJyKTtcclxuICAgIH0pO1xyXG59XHJcblxyXG5jb25zdCBsb2dvdXQgPSAocmVxLCByZXMpID0+IHtcclxuICAgIGlmIChyZXEuc2Vzc2lvbikge1xyXG4gICAgICAgIHJlcS5zZXNzaW9uLmRlc3Ryb3koKTtcclxuICAgICAgICByZXMuY2xlYXJDb29raWUoJ3Nlc3Npb24taWQnKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoJ1lvdSBhcmUgbm90IGxvZ2dlZCBpbiEnKTtcclxuICAgICAgICBlcnIuc3RhdHVzID0gNDAzO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnRzLnNpZ251cEFkbWluID0gc2lnbnVwQWRtaW47XHJcbmV4cG9ydHMubG9naW4gPSBsb2dpbjtcclxuZXhwb3J0cy5sb2dvdXQgPSBsb2dvdXQ7XHJcbmV4cG9ydHMuY2hhbmdlUGFzc293b3JkID0gY2hhbmdlUGFzc293b3JkOyJdfQ==\",\"originalCode\":\"var express = require('express');\\r\\nvar router = express.Router();\\r\\n\\r\\nvar Users = require('../models/users');\\r\\nvar passport = require('passport');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\n\\r\\n\\r\\nconst signupAdmin = (req, res, next) => {\\r\\n var admin = {\\r\\n username: req.body.email,\\r\\n firstname: req.body.firstname,\\r\\n lastname: req.body.lastname,\\r\\n email: req.body.email,\\r\\n role: 'admin'\\r\\n }\\r\\n Users.register(new Users(admin),\\r\\n req.body.password, (err, user) => {\\r\\n if (err) {\\r\\n res.statusCode = 403;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, status: 'Registration Unsuccessful!' });\\r\\n }\\r\\n else {\\r\\n if (req.body.firstname)\\r\\n user.firstname = req.body.firstname;\\r\\n if (req.body.lastname)\\r\\n user.lastname = req.body.lastname;\\r\\n user.save((err, user) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, status: 'Registration Successful!' });\\r\\n });\\r\\n }\\r\\n });\\r\\n}\\r\\n\\r\\nconst login = (req, res, next) => {\\r\\n passport.authenticate('local', (err, user, info) => {\\r\\n\\r\\n if (!user) {\\r\\n res.statusCode = 401;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, status: 'Login Unsuccessful!', err: info });\\r\\n return next(err);\\r\\n }\\r\\n req.logIn(user, (err) => {\\r\\n var token = authenticate.getToken({ _id: req.user._id, role: user.role });\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, status: 'Login Successful!', token: token, });\\r\\n });\\r\\n })(req, res, next);\\r\\n}\\r\\n\\r\\nconst changePassoword = (req, res, next) => {\\r\\n var userId = req.params.id;\\r\\n var newPasswordString = req.body.password;\\r\\n Users.findById(userId).then(function (sanitizedUser) {\\r\\n if (sanitizedUser) {\\r\\n sanitizedUser.setPassword(newPasswordString, function () {\\r\\n sanitizedUser.save();\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, message: 'password reset successful' });\\r\\n });\\r\\n } else {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'This user does not exist' });\\r\\n }\\r\\n }, function (err) {\\r\\n next(err);\\r\\n });\\r\\n}\\r\\n\\r\\nconst logout = (req, res) => {\\r\\n if (req.session) {\\r\\n req.session.destroy();\\r\\n res.clearCookie('session-id');\\r\\n }\\r\\n else {\\r\\n var err = new Error('You are not logged in!');\\r\\n err.status = 403;\\r\\n }\\r\\n}\\r\\n\\r\\nexports.signupAdmin = signupAdmin;\\r\\nexports.login = login;\\r\\nexports.logout = logout;\\r\\nexports.changePassoword = changePassoword;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/df/userController_dfcc3c245d97ff3aba4c4e3eb1674b0e.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2494\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\userController.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":12954,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":12951,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"signupAdmin\",\"ranges\":[{\"startOffset\":313,\"endOffset\":1156,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":553,\"endOffset\":1152,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":926,\"endOffset\":1140,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"login\",\"ranges\":[{\"startOffset\":1173,\"endOffset\":1848,\"count\":3}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1228,\"endOffset\":1828,\"count\":3}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1512,\"endOffset\":1822,\"count\":3}],\"isBlockCoverage\":false},{\"functionName\":\"changePassoword\",\"ranges\":[{\"startOffset\":1875,\"endOffset\":2594,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"logout\",\"ranges\":[{\"startOffset\":2612,\"endOffset\":2800,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const express = require('express');\\n\\nconst cors = require('cors');\\n\\nconst app = express();\\n\\nconst util = require('util');\\n\\nconst whitelist = ['http://localhost:3000', 'http://localhost:3001', 'https://localhost:5000'];\\n\\nvar corsOptionsDelegate = (req, callback) => {\\n var corsOptions;\\n\\n if (whitelist.indexOf(req.header('Origin')) !== -1) {\\n corsOptions = {\\n origin: true\\n };\\n } else {\\n corsOptions = {\\n origin: false\\n };\\n }\\n\\n callback(null, corsOptions);\\n}; // if we want to allow all origins\\n\\n\\nexports.cors = cors(); // if we want to allow only the whitelisted origins\\n\\nexports.corsWithOptions = cors(corsOptionsDelegate);\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvcnMuanMiXSwibmFtZXMiOlsiZXhwcmVzcyIsInJlcXVpcmUiLCJjb3JzIiwiYXBwIiwidXRpbCIsIndoaXRlbGlzdCIsImNvcnNPcHRpb25zRGVsZWdhdGUiLCJyZXEiLCJjYWxsYmFjayIsImNvcnNPcHRpb25zIiwiaW5kZXhPZiIsImhlYWRlciIsIm9yaWdpbiIsImV4cG9ydHMiLCJjb3JzV2l0aE9wdGlvbnMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBdkI7O0FBQ0EsTUFBTUMsSUFBSSxHQUFHRCxPQUFPLENBQUMsTUFBRCxDQUFwQjs7QUFDQSxNQUFNRSxHQUFHLEdBQUdILE9BQU8sRUFBbkI7O0FBQ0EsTUFBTUksSUFBSSxHQUFHSCxPQUFPLENBQUMsTUFBRCxDQUFwQjs7QUFFQSxNQUFNSSxTQUFTLEdBQUcsQ0FBQyx1QkFBRCxFQUEwQix1QkFBMUIsRUFBbUQsd0JBQW5ELENBQWxCOztBQUNBLElBQUlDLG1CQUFtQixHQUFHLENBQUNDLEdBQUQsRUFBTUMsUUFBTixLQUFtQjtBQUN6QyxNQUFJQyxXQUFKOztBQUNBLE1BQUdKLFNBQVMsQ0FBQ0ssT0FBVixDQUFrQkgsR0FBRyxDQUFDSSxNQUFKLENBQVcsUUFBWCxDQUFsQixNQUE0QyxDQUFDLENBQWhELEVBQW1EO0FBQy9DRixJQUFBQSxXQUFXLEdBQUc7QUFBRUcsTUFBQUEsTUFBTSxFQUFFO0FBQVYsS0FBZDtBQUNILEdBRkQsTUFHSztBQUNESCxJQUFBQSxXQUFXLEdBQUc7QUFBRUcsTUFBQUEsTUFBTSxFQUFFO0FBQVYsS0FBZDtBQUNIOztBQUNESixFQUFBQSxRQUFRLENBQUMsSUFBRCxFQUFPQyxXQUFQLENBQVI7QUFDSCxDQVRELEMsQ0FXQTs7O0FBQ0FJLE9BQU8sQ0FBQ1gsSUFBUixHQUFlQSxJQUFJLEVBQW5CLEMsQ0FFQTs7QUFDQVcsT0FBTyxDQUFDQyxlQUFSLEdBQTBCWixJQUFJLENBQUNJLG1CQUFELENBQTlCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZXhwcmVzcyA9IHJlcXVpcmUoJ2V4cHJlc3MnKTtcclxuY29uc3QgY29ycyA9IHJlcXVpcmUoJ2NvcnMnKTtcclxuY29uc3QgYXBwID0gZXhwcmVzcygpO1xyXG5jb25zdCB1dGlsID0gcmVxdWlyZSgndXRpbCcpO1xyXG5cclxuY29uc3Qgd2hpdGVsaXN0ID0gWydodHRwOi8vbG9jYWxob3N0OjMwMDAnLCAnaHR0cDovL2xvY2FsaG9zdDozMDAxJywgJ2h0dHBzOi8vbG9jYWxob3N0OjUwMDAnXTtcclxudmFyIGNvcnNPcHRpb25zRGVsZWdhdGUgPSAocmVxLCBjYWxsYmFjaykgPT4ge1xyXG4gICAgdmFyIGNvcnNPcHRpb25zO1xyXG4gICAgaWYod2hpdGVsaXN0LmluZGV4T2YocmVxLmhlYWRlcignT3JpZ2luJykpICE9PSAtMSkge1xyXG4gICAgICAgIGNvcnNPcHRpb25zID0geyBvcmlnaW46IHRydWUgfTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGNvcnNPcHRpb25zID0geyBvcmlnaW46IGZhbHNlIH07XHJcbiAgICB9XHJcbiAgICBjYWxsYmFjayhudWxsLCBjb3JzT3B0aW9ucyk7XHJcbn07XHJcblxyXG4vLyBpZiB3ZSB3YW50IHRvIGFsbG93IGFsbCBvcmlnaW5zXHJcbmV4cG9ydHMuY29ycyA9IGNvcnMoKTtcclxuXHJcbi8vIGlmIHdlIHdhbnQgdG8gYWxsb3cgb25seSB0aGUgd2hpdGVsaXN0ZWQgb3JpZ2luc1xyXG5leHBvcnRzLmNvcnNXaXRoT3B0aW9ucyA9IGNvcnMoY29yc09wdGlvbnNEZWxlZ2F0ZSk7Il19\",\"originalCode\":\"const express = require('express');\\r\\nconst cors = require('cors');\\r\\nconst app = express();\\r\\nconst util = require('util');\\r\\n\\r\\nconst whitelist = ['http://localhost:3000', 'http://localhost:3001', 'https://localhost:5000'];\\r\\nvar corsOptionsDelegate = (req, callback) => {\\r\\n var corsOptions;\\r\\n if(whitelist.indexOf(req.header('Origin')) !== -1) {\\r\\n corsOptions = { origin: true };\\r\\n }\\r\\n else {\\r\\n corsOptions = { origin: false };\\r\\n }\\r\\n callback(null, corsOptions);\\r\\n};\\r\\n\\r\\n// if we want to allow all origins\\r\\nexports.cors = cors();\\r\\n\\r\\n// if we want to allow only the whitelisted origins\\r\\nexports.corsWithOptions = cors(corsOptionsDelegate);\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/34/cors_34beef0e65d7cfb3f2bb7a05fb9de802.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2495\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\cors.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":2982,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":2979,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"corsOptionsDelegate\",\"ranges\":[{\"startOffset\":335,\"endOffset\":573,\"count\":18}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const express = require('express');\\n\\nconst bodyParser = require('body-parser');\\n\\nconst {\\n checkSchema\\n} = require('express-validator');\\n\\nconst cors = require('./cors');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nvar validationRules = require('../middleware/validation');\\n\\nconst employeeController = require('../controllers/employeeController');\\n\\nconst employeeRouter = express.Router();\\nemployeeRouter.use(bodyParser.json()); // **********************************************************************************\\n// \\n// Employee Routes\\n// \\n// **********************************************************************************\\n\\nemployeeRouter.route('/').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.getAllEmployees).post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.addEmployee).put(cors.corsWithOptions, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('PUT operation not supported on /employees');\\n}).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.deleteAllEmployees);\\nemployeeRouter.route('/search').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.getAllEmployeesByName); // **********************************************************************************\\n// \\n// Employee Routes Specified by ID\\n// \\n// **********************************************************************************\\n\\nemployeeRouter.route('/:employeeId').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.getEmployeeDetailsById).post(cors.corsWithOptions, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('POST operation not supported on /employees/' + req.params.employeeId);\\n}).put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.updateEmployeeDetailsById).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.deleteAEmployeeById);\\nmodule.exports = employeeRouter;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImVtcGxveWVlUm91dGVyLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwiYm9keVBhcnNlciIsImNoZWNrU2NoZW1hIiwiY29ycyIsImF1dGhlbnRpY2F0ZSIsInZhbGlkYXRpb25SdWxlcyIsImVtcGxveWVlQ29udHJvbGxlciIsImVtcGxveWVlUm91dGVyIiwiUm91dGVyIiwidXNlIiwianNvbiIsInJvdXRlIiwib3B0aW9ucyIsImNvcnNXaXRoT3B0aW9ucyIsInJlcSIsInJlcyIsInNlbmRTdGF0dXMiLCJnZXQiLCJ2ZXJpZnlVc2VyIiwidmVyaWZ5QWRtaW4iLCJnZXRBbGxFbXBsb3llZXMiLCJwb3N0IiwiYWRkRW1wbG95ZWUiLCJwdXQiLCJuZXh0Iiwic3RhdHVzQ29kZSIsImVuZCIsImRlbGV0ZSIsImRlbGV0ZUFsbEVtcGxveWVlcyIsImdldEFsbEVtcGxveWVlc0J5TmFtZSIsImdldEVtcGxveWVlRGV0YWlsc0J5SWQiLCJwYXJhbXMiLCJlbXBsb3llZUlkIiwidXBkYXRlRW1wbG95ZWVEZXRhaWxzQnlJZCIsImRlbGV0ZUFFbXBsb3llZUJ5SWQiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxPQUFPLEdBQUdDLE9BQU8sQ0FBQyxTQUFELENBQXZCOztBQUNBLE1BQU1DLFVBQVUsR0FBR0QsT0FBTyxDQUFDLGFBQUQsQ0FBMUI7O0FBQ0EsTUFBTTtBQUFFRSxFQUFBQTtBQUFGLElBQWtCRixPQUFPLENBQUMsbUJBQUQsQ0FBL0I7O0FBQ0EsTUFBTUcsSUFBSSxHQUFHSCxPQUFPLENBQUMsUUFBRCxDQUFwQjs7QUFDQSxJQUFJSSxZQUFZLEdBQUdKLE9BQU8sQ0FBQyw0QkFBRCxDQUExQjs7QUFDQSxJQUFJSyxlQUFlLEdBQUdMLE9BQU8sQ0FBQywwQkFBRCxDQUE3Qjs7QUFDQSxNQUFNTSxrQkFBa0IsR0FBR04sT0FBTyxDQUFDLG1DQUFELENBQWxDOztBQUVBLE1BQU1PLGNBQWMsR0FBR1IsT0FB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cHJlc3MnKTtcclxuY29uc3QgYm9keVBhcnNlciA9IHJlcXVpcmUoJ2JvZHktcGFyc2VyJyk7XHJcbmNvbnN0IHsgY2hlY2tTY2hlbWEgfSA9IHJlcXVpcmUoJ2V4cHJlc3MtdmFsaWRhdG9yJyk7XHJcbmNvbnN0IGNvcnMgPSByZXF1aXJlKCcuL2NvcnMnKTtcclxudmFyIGF1dGhlbnRpY2F0ZSA9IHJlcXVpcmUoJy4uL21pZGRsZXdhcmUvYXV0aGVudGljYXRlJyk7XHJcbnZhciB2YWxpZGF0aW9uUnVsZXMgPSByZXF1aXJlKCcuLi9taWRkbGV3YXJlL3ZhbGlkYXRpb24nKTtcclxuY29uc3QgZW1wbG95ZWVDb250cm9sbGVyID0gcmVxdWlyZSgnLi4vY29udHJvbGxlcnMvZW1wbG95ZWVDb250cm9sbGVyJyk7XHJcblxyXG5jb25zdCBlbXBsb3llZVJvdXRlciA9IGV4cHJlc3MuUm91dGVyKCk7XHJcblxyXG5lbXBsb3llZVJvdXRlci51c2UoYm9keVBhcnNlci5qc29uKCkpO1xyXG5cclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyBcclxuLy8gICAgICAgICAgICAgIEVtcGxveWVlIFJvdXRlc1xyXG4vLyBcclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuZW1wbG95ZWVSb3V0ZXIucm91dGUoJy8nKVxyXG4gICAgLm9wdGlvbnMoY29ycy5jb3JzV2l0aE9wdGlvbnMsIChyZXEsIHJlcykgPT4geyByZXMuc2VuZFN0YXR1cygyMDApOyB9KVxyXG4gICAgLmdldChjb3JzLmNvcnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCBhdXRoZW50aWNhdGUudmVyaWZ5QWRtaW4sICBlbXBsb3llZUNvbnRyb2xsZXIuZ2V0QWxsRW1wbG95ZWVzKVxyXG4gICAgLnBvc3QoY29ycy5jb3JzV2l0aE9wdGlvbnMsYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgZW1wbG95ZWVDb250cm9sbGVyLmFkZEVtcGxveWVlKVxyXG4gICAgLnB1dChjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgcmVzLmVuZCgnUFVUIG9wZXJhdGlvbiBub3Qgc3VwcG9ydGVkIG9uIC9lbXBsb3llZXMnKTtcclxuICAgIH0pXHJcbiAgICAuZGVsZXRlKGNvcnMuY29yc1dpdGhPcHRpb25zLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeUFkbWluLCAgZW1wbG95ZWVDb250cm9sbGVyLmRlbGV0ZUFsbEVtcGxveWVlcyk7XHJcbmVtcGxveWVlUm91dGVyLnJvdXRlKCcvc2VhcmNoJylcclxuICAgIC5vcHRpb25zKGNvcnMuY29yc1dpdGhPcHRpb25zLCAocmVxLCByZXMpID0+IHsgcmVzLnNlbmRTdGF0dXMoMjAwKTsgfSlcclxuICAgIC5wb3N0KGNvcnMuY29yc1dpdGhPcHRpb25zLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeUFkbWluLCBlbXBsb3llZUNvbnRyb2xsZXIuZ2V0QWxsRW1wbG95ZWVzQnlOYW1lKTtcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuLy8gXHJcbi8vICAgICAgICAgICAgICBFbXBsb3llZSBSb3V0ZXMgU3BlY2lmaWVkIGJ5IElEXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG5lbXBsb3llZVJvdXRlci5yb3V0ZSgnLzplbXBsb3llZUlkJylcclxuICAgIC5vcHRpb25zKGNvcnMuY29yc1dpdGhPcHRpb25zLCAocmVxLCByZXMpID0+IHsgcmVzLnNlbmRTdGF0dXMoMjAwKTsgfSlcclxuICAgIC5nZXQoY29ycy5jb3JzLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeUFkbWluLCAgZW1wbG95ZWVDb250cm9sbGVyLmdldEVtcGxveWVlRGV0YWlsc0J5SWQpXHJcbiAgICAucG9zdChjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgcmVzLmVuZCgnUE9TVCBvcGVyYXRpb24gbm90IHN1cHBvcnRlZCBvbiAvZW1wbG95ZWVzLycgKyByZXEucGFyYW1zLmVtcGxveWVlSWQpO1xyXG4gICAgfSlcclxuICAgIC5wdXQoY29ycy5jb3JzV2l0aE9wdGlvbnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCBhdXRoZW50aWNhdGUudmVyaWZ5QWRtaW4sICBlbXBsb3llZUNvbnRyb2xsZXIudXBkYXRlRW1wbG95ZWVEZXRhaWxzQnlJZClcclxuICAgIC5kZWxldGUoY29ycy5jb3JzV2l0aE9wdGlvbnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCBhdXRoZW50aWNhdGUudmVyaWZ5QWRtaW4sICBlbXBsb3llZUNvbnRyb2xsZXIuZGVsZXRlQUVtcGxveWVlQnlJZCk7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IGVtcGxveWVlUm91dGVyOyJdfQ==\",\"originalCode\":\"const express = require('express');\\r\\nconst bodyParser = require('body-parser');\\r\\nconst { checkSchema } = require('express-validator');\\r\\nconst cors = require('./cors');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\nvar validationRules = require('../middleware/validation');\\r\\nconst employeeController = require('../controllers/employeeController');\\r\\n\\r\\nconst employeeRouter = express.Router();\\r\\n\\r\\nemployeeRouter.use(bodyParser.json());\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Employee Routes\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nemployeeRouter.route('/')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.getAllEmployees)\\r\\n .post(cors.corsWithOptions,authenticate.verifyUser, authenticate.verifyAdmin, employeeController.addEmployee)\\r\\n .put(cors.corsWithOptions, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('PUT operation not supported on /employees');\\r\\n })\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.deleteAllEmployees);\\r\\nemployeeRouter.route('/search')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.getAllEmployeesByName);\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Employee Routes Specified by ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nemployeeRouter.route('/:employeeId')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.getEmployeeDetailsById)\\r\\n .post(cors.corsWithOptions, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('POST operation not supported on /employees/' + req.params.employeeId);\\r\\n })\\r\\n .put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.updateEmployeeDetailsById)\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.deleteAEmployeeById);\\r\\n\\r\\nmodule.exports = employeeRouter;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/3b/employeeRouter_3bb83cd3174a28ed34e0f44c133b9b42.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2496\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\employeeRouter.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":9455,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":9452,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":802,\"endOffset\":842,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1082,\"endOffset\":1185,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1369,\"endOffset\":1409,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1828,\"endOffset\":1868,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":2006,\"endOffset\":2135,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const Employees = require('../models/users');\\n\\nconst utils = require('../utils/utils'); // **********************************************************************************\\n// \\n// Employee Operations \\n// \\n// **********************************************************************************\\n\\n/**\\r\\n * @description get details of the assistants\\r\\n * @param {*} req \\r\\n * @param {*} res \\r\\n * @param {*} next \\r\\n * @returns {array} list of employees\\r\\n */\\n\\n\\nconst getAllEmployees = (req, res, next) => {\\n var query = {\\n \\\"role\\\": \\\"moderater\\\"\\n };\\n Employees.find(query).then(employees => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n employees: employees\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst getAllEmployeesByName = (req, res, next) => {\\n var query = {\\n \\\"role\\\": \\\"moderater\\\"\\n }; // if (req.body.similarTo) {\\n // var searchBy = req.body.similarTo || {}\\n // query = { \\\"role\\\": \\\"moderater\\\", $text: { $search: searchBy } }\\n // }\\n\\n if (req.body.similarTo) {\\n var searchBy = req.body.similarTo || {};\\n query = {\\n \\\"role\\\": \\\"moderater\\\",\\n firstname: {\\n $regex: `${searchBy}`,\\n $options: \\\"i\\\"\\n }\\n };\\n }\\n\\n var sortby = req.body.sortBy || {};\\n Employees.find(query).sort(sortby).then(employees => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n employees: employees\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst addEmployee = async (req, res, next) => {\\n const randomPassword = utils.password_generator(10);\\n var employee = {\\n username: req.body.email,\\n firstname: req.body.firstname,\\n lastname: req.body.lastname,\\n email: req.body.email,\\n role: 'moderater'\\n };\\n\\n try {\\n Employees.register(new Employees(employee), randomPassword, (err, employee) => {\\n if (err) {\\n res.statusCode = 403;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: err.message\\n });\\n } else {\\n employee.save((err, employee) => {\\n if (err) {\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Error while Saving new user.'\\n });\\n }\\n\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n email: employee.email,\\n password: randomPassword\\n });\\n });\\n }\\n });\\n } catch (error) {\\n var err = new Error(\\\"Error while registering new user.\\\");\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: err.message\\n });\\n }\\n};\\n\\nconst deleteAllEmployees = (req, res, next) => {\\n Employees.remove({\\n \\\"role\\\": \\\"moderater\\\"\\n }).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json(resp);\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nexports.getAllEmployees = getAllEmployees;\\nexports.getAllEmployeesByName = getAllEmployeesByName;\\nexports.addEmployee = addEmployee;\\nexports.deleteAllEmployees = deleteAllEmployees; // **********************************************************************************\\n// \\n// Employee Operations Specified by ID\\n// \\n// **********************************************************************************\\n\\nconst getEmployeeDetailsById = (req, res, next) => {\\n Employees.findById(req.params.employeeId).then(employee => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n employee: employee\\n });\\n }, err => {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Could not find employee with given ID'\\n });\\n }).catch(err => next(err));\\n};\\n\\nconst updateEmployeeDetailsById = (req, res, next) => {\\n var employee = {\\n username: req.body.email,\\n firstname: req.body.firstname,\\n lastname: req.body.lastname,\\n email: req.body.email,\\n role: 'moderater'\\n };\\n Employees.findByIdAndUpdate(req.params.employeeId, {\\n $set: employee\\n }, {\\n new: true\\n }).then(employee => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n employee: employee\\n });\\n }, err => next(err)).catch(err => {\\n var err = new Error(\\\"Error while updating.\\\");\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: err.message\\n });\\n });\\n};\\n\\nconst deleteAEmployeeById = (req, res, next) => {\\n Employees.findByIdAndRemove(req.params.employeeId).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json(resp);\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nexports.getEmployeeDetailsById = getEmployeeDetailsById;\\nexports.updateEmployeeDetailsById = updateEmployeeDetailsById;\\nexports.deleteAEmployeeById = deleteAEmployeeById;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImVtcGxveWVlQ29udHJvbGxlci5qcyJdLCJuYW1lcyI6WyJFbXBsb3llZXMiLCJyZXF1aXJlIiwidXRpbHMiLCJnZXRBbGxFbXBsb3llZXMiLCJyZXEiLCJyZXMiLCJuZXh0IiwicXVlcnkiLCJmaW5kIiwidGhlbiIsImVtcGxveWVlcyIsInN0YXR1c0NvZGUiLCJzZXRIZWFkZXIiLCJqc29uIiwic3VjY2VzcyIsImVyciIsImNhdGNoIiwiZ2V0QWxsRW1wbG95ZWVzQnlOYW1lIiwiYm9keSIsInNpbWlsYXJUbyIsInNlYXJjaEJ5IiwiZmlyc3RuYW1lIiwiJHJlZ2V4IiwiJG9wdGlvbnMiLCJzb3J0YnkiLCJzb3J0QnkiLCJzb3J0IiwiYWRkRW1wbG95ZWUiLCJyYW5kb21QYXNzd29yZCIsInBhc3N3b3JkX2dlbmVyYXRvciIsImVtcGxveWVlIiwidXNlcm5hbWUiLCJlbWFpbCIsImxhc3RuYW1lIiwicm9sZSIsInJlZ2lzdGVyIiwibWVzc2FnZSIsInNhdmUiLCJwYXNzd29yZCIsImVycm9yIiwiRXJyb3IiLCJkZWxldGVBbGxFbXBsb3llZXMiLCJyZW1vdmUiLCJyZXNwIiwiZXhwb3J0cyIsImdldEVtcGxveWVlRGV0YWlsc0J5SWQiLCJmaW5kQnlJZCIsInBhcmFtcyIsImVtcGxveWVlSWQiLCJ1cGRhdGVFbXBsb3llZURldGFpbHNCeUlkIiwiZmluZEJ5SWRBbmRVcGRhdGUiLCIkc2V0IiwibmV3IiwiZGVsZXRlQUVtcGxveWVlQnlJZCIsImZpbmRCeUlkQW5kUmVtb3ZlIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxTQUFTLEdBQUdDLE9BQU8sQ0FBQyxpQkFBRCxDQUF6Qjs7QUFDQSxNQUFNQyxLQUFLLEdBQUdELE9BQU8sQ0FBQyxnQkFBRCxDQUFyQixDLENBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0EsTUFBTUUsZUFBZSxHQUFHLENBQUNDLEdBQUQsRUFBTUMsR0FBTixF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SSxDQUFDUyxHQUFELENBTHBCLEVBTUtDLEtBTkwsQ0FNWUQsR0FBRCxJQUFTVCxJQUFJLENBQUNTLEdBQUQsQ0FOeEI7QUFPSCxDQVJEOztBQVVBNkIsT0FBTyxDQUFDQyxzQkFBUixHQUFpQ0Esc0JBQWpDO0FBQ0FELE9BQU8sQ0FBQ0sseUJBQVIsR0FBb0NBLHlCQUFwQztBQUNBTCxPQUFPLENBQUNTLG1CQUFSLEdBQThCQSxtQkFBOUIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBFbXBsb3llZXMgPSByZXF1aXJlKCcuLi9tb2RlbHMvdXNlcnMnKTtcclxuY29uc3QgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscy91dGlscycpO1xyXG5cclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyBcclxuLy8gICAgICAgICAgICAgIEVtcGxveWVlIE9wZXJhdGlvbnMgXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG4vKipcclxuICogQGRlc2NyaXB0aW9uIGdldCBkZXRhaWxzIG9mIHRoZSBhc3Npc3RhbnRzXHJcbiAqIEBwYXJhbSB7Kn0gcmVxIFxyXG4gKiBAcGFyYW0geyp9IHJlcyBcclxuICogQHBhcmFtIHsqfSBuZXh0IFxyXG4gKiBAcmV0dXJucyB7YXJyYXl9IGxpc3Qgb2YgZW1wbG95ZWVzXHJcbiAqL1xyXG5jb25zdCBnZXRBbGxFbXBsb3llZXMgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHZhciBxdWVyeSA9IHsgXCJyb2xlXCI6IFwibW9kZXJhdGVyXCIgfTtcclxuICAgIEVtcGxveWVlcy5maW5kKHF1ZXJ5KVxyXG4gICAgICAgIC50aGVuKChlbXBsb3llZXMpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgZW1wbG95ZWVzOiBlbXBsb3llZXMgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpO1xyXG59XHJcblxyXG5jb25zdCBnZXRBbGxFbXBsb3llZXNCeU5hbWUgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHZhciBxdWVyeSA9IHsgXCJyb2xlXCI6IFwibW9kZXJhdGVyXCIgfTtcclxuICAgIC8vIGlmIChyZXEuYm9keS5zaW1pbGFyVG8pIHtcclxuICAgIC8vICAgICB2YXIgc2VhcmNoQnkgPSByZXEuYm9keS5zaW1pbGFyVG8gfHwge31cclxuICAgIC8vICAgICBxdWVyeSA9IHsgXCJyb2xlXCI6IFwibW9kZXJhdGVyXCIsICR0ZXh0OiB7ICRzZWFyY2g6IHNlYXJjaEJ5IH0gfVxyXG4gICAgLy8gfVxyXG4gICAgaWYgKHJlcS5ib2R5LnNpbWlsYXJUbykge1xyXG4gICAgICAgIHZhciBzZWFyY2hCeSA9IHJlcS5ib2R5LnNpbWlsYXJUbyB8fCB7fVxyXG4gICAgICAgIHF1ZXJ5ID0geyBcInJvbGVcIjogXCJtb2RlcmF0ZXJcIiwgZmlyc3RuYW1lOiB7ICRyZWdleDogYCR7c2VhcmNoQnl9YCwgJG9wdGlvbnM6IFwiaVwiIH0gfVxyXG4gICAgfVxyXG4gICAgdmFyIHNvcnRieSA9IHJlcS5ib2R5LnNvcnRCeSB8fCB7fTtcclxuICAgIEVtcGxveWVlcy5maW5kKHF1ZXJ5KS5zb3J0KHNvcnRieSlcclxuICAgICAgICAudGhlbigoZW1wbG95ZWVzKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIGVtcGxveWVlczogZW1wbG95ZWVzIH0pO1xyXG4gICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuY29uc3QgYWRkRW1wbG95ZWUgPSBhc3luYyAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIGNvbnN0IHJhbmRvbVBhc3N3b3JkID0gdXRpbHMucGFzc3dvcmRfZ2VuZXJhdG9yKDEwKTtcclxuICAgIHZhciBlbXBsb3llZSA9IHtcclxuICAgICAgICB1c2VybmFtZTogcmVxLmJvZHkuZW1haWwsXHJcbiAgICAgICAgZmlyc3RuYW1lOiByZXEuYm9keS5maXJzdG5hbWUsXHJcbiAgICAgICAgbGFzdG5hbWU6IHJlcS5ib2R5Lmxhc3RuYW1lLFxyXG4gICAgICAgIGVtYWlsOiByZXEuYm9keS5lbWFpbCxcclxuICAgICAgICByb2xlOiAnbW9kZXJhdGVyJ1xyXG4gICAgfVxyXG4gICAgdHJ5IHtcclxuICAgICAgICBFbXBsb3llZXMucmVnaXN0ZXIobmV3IEVtcGxveWVlcyhlbXBsb3llZSksXHJcbiAgICAgICAgICAgIHJhbmRvbVBhc3N3b3JkLCAoZXJyLCBlbXBsb3llZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNDAzO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogZXJyLm1lc3NhZ2UgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBlbXBsb3llZS5zYXZlKChlcnIsIGVtcGxveWVlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNTAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IGZhbHNlLCBtZXNzYWdlOiAnRXJyb3Igd2hpbGUgU2F2aW5nIG5ldyB1c2VyLicgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgZW1haWw6IGVtcGxveWVlLmVtYWlsLCBwYXNzd29yZDogcmFuZG9tUGFzc3dvcmQgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICB2YXIgZXJyID0gbmV3IEVycm9yKFwiRXJyb3Igd2hpbGUgcmVnaXN0ZXJpbmcgbmV3IHVzZXIuXCIpO1xyXG4gICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNTAwO1xyXG4gICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogZXJyLm1lc3NhZ2UgfSk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmNvbnN0IGRlbGV0ZUFsbEVtcGxveWVlcyA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgRW1wbG95ZWVzLnJlbW92ZSh7IFwicm9sZVwiOiBcIm1vZGVyYXRlclwiIH0pXHJcbiAgICAgICAgLnRoZW4oKHJlc3ApID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHJlc3ApO1xyXG4gICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuZXhwb3J0cy5nZXRBbGxFbXBsb3llZXMgPSBnZXRBbGxFbXBsb3llZXM7XHJcbmV4cG9ydHMuZ2V0QWxsRW1wbG95ZWVzQnlOYW1lID0gZ2V0QWxsRW1wbG95ZWVzQnlOYW1lO1xyXG5leHBvcnRzLmFkZEVtcGxveWVlID0gYWRkRW1wbG95ZWU7XHJcbmV4cG9ydHMuZGVsZXRlQWxsRW1wbG95ZWVzID0gZGVsZXRlQWxsRW1wbG95ZWVzO1xyXG5cclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyBcclxuLy8gICAgICAgICAgICAgIEVtcGxveWVlIE9wZXJhdGlvbnMgU3BlY2lmaWVkIGJ5IElEXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG5jb25zdCBnZXRFbXBsb3llZURldGFpbHNCeUlkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICBFbXBsb3llZXMuZmluZEJ5SWQocmVxLnBhcmFtcy5lbXBsb3llZUlkKVxyXG4gICAgICAgIC50aGVuKChlbXBsb3llZSkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCBlbXBsb3llZTogZW1wbG95ZWUgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwNDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogJ0NvdWxkIG5vdCBmaW5kIGVtcGxveWVlIHdpdGggZ2l2ZW4gSUQnIH0pO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IG5leHQoZXJyKSk7XHJcbn1cclxuXHJcbmNvbnN0IHVwZGF0ZUVtcGxveWVlRGV0YWlsc0J5SWQgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHZhciBlbXBsb3llZSA9IHtcclxuICAgICAgICB1c2VybmFtZTogcmVxLmJvZHkuZW1haWwsXHJcbiAgICAgICAgZmlyc3RuYW1lOiByZXEuYm9keS5maXJzdG5hbWUsXHJcbiAgICAgICAgbGFzdG5hbWU6IHJlcS5ib2R5Lmxhc3RuYW1lLFxyXG4gICAgICAgIGVtYWlsOiByZXEuYm9keS5lbWFpbCxcclxuICAgICAgICByb2xlOiAnbW9kZXJhdGVyJ1xyXG4gICAgfVxyXG4gICAgRW1wbG95ZWVzLmZpbmRCeUlkQW5kVXBkYXRlKHJlcS5wYXJhbXMuZW1wbG95ZWVJZCwge1xyXG4gICAgICAgICRzZXQ6IGVtcGxveWVlXHJcbiAgICB9LCB7IG5ldzogdHJ1ZSB9KVxyXG4gICAgICAgIC50aGVuKChlbXBsb3llZSkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCBlbXBsb3llZTogZW1wbG95ZWUgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoXCJFcnJvciB3aGlsZSB1cGRhdGluZy5cIik7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNTAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IGZhbHNlLCBtZXNzYWdlOiBlcnIubWVzc2FnZSB9KTtcclxuICAgICAgICB9KTtcclxufVxyXG5cclxuY29uc3QgZGVsZXRlQUVtcGxveWVlQnlJZCA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgRW1wbG95ZWVzLmZpbmRCeUlkQW5kUmVtb3ZlKHJlcS5wYXJhbXMuZW1wbG95ZWVJZClcclxuICAgICAgICAudGhlbigocmVzcCkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24ocmVzcCk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpO1xyXG59XHJcblxyXG5leHBvcnRzLmdldEVtcGxveWVlRGV0YWlsc0J5SWQgPSBnZXRFbXBsb3llZURldGFpbHNCeUlkO1xyXG5leHBvcnRzLnVwZGF0ZUVtcGxveWVlRGV0YWlsc0J5SWQgPSB1cGRhdGVFbXBsb3llZURldGFpbHNCeUlkO1xyXG5leHBvcnRzLmRlbGV0ZUFFbXBsb3llZUJ5SWQgPSBkZWxldGVBRW1wbG95ZWVCeUlkOyJdfQ==\",\"originalCode\":\"const Employees = require('../models/users');\\r\\nconst utils = require('../utils/utils');\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Employee Operations \\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\n/**\\r\\n * @description get details of the assistants\\r\\n * @param {*} req \\r\\n * @param {*} res \\r\\n * @param {*} next \\r\\n * @returns {array} list of employees\\r\\n */\\r\\nconst getAllEmployees = (req, res, next) => {\\r\\n var query = { \\\"role\\\": \\\"moderater\\\" };\\r\\n Employees.find(query)\\r\\n .then((employees) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, employees: employees });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst getAllEmployeesByName = (req, res, next) => {\\r\\n var query = { \\\"role\\\": \\\"moderater\\\" };\\r\\n // if (req.body.similarTo) {\\r\\n // var searchBy = req.body.similarTo || {}\\r\\n // query = { \\\"role\\\": \\\"moderater\\\", $text: { $search: searchBy } }\\r\\n // }\\r\\n if (req.body.similarTo) {\\r\\n var searchBy = req.body.similarTo || {}\\r\\n query = { \\\"role\\\": \\\"moderater\\\", firstname: { $regex: `${searchBy}`, $options: \\\"i\\\" } }\\r\\n }\\r\\n var sortby = req.body.sortBy || {};\\r\\n Employees.find(query).sort(sortby)\\r\\n .then((employees) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, employees: employees });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst addEmployee = async (req, res, next) => {\\r\\n const randomPassword = utils.password_generator(10);\\r\\n var employee = {\\r\\n username: req.body.email,\\r\\n firstname: req.body.firstname,\\r\\n lastname: req.body.lastname,\\r\\n email: req.body.email,\\r\\n role: 'moderater'\\r\\n }\\r\\n try {\\r\\n Employees.register(new Employees(employee),\\r\\n randomPassword, (err, employee) => {\\r\\n if (err) {\\r\\n res.statusCode = 403;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: err.message });\\r\\n }\\r\\n else {\\r\\n employee.save((err, employee) => {\\r\\n if (err) {\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Error while Saving new user.' });\\r\\n }\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, email: employee.email, password: randomPassword });\\r\\n });\\r\\n }\\r\\n });\\r\\n } catch (error) {\\r\\n var err = new Error(\\\"Error while registering new user.\\\");\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: err.message });\\r\\n }\\r\\n}\\r\\n\\r\\nconst deleteAllEmployees = (req, res, next) => {\\r\\n Employees.remove({ \\\"role\\\": \\\"moderater\\\" })\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json(resp);\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nexports.getAllEmployees = getAllEmployees;\\r\\nexports.getAllEmployeesByName = getAllEmployeesByName;\\r\\nexports.addEmployee = addEmployee;\\r\\nexports.deleteAllEmployees = deleteAllEmployees;\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Employee Operations Specified by ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nconst getEmployeeDetailsById = (req, res, next) => {\\r\\n Employees.findById(req.params.employeeId)\\r\\n .then((employee) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, employee: employee });\\r\\n }, (err) => {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Could not find employee with given ID' });\\r\\n })\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst updateEmployeeDetailsById = (req, res, next) => {\\r\\n var employee = {\\r\\n username: req.body.email,\\r\\n firstname: req.body.firstname,\\r\\n lastname: req.body.lastname,\\r\\n email: req.body.email,\\r\\n role: 'moderater'\\r\\n }\\r\\n Employees.findByIdAndUpdate(req.params.employeeId, {\\r\\n $set: employee\\r\\n }, { new: true })\\r\\n .then((employee) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, employee: employee });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => {\\r\\n var err = new Error(\\\"Error while updating.\\\");\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: err.message });\\r\\n });\\r\\n}\\r\\n\\r\\nconst deleteAEmployeeById = (req, res, next) => {\\r\\n Employees.findByIdAndRemove(req.params.employeeId)\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json(resp);\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nexports.getEmployeeDetailsById = getEmployeeDetailsById;\\r\\nexports.updateEmployeeDetailsById = updateEmployeeDetailsById;\\r\\nexports.deleteAEmployeeById = deleteAEmployeeById;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/6e/employeeController_6ee2f5b4e4eea073cb5625109f63cb82.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2497\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\employeeController.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":22470,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":22467,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"getAllEmployees\",\"ranges\":[{\"startOffset\":577,\"endOffset\":889,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getAllEmployeesByName\",\"ranges\":[{\"startOffset\":922,\"endOffset\":1648,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"addEmployee\",\"ranges\":[{\"startOffset\":1671,\"endOffset\":3020,\"count\":1},{\"startOffset\":2784,\"endOffset\":3018,\"count\":0}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1998,\"endOffset\":2777,\"count\":1},{\"startOffset\":2034,\"endOffset\":2220,\"count\":0}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":2250,\"endOffset\":2761,\"count\":1},{\"startOffset\":2290,\"endOffset\":2523,\"count\":0}],\"isBlockCoverage\":true},{\"functionName\":\"deleteAllEmployees\",\"ranges\":[{\"startOffset\":3050,\"endOffset\":3287,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getEmployeeDetailsById\",\"ranges\":[{\"startOffset\":3736,\"endOffset\":4197,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"updateEmployeeDetailsById\",\"ranges\":[{\"startOffset\":4234,\"endOffset\":4944,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"deleteAEmployeeById\",\"ranges\":[{\"startOffset\":4975,\"endOffset\":5215,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const multer = require('multer');\\n\\nconst {\\n v4: uuidv4\\n} = require('uuid');\\n\\nlet path = require('path');\\n\\nconst password_generator = len => {\\n var length = len ? len : 10;\\n var string = \\\"abcdefghijklmnopqrstuvwxyz\\\"; //to upper \\n\\n var numeric = '0123456789';\\n var punctuation = '!@#$%^&*()_+~`|}{[]\\\\:;?><,./-=';\\n var password = \\\"\\\";\\n var character = \\\"\\\";\\n var crunch = true;\\n\\n while (password.length < length) {\\n entity1 = Math.ceil(string.length * Math.random() * Math.random());\\n entity2 = Math.ceil(numeric.length * Math.random() * Math.random());\\n entity3 = Math.ceil(punctuation.length * Math.random() * Math.random());\\n hold = string.charAt(entity1);\\n hold = password.length % 2 == 0 ? hold.toUpperCase() : hold;\\n character += hold;\\n character += numeric.charAt(entity2);\\n character += punctuation.charAt(entity3);\\n password = character;\\n }\\n\\n password = password.split('').sort(function () {\\n return 0.5 - Math.random();\\n }).join('');\\n return password.substr(0, length);\\n};\\n\\nexports.password_generator = password_generator;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInV0aWxzLmpzIl0sIm5hbWVzIjpbIm11bHRlciIsInJlcXVpcmUiLCJ2NCIsInV1aWR2NCIsInBhdGgiLCJwYXNzd29yZF9nZW5lcmF0b3IiLCJsZW4iLCJsZW5ndGgiLCJzdHJpbmciLCJudW1lcmljIiwicHVuY3R1YXRpb24iLCJwYXNzd29yZCIsImNoYXJhY3RlciIsImNydW5jaCIsImVudGl0eTEiLCJNYXRoIiwiY2VpbCIsInJhbmRvbSIsImVudGl0eTIiLCJlbnRpdHkzIiwiaG9sZCIsImNoYXJBdCIsInRvVXBwZXJDYXNlIiwic3BsaXQiLCJzb3J0Iiwiam9pbiIsInN1YnN0ciIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE1BQU0sR0FBR0MsT0FBTyxDQUFDLFFBQUQsQ0FBdEI7O0FBQ0EsTUFBTTtBQUFFQyxFQUFBQSxFQUFFLEVBQUVDO0FBQU4sSUFBaUJGLE9BQU8sQ0FBQyxNQUFELENBQTlCOztBQUNBLElBQUlHLElBQUksR0FBR0gsT0FBTyxDQUFDLE1BQUQsQ0FBbEI7O0FBRUEsTUFBTUksa0JBQWtCLEdBQUlDLEdBQUQsSUFBUztBQUNoQyxNQUFJQyxNQUFNLEdBQUlELEdBQUQsR0FBU0EsR0FBVCxHQUFpQixFQUE5QjtBQUNBLE1BQUlFLE1BQU0sR0FBRyw0QkFBYixDQUZnQyxDQUVXOztBQUMzQyxNQUFJQyxPQUFPLEdBQUcsWUFBZDtBQUNBLE1BQUlDLFdBQVcsR0FBRyxnQ0FBbEI7QUFDQSxNQUFJQyxRQUFRLEdBQUcsRUFBZjtBQUNBLE1BQUlDLFNBQVMsR0FBRyxFQUFoQjtBQUNBLE1BQUlDLE1BQU0sR0FBRyxJQUFiOztBQUNBLFNBQU9GLFFBQVEsQ0FBQ0osTUFBVCxHQUFrQkEsTUFBekIsRUFBaUM7QUFDN0JPLElBQUFBLE9BQU8sR0FBR0MsSUFBSSxDQUFDQyxJQUFMLENBQVVSLE1BQU0sQ0FBQ0QsTUFBUCxHQUFnQlEsSUFBSSxDQUFDRSxNQUFMLEVBQWhCLEdBQWdDRixJQUFJLENBQUNFLE1BQUwsRUFBMUMsQ0FBVjtBQUNBQyxJQUFBQSxPQUFPLEdBQUdILElBQUksQ0FBQ0MsSUFBTCxDQUFVUCxPQUFPLENBQUNGLE1BQVIsR0FBaUJRLElBQUksQ0FBQ0UsTUFBTCxFQUFqQixHQUFpQ0YsSUFBSSxDQUFDRSxNQUFMLEVBQTNDLENBQVY7QUFDQUUsSUFBQUEsT0FBTyxHQUFHSixJQUFJLENBQUNDLElBQUwsQ0FBVU4sV0FBVyxDQUFDSCxNQUFaLEdBQXFCUSxJQUFJLENBQUNFLE1BQUwsRUFBckIsR0FBcUNGLElBQUksQ0FBQ0UsTUFBTCxFQUEvQyxDQUFWO0FBQ0FHLElBQUFBLElBQUksR0FBR1osTUFBTSxDQUFDYSxNQUFQLENBQWNQLE9BQWQsQ0FBUDtBQUNBTSxJQUFBQSxJQUFJLEdBQUlULFFBQVEsQ0FBQ0osTUFBVCxHQUFrQixDQUFsQixJQUF1QixDQUF4QixHQUE4QmEsSUFBSSxDQUFDRSxXQUFMLEVBQTlCLEdBQXFERixJQUE1RDtBQUNBUixJQUFBQSxTQUFTLElBQUlRLElBQWI7QUFDQVIsSUFBQUEsU0FBUyxJQUFJSCxPQUFPLENBQUNZLE1BQVIsQ0FBZUgsT0FBZixDQUFiO0FBQ0FOLElBQUFBLFNBQVMsSUFBSUYsV0FBVyxDQUFDVyxNQUFaLENBQW1CRixPQUFuQixDQUFiO0FBQ0FSLElBQUFBLFFBQVEsR0FBR0MsU0FBWDtBQUNIOztBQUNERCxFQUFBQSxRQUFRLEdBQUdBLFFBQVEsQ0FBQ1ksS0FBVCxDQUFlLEVBQWYsRUFBbUJDLElBQW5CLENBQXdCLFlBQVk7QUFBRSxXQUFPLE1BQU1ULElBQUksQ0FBQ0UsTUFBTCxFQUFiO0FBQTRCLEdBQWxFLEVBQW9FUSxJQUFwRSxDQUF5RSxFQUF6RSxDQUFYO0FBQ0EsU0FBT2QsUUFBUSxDQUFDZSxNQUFULENBQWdCLENBQWhCLEVBQW1CbkIsTUFBbkIsQ0FBUDtBQUNILENBckJEOztBQXVCQW9CLE9BQU8sQ0FBQ3RCLGtCQUFSLEdBQTZCQSxrQkFBN0IiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBtdWx0ZXIgPSByZXF1aXJlKCdtdWx0ZXInKTtcclxuY29uc3QgeyB2NDogdXVpZHY0IH0gPSByZXF1aXJlKCd1dWlkJyk7XHJcbmxldCBwYXRoID0gcmVxdWlyZSgncGF0aCcpO1xyXG5cclxuY29uc3QgcGFzc3dvcmRfZ2VuZXJhdG9yID0gKGxlbikgPT4ge1xyXG4gICAgdmFyIGxlbmd0aCA9IChsZW4pID8gKGxlbikgOiAoMTApO1xyXG4gICAgdmFyIHN0cmluZyA9IFwiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpcIjsgLy90byB1cHBlciBcclxuICAgIHZhciBudW1lcmljID0gJzAxMjM0NTY3ODknO1xyXG4gICAgdmFyIHB1bmN0dWF0aW9uID0gJyFAIyQlXiYqKClfK35gfH17W11cXDo7Pz48LC4vLT0nO1xyXG4gICAgdmFyIHBhc3N3b3JkID0gXCJcIjtcclxuICAgIHZhciBjaGFyYWN0ZXIgPSBcIlwiO1xyXG4gICAgdmFyIGNydW5jaCA9IHRydWU7XHJcbiAgICB3aGlsZSAocGFzc3dvcmQubGVuZ3RoIDwgbGVuZ3RoKSB7XHJcbiAgICAgICAgZW50aXR5MSA9IE1hdGguY2VpbChzdHJpbmcubGVuZ3RoICogTWF0aC5yYW5kb20oKSAqIE1hdGgucmFuZG9tKCkpO1xyXG4gICAgICAgIGVudGl0eTIgPSBNYXRoLmNlaWwobnVtZXJpYy5sZW5ndGggKiBNYXRoLnJhbmRvbSgpICogTWF0aC5yYW5kb20oKSk7XHJcbiAgICAgICAgZW50aXR5MyA9IE1hdGguY2VpbChwdW5jdHVhdGlvbi5sZW5ndGggKiBNYXRoLnJhbmRvbSgpICogTWF0aC5yYW5kb20oKSk7XHJcbiAgICAgICAgaG9sZCA9IHN0cmluZy5jaGFyQXQoZW50aXR5MSk7XHJcbiAgICAgICAgaG9sZCA9IChwYXNzd29yZC5sZW5ndGggJSAyID09IDApID8gKGhvbGQudG9VcHBlckNhc2UoKSkgOiAoaG9sZCk7XHJcbiAgICAgICAgY2hhcmFjdGVyICs9IGhvbGQ7XHJcbiAgICAgICAgY2hhcmFjdGVyICs9IG51bWVyaWMuY2hhckF0KGVudGl0eTIpO1xyXG4gICAgICAgIGNoYXJhY3RlciArPSBwdW5jdHVhdGlvbi5jaGFyQXQoZW50aXR5Myk7XHJcbiAgICAgICAgcGFzc3dvcmQgPSBjaGFyYWN0ZXI7XHJcbiAgICB9XHJcbiAgICBwYXNzd29yZCA9IHBhc3N3b3JkLnNwbGl0KCcnKS5zb3J0KGZ1bmN0aW9uICgpIHsgcmV0dXJuIDAuNSAtIE1hdGgucmFuZG9tKCkgfSkuam9pbignJyk7XHJcbiAgICByZXR1cm4gcGFzc3dvcmQuc3Vic3RyKDAsIGxlbmd0aCk7XHJcbn1cclxuXHJcbmV4cG9ydHMucGFzc3dvcmRfZ2VuZXJhdG9yID0gcGFzc3dvcmRfZ2VuZXJhdG9yOyJdfQ==\",\"originalCode\":\"const multer = require('multer');\\r\\nconst { v4: uuidv4 } = require('uuid');\\r\\nlet path = require('path');\\r\\n\\r\\nconst password_generator = (len) => {\\r\\n var length = (len) ? (len) : (10);\\r\\n var string = \\\"abcdefghijklmnopqrstuvwxyz\\\"; //to upper \\r\\n var numeric = '0123456789';\\r\\n var punctuation = '!@#$%^&*()_+~`|}{[]\\\\:;?><,./-=';\\r\\n var password = \\\"\\\";\\r\\n var character = \\\"\\\";\\r\\n var crunch = true;\\r\\n while (password.length < length) {\\r\\n entity1 = Math.ceil(string.length * Math.random() * Math.random());\\r\\n entity2 = Math.ceil(numeric.length * Math.random() * Math.random());\\r\\n entity3 = Math.ceil(punctuation.length * Math.random() * Math.random());\\r\\n hold = string.charAt(entity1);\\r\\n hold = (password.length % 2 == 0) ? (hold.toUpperCase()) : (hold);\\r\\n character += hold;\\r\\n character += numeric.charAt(entity2);\\r\\n character += punctuation.charAt(entity3);\\r\\n password = character;\\r\\n }\\r\\n password = password.split('').sort(function () { return 0.5 - Math.random() }).join('');\\r\\n return password.substr(0, length);\\r\\n}\\r\\n\\r\\nexports.password_generator = password_generator;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/12/utils_12501e91058955e05c348a4b2ab3e6a2.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2498\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\utils\\\\utils.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":5216,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":5213,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"password_generator\",\"ranges\":[{\"startOffset\":223,\"endOffset\":1107,\"count\":5},{\"startOffset\":257,\"endOffset\":261,\"count\":0},{\"startOffset\":505,\"endOffset\":969,\"count\":20},{\"startOffset\":800,\"endOffset\":820,\"count\":10},{\"startOffset\":821,\"endOffset\":827,\"count\":10}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1008,\"endOffset\":1057,\"count\":144}],\"isBlockCoverage\":true}]}},{\"codeTransformResult\":{\"code\":\"const express = require('express');\\n\\nconst bodyParser = require('body-parser');\\n\\nconst cors = require('./cors');\\n\\nconst {\\n checkSchema\\n} = require('express-validator');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nvar validationRules = require('../middleware/validation');\\n\\nconst placeController = require('../controllers/placeController');\\n\\nconst visitingPlaceRouter = express.Router();\\nvisitingPlaceRouter.use(bodyParser.json()); // **********************************************************************************\\n// Visiting Place Routes\\n// **********************************************************************************\\n\\nvisitingPlaceRouter.route('/').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, placeController.getAllVisitingPlaces).post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.addVisitingPlace).put(cors.corsWithOptions, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('PUT operation not supported on /visitingPlaces');\\n}).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.deleteAllVisitingPlaces);\\nvisitingPlaceRouter.route('/search').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).post(cors.corsWithOptions, authenticate.verifyUser, placeController.getAllVisitingPlacesByName); // **********************************************************************************\\n// \\n// Visiting Place Routes On ID\\n// \\n// **********************************************************************************\\n\\nvisitingPlaceRouter.route('/:visitingPlaceId').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, placeController.getVisitingPlaceDetailsById).post(cors.corsWithOptions, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('POST operation not supported on /visitingPlaces/' + req.params.visitingPlaceId);\\n}).put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.updateVisitingPlaceDetailsById).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.deleteAVisitingPlaceById);\\nmodule.exports = visitingPlaceRouter;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBsYWNlUm91dGVyLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwiYm9keVBhcnNlciIsImNvcnMiLCJjaGVja1NjaGVtYSIsImF1dGhlbnRpY2F0ZSIsInZhbGlkYXRpb25SdWxlcyIsInBsYWNlQ29udHJvbGxlciIsInZpc2l0aW5nUGxhY2VSb3V0ZXIiLCJSb3V0ZXIiLCJ1c2UiLCJqc29uIiwicm91dGUiLCJvcHRpb25zIiwiY29yc1dpdGhPcHRpb25zIiwicmVxIiwicmVzIiwic2VuZFN0YXR1cyIsImdldCIsInZlcmlmeVVzZXIiLCJnZXRBbGxWaXNpdGluZ1BsYWNlcyIsInBvc3QiLCJ2ZXJpZnlBZG1pbiIsImFkZFZpc2l0aW5nUGxhY2UiLCJwdXQiLCJuZXh0Iiwic3RhdHVzQ29kZSIsImVuZCIsImRlbGV0ZSIsImRlbGV0ZUFsbFZpc2l0aW5nUGxhY2VzIiwiZ2V0QWxsVmlzaXRpbmdQbGFjZXNCeU5hbWUiLCJnZXRWaXNpdGluZ1BsYWNlRGV0YWlsc0J5SWQiLCJwYXJhbXMiLCJ2aXNpdGluZ1BsYWNlSWQiLCJ1cGRhdGVWaXNpdGluZ1BsYWNlRGV0YWlsc0J5SWQiLCJkZWxldGVBVmlzaXRpbmdQbGFjZUJ5SWQiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxPQUFPLEdBQUdDLE9BQU8sQ0FBQyxTQUFELENBQXZCOztBQUNBLE1BQU1DLFVBQVUsR0FBR0QsT0FBTyxDQUFDLGFBQUQsQ0FBMUI7O0FBRUEsTUFBTUUsSUFBSSxHQUFHRixPQUFPLENBQUMsUUFBRCxDQUFwQjs7QUFDQSxNQUFNO0FBQUVHLEVBQUFBO0FBQUYsSUFBa0JILE9BQU8sQ0FBQyxtQkFBRCxDQUEvQjs7QUFDQSxJQUFJSSxZQUFZLEdBQUdKLE9BQU8sQ0FBQyw0QkFBRCxDQUExQjs7QUFDQSxJQUFJSyxlQUFlLEdBQUdMLE9BQU8sQ0FBQywwQkFBRCxDQUE3Qjs7QUFDQSxNQUFNTSxlQUFlLEdBQUdOLE9BQU8sQ0FBQyxnQ0FBRCxDQUEvQjs7QUFFQSxNQUFNTyxtQkFBbUIsR0FBR1IsT0FBTyxDQUFDUyxNQUFSLEVBQTVCO0FBRUFELG1CQUFtQixDQUFDRSxHQUFwQixDQUF3QlIsVUFBVSxDQUFDUyxJQUFYLEVBQXhCLEUsQ0FFQTtBQUVBO0FBRUE7O0FBRUFILG1CQUFtQixDQUFDSSxLQUFwQixDQUEwQixHQUExQixFQUNLQyxPQURMLENBQ2FWLElBQUksQ0FBQ1csZUFEbEIsRUFDbUMsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEtBQWM7QUFBRUEsRUFBQUEsR0FBRyxDQUFDQyxVQUFKLENBQWUsR0FBZjtBQUFzQixDQUR6RSxFQUVLQyxHQUZMLENBRVNmLElBQUksQ0FBQ0EsSUFGZCxFQUVvQkUsWUFBWSxDQUFDYyxVQUZqQyxFQUU2Q1osZUFBZSxDQUFDYSxvQkFGN0QsRUFHS0MsSUFITCxDQUdVbEIsSUFBSSxDQUFDVyxlQUhmLEVBR2dDVCxZQUFZLENBQUNjLFVBSDdDLEVBR3lEZCxZQUFZLENBQUNpQixXQUh0RSxFQUdtRmYsZUFBZSxDQUFDZ0IsZ0JBSG5HLEVBSUtDLEdBSkwsQ0FJU3JCLElBQUksQ0FBQ1csZUFKZCxFQUkrQixDQUFDQyxHQUFELEVBQU1DLEdBQU4sRUFBV1MsSUFBWCxLQUFvQjtBQUMzQ1QsRUFBQUEsR0FBRyxDQUFDVSxVQUFKLEdBQWlCLEdBQWpCO0FBQ0FWLEVBQUFBLEdBQUcsQ0FBQ1csR0FBSixDQUFRLGdEQUFSO0FBQ0gsQ0FQTCxFQVFLQyxNQVJMLENBUVl6QixJQUFJLENBQUNXLGVBUmpCLEVBUWtDVCxZQUFZLENBQUNjLFVBUi9DLEVBUTJEZCxZQUFZLENBQUNpQixXQVJ4RSxFQVFxRmYsZUFBZSxDQUFDc0IsdUJBUnJHO0FBU0FyQixtQkFBbUIsQ0FBQ0ksS0FBcEIsQ0FBMEIsU0FBMUIsRUFDS0MsT0FETCxDQUNhVixJQUFJLENBQUNXLGVBRGxCLEVBQ21DLENBQUNDLEdBQUQsRUFBTUMsR0FBTixLQUFjO0FBQUVBLEVBQUFBLEdBQUcsQ0FBQ0MsVUFBSixDQUFlLEdBQWY7QUFBc0IsQ0FEekUsRUFFS0ksSUFGTCxDQUVVbEIsSUFBSSxDQUFDVyxlQUZmLEVBRWdDVCxZQUFZLENBQUNjLFVBRjdDLEVBRXlEWixlQUFlLENBQUN1QiwwQkFGekUsRSxDQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUF0QixtQkFBbUIsQ0FBQ0ksS0FBcEIsQ0FBMEIsbUJBQTFCLEVBQ0tDLE9BREwsQ0FDYVYsSUFBSSxDQUFDVyxlQURsQixFQUNtQyxDQUFDQyxHQUFELEVBQU1DLEdBQU4sS0FBYztBQUFFQSxFQUFBQSxHQUFHLENBQUNDLFVBQUosQ0FBZSxHQUFmO0FBQXNCLENBRHpFLEVBRUtDLEdBRkwsQ0FFU2YsSUFBSSxDQUFDQSxJQUZkLEVBRW9CRSxZQUFZLENBQUNjLFVBRmpDLEVBRTZDWixlQUFlLENBQUN3QiwyQkFGN0QsRUFHS1YsSUFITCxDQUdVbEIsSUFBSSxDQUFDVyxlQUhmLEVBR2dDLENBQUNDLEdBQUQsRUFBTUMsR0FBTixFQUFXUyxJQUFYLEtBQW9CO0FBQzVDVCxFQUFBQSxHQUFHLENBQUNVLFVBQUosR0FBaUIsR0FBakI7QUFDQVYsRUFBQUEsR0FBRyxDQUFDVyxHQUFKLENBQVEscURBQXFEWixHQUFHLENBQUNpQixNQUFKLENBQVdDLGVBQXhFO0FBQ0gsQ0FOTCxFQU9LVCxHQVBMLENBT1NyQixJQUFJLENBQUNXLGVBUGQsRUFPK0JULFlBQVksQ0FBQ2MsVUFQNUMsRUFPd0RkLFlBQVksQ0FBQ2lCLFdBUHJFLEVBT2tGZixlQUFlLENBQUMyQiw4QkFQbEcsRUFRS04sTUFSTCxDQVFZekIsSUFBSSxDQUFDVyxlQVJqQixFQVFrQ1QsWUFBWSxDQUFDYyxVQVIvQyxFQVEyRGQsWUFBWSxDQUFDaUIsV0FSeEUsRUFRcUZmLGVBQWUsQ0FBQzRCLHdCQVJyRztBQVVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUI3QixtQkFBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBleHByZXNzID0gcmVxdWlyZSgnZXhwcmVzcycpO1xyXG5jb25zdCBib2R5UGFyc2VyID0gcmVxdWlyZSgnYm9keS1wYXJzZXInKTtcclxuXHJcbmNvbnN0IGNvcnMgPSByZXF1aXJlKCcuL2NvcnMnKTtcclxuY29uc3QgeyBjaGVja1NjaGVtYSB9ID0gcmVxdWlyZSgnZXhwcmVzcy12YWxpZGF0b3InKTtcclxudmFyIGF1dGhlbnRpY2F0ZSA9IHJlcXVpcmUoJy4uL21pZGRsZXdhcmUvYXV0aGVudGljYXRlJyk7XHJcbnZhciB2YWxpZGF0aW9uUnVsZXMgPSByZXF1aXJlKCcuLi9taWRkbGV3YXJlL3ZhbGlkYXRpb24nKTtcclxuY29uc3QgcGxhY2VDb250cm9sbGVyID0gcmVxdWlyZSgnLi4vY29udHJvbGxlcnMvcGxhY2VDb250cm9sbGVyJyk7XHJcblxyXG5jb25zdCB2aXNpdGluZ1BsYWNlUm91dGVyID0gZXhwcmVzcy5Sb3V0ZXIoKTtcclxuXHJcbnZpc2l0aW5nUGxhY2VSb3V0ZXIudXNlKGJvZHlQYXJzZXIuanNvbigpKTtcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbi8vICAgICAgICAgICAgICBWaXNpdGluZyBQbGFjZSBSb3V0ZXNcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbnZpc2l0aW5nUGxhY2VSb3V0ZXIucm91dGUoJy8nKVxyXG4gICAgLm9wdGlvbnMoY29ycy5jb3JzV2l0aE9wdGlvbnMsIChyZXEsIHJlcykgPT4geyByZXMuc2VuZFN0YXR1cygyMDApOyB9KVxyXG4gICAgLmdldChjb3JzLmNvcnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCBwbGFjZUNvbnRyb2xsZXIuZ2V0QWxsVmlzaXRpbmdQbGFjZXMpXHJcbiAgICAucG9zdChjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgcGxhY2VDb250cm9sbGVyLmFkZFZpc2l0aW5nUGxhY2UpXHJcbiAgICAucHV0KGNvcnMuY29yc1dpdGhPcHRpb25zLCAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwMztcclxuICAgICAgICByZXMuZW5kKCdQVVQgb3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQgb24gL3Zpc2l0aW5nUGxhY2VzJyk7XHJcbiAgICB9KVxyXG4gICAgLmRlbGV0ZShjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgcGxhY2VDb250cm9sbGVyLmRlbGV0ZUFsbFZpc2l0aW5nUGxhY2VzKTtcclxudmlzaXRpbmdQbGFjZVJvdXRlci5yb3V0ZSgnL3NlYXJjaCcpXHJcbiAgICAub3B0aW9ucyhjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcbiAgICAucG9zdChjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIHBsYWNlQ29udHJvbGxlci5nZXRBbGxWaXNpdGluZ1BsYWNlc0J5TmFtZSk7XHJcblxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbi8vIFxyXG4vLyAgICAgICAgICAgICAgVmlzaXRpbmcgUGxhY2UgUm91dGVzIE9uIElEXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG52aXNpdGluZ1BsYWNlUm91dGVyLnJvdXRlKCcvOnZpc2l0aW5nUGxhY2VJZCcpXHJcbiAgICAub3B0aW9ucyhjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcbiAgICAuZ2V0KGNvcnMuY29ycywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIHBsYWNlQ29udHJvbGxlci5nZXRWaXNpdGluZ1BsYWNlRGV0YWlsc0J5SWQpXHJcbiAgICAucG9zdChjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgcmVzLmVuZCgnUE9TVCBvcGVyYXRpb24gbm90IHN1cHBvcnRlZCBvbiAvdmlzaXRpbmdQbGFjZXMvJyArIHJlcS5wYXJhbXMudmlzaXRpbmdQbGFjZUlkKTtcclxuICAgIH0pXHJcbiAgICAucHV0KGNvcnMuY29yc1dpdGhPcHRpb25zLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeUFkbWluLCBwbGFjZUNvbnRyb2xsZXIudXBkYXRlVmlzaXRpbmdQbGFjZURldGFpbHNCeUlkKVxyXG4gICAgLmRlbGV0ZShjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgcGxhY2VDb250cm9sbGVyLmRlbGV0ZUFWaXNpdGluZ1BsYWNlQnlJZCk7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IHZpc2l0aW5nUGxhY2VSb3V0ZXI7XHJcbiJdfQ==\",\"originalCode\":\"const express = require('express');\\r\\nconst bodyParser = require('body-parser');\\r\\n\\r\\nconst cors = require('./cors');\\r\\nconst { checkSchema } = require('express-validator');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\nvar validationRules = require('../middleware/validation');\\r\\nconst placeController = require('../controllers/placeController');\\r\\n\\r\\nconst visitingPlaceRouter = express.Router();\\r\\n\\r\\nvisitingPlaceRouter.use(bodyParser.json());\\r\\n\\r\\n// **********************************************************************************\\r\\n\\r\\n// Visiting Place Routes\\r\\n\\r\\n// **********************************************************************************\\r\\n\\r\\nvisitingPlaceRouter.route('/')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, placeController.getAllVisitingPlaces)\\r\\n .post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.addVisitingPlace)\\r\\n .put(cors.corsWithOptions, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('PUT operation not supported on /visitingPlaces');\\r\\n })\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.deleteAllVisitingPlaces);\\r\\nvisitingPlaceRouter.route('/search')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .post(cors.corsWithOptions, authenticate.verifyUser, placeController.getAllVisitingPlacesByName);\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Visiting Place Routes On ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nvisitingPlaceRouter.route('/:visitingPlaceId')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, placeController.getVisitingPlaceDetailsById)\\r\\n .post(cors.corsWithOptions, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('POST operation not supported on /visitingPlaces/' + req.params.visitingPlaceId);\\r\\n })\\r\\n .put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.updateVisitingPlaceDetailsById)\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.deleteAVisitingPlaceById);\\r\\n\\r\\nmodule.exports = visitingPlaceRouter;\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/9d/placeRouter_9d9aca2c41f2c1b6283bdacdd67537b2.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2539\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\placeRouter.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":9353,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":9350,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":809,\"endOffset\":849,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1067,\"endOffset\":1175,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1366,\"endOffset\":1406,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1807,\"endOffset\":1847,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1961,\"endOffset\":2100,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const VisitingPlaces = require('../models/visitingPlaces'); // **********************************************************************************\\n// \\n// Visiting Place Operations \\n// \\n// **********************************************************************************\\n\\n\\nconst getAllVisitingPlaces = (req, res, next) => {\\n var query = {};\\n VisitingPlaces.find(query, 'name description distance location timeToReach image travellingMethods').then(visitingPlaces => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n visitingPlaces: visitingPlaces\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst getAllVisitingPlacesByName = (req, res, next) => {\\n var query = {};\\n\\n if (req.body.similarTo) {\\n query = {\\n name: {\\n $regex: `${req.body.similarTo}`,\\n $options: \\\"i\\\"\\n }\\n };\\n }\\n\\n VisitingPlaces.find(query, 'name description distance location timeToReach image travellingMethods').then(visitingPlaces => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n visitingPlaces: visitingPlaces\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst addVisitingPlace = (req, res, next) => {\\n var imagesArray = []; // files = req.files;\\n // files.forEach(file => {\\n // imagesArray.push(file.filename);\\n // });\\n\\n var place = {\\n name: req.body.name,\\n description: req.body.description,\\n location: {\\n coordinates: req.body.location.coordinates\\n },\\n distance: req.body.distance,\\n timeToReach: req.body.timeToReach,\\n images: imagesArray,\\n travellingMethods: req.body.methods\\n };\\n VisitingPlaces.create(place).then(visitingPlace => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n visitingPlace: visitingPlace\\n });\\n }, err => {\\n res.statusCode = 403;\\n res.setHeader('Content-Type', 'application/json');\\n const msg = err.driver ? \\\"Duplicate Key\\\" : err._message;\\n res.json({\\n success: false,\\n message: msg\\n });\\n }).catch(err => next(err));\\n};\\n\\nconst deleteAllVisitingPlaces = (req, res, next) => {\\n VisitingPlaces.remove({}).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json(resp);\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nexports.getAllVisitingPlaces = getAllVisitingPlaces;\\nexports.getAllVisitingPlacesByName = getAllVisitingPlacesByName;\\nexports.addVisitingPlace = addVisitingPlace;\\nexports.deleteAllVisitingPlaces = deleteAllVisitingPlaces; // **********************************************************************************\\n// \\n// Visiting Place Operations Specified by ID\\n// \\n// **********************************************************************************\\n\\nconst getVisitingPlaceDetailsById = (req, res, next) => {\\n VisitingPlaces.findById(req.params.visitingPlaceId).then(visitingPlace => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n visitingPlace: visitingPlace\\n });\\n }, err => {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: \\\"Could not find the place\\\"\\n });\\n }).catch(err => next(err));\\n};\\n\\nconst updateVisitingPlaceDetailsById = (req, res, next) => {\\n VisitingPlaces.findByIdAndUpdate(req.params.visitingPlaceId, {\\n $set: req.body\\n }, {\\n new: true\\n }).then(visitingPlace => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n visitingPlace: visitingPlace\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst deleteAVisitingPlaceById = (req, res, next) => {\\n VisitingPlaces.findByIdAndRemove(req.params.visitingPlaceId).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n response: resp\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nexports.getVisitingPlaceDetailsById = getVisitingPlaceDetailsById;\\nexports.updateVisitingPlaceDetailsById = updateVisitingPlaceDetailsById;\\nexports.deleteAVisitingPlaceById = deleteAVisitingPlaceById;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBsYWNlQ29udHJvbGxlci5qcyJdLCJuYW1lcyI6WyJWaXNpdGluZ1BsYWNlcyIsInJlcXVpcmUiLCJnZXRBbGxWaXNpdGluZ1BsYWNlcyIsInJlcSIsInJlcyIsIm5leHQiLCJxdWVyeSIsImZpbmQiLCJ0aGVuIiwidmlzaXRpbmdQbGFjZXMiLCJzdGF0dXNDb2RlIiwic2V0SGVhZGVyIiwianNvbiIsInN1Y2Nlc3MiLCJlcnIiLCJjYXRjaCIsImdldEFsbFZpc2l0aW5nUGxhY2VzQnlOYW1lIiwiYm9keSIsInNpbWlsYXJUbyIsIm5hbWUiLCIkcmVnZXgiLCIkb3B0aW9ucyIsImFkZFZpc2l0aW5nUGxhY2UiLCJpbWFnZXNBcnJheSIsInBsYWNlIiwiZGVzY3JpcHRpb24iLCJsb2NhdGlvbiIsImNvb3JkaW5hdGVzIiwiZGlzdGFuY2UiLCJ0aW1lVG9SZWFjaCIsImltYWdlcyIsInRyYXZlbGxpbmdNZXRob2RzIiwibWV0aG9kcyIsImNyZWF0ZSIsInZpc2l0aW5nUGxhY2UiLCJtc2ciLCJkcml2ZXIiLCJfbWVzc2FnZSIsIm1lc3NhZ2UiLCJkZWxldGVBbGxWaXNpdGluZ1BsYWNlcyIsInJlbW92ZSIsInJlc3AiLCJleHBvcnRzIiwiZ2V0VmlzaXRpbmdQbGFjZURldGFpbHNCeUlkIiwiZmluZEJ5SWQiLCJwYXJhbXMiLCJ2aXNpdGluZ1BsYWNlSWQiLCJ1cGRhdGVWaXNpdGluZ1BsYWNlRGV0YWlsc0J5SWQiLCJmaW5kQnlJZEFuZFVwZGF0ZSIsIiRzZXQiLCJuZXciLCJkZWxldGVBVmlzaXRpbmdQbGFjZUJ5SWQiLCJmaW5kQnlJZEFuZFJlbW92ZSIsInJlc3BvbnNlIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxjQUFjLEdBQUdDLE9BQU8sQ0FBQywwQkFBRCxDQUE5QixDLENBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUEsTUFBTUMsb0JBQW9CLEdBQUcsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDN0MsTUFBSUMsS0FBSyxHQUFHLEVBQVo7QUFDQU4sRUFBQUEsY0FBYyxDQUFDTyxJQUFmLENBQW9CRCxLQUFwQixFQUEyQix3RUFBM0IsRUFDS0UsSUFETCxDQUNXQyxjQUFELElBQW9CO0FBQ3RCTCxJQUFBQSxHQUFHLENBQUNNLFVBQUosR0FBaUIsR0FBakI7QUFDQU4sSUFBQUEsR0FBRyxDQUFDTyxTQUFKLENBQWMsY0FBZCxFQUE4QixrQkFBOUI7QUFDQVAsSUFBQUEsR0FBRyxDQUFDUSxJQUFKLENBQVM7QUFBRUMsTUFBQUEsT0FBTyxFQUFFLElBQVg7QUFBaUJKLE1BQUFBLGNBQWMsRUFBRUE7QUFBakMsS0FBVDtBQUNILEdBTEwsRUFLUUssR0FBRCxJQUFTVCxJQUFJLENBQUNTLEdBQUQsQ0FMcEIsRUFNS0MsS0FOTCxDQU1ZRCxHQUFELElBQVNULElBQUksQ0FBQ1MsR0FBRCxDQU54QjtBQU9ILENBVEQ7O0FBV0EsTUFBTUUsMEJBQTBCLEdBQUcsQ0FBQ2IsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDbkQsTUFBSUMsS0FBSyxHQUFHLEVBQVo7O0FBQ0EsTUFBSUgsR0FBRyxDQUFDYyxJQUFKLENBQVNDLFNBQWIsRUFBd0I7QUFDcEJaLElBQUFBLEtBQUssR0FBRztBQUFFYSxNQUFBQSxJQUFJLEVBQUU7QUFBRUMsUUFBQUEsTUFBTSxFQUFHLEdBQUVqQixHQUFHLENBQUNjLElBQUosQ0FBU0MsU0FBVSxFQUFoQztBQUFtQ0csUUFBQUEsUUFBUSxFQUFFO0FBQTdDO0FBQVIsS0FBUjtBQUNIOztBQUNEckIsRUFBQUEsY0FBYyxDQUFDTyxJQUFmLENBQW9CRCxLQUFwQixFQUEyQix3RUFBM0IsRUFDS0UsSUFETCxDQUNXQyxjQUFELElBQW9CO0FBQ3RCTCxJQUFBQSxHQUFHLENBQUNNLFVBQUosR0FBaUIsR0FBakI7QUFDQU4sSUFBQUEsR0FBRyxDQUFDTyxTQUFKLENBQWMsY0FBZCxFQUE4QixrQkFBOUI7QUFDQVAsSUFBQUEsR0FBRyxDQUFDUSxJQUFKLENBQVM7QUFBRUMsTUFBQUEsT0FBTyxFQUFFLElBQVg7QUFBaUJKLE1BQUFBLGNBQWMsRUFBRUE7QUFBakMsS0FBVDtBQUNILEdBTEwsRUFLUUssR0FBRCxJQUFTVCxJQUFJLENBQUNTLEdBQUQsQ0FMcEIsRUFNS0MsS0FOTCxDQU1ZRCxHQUFELElBQVNULElBQUksQ0FBQ1MsR0FBRCxDQU54QjtBQU9ILENBWkQ7O0FBY0EsTUFBTVEsZ0JBQWdCLEdBQUcsQ0FBQ25CLEdBQUQsRUFBTUMsR0FBTixFQUFXQyxJQUFYLEtBQW9CO0FBQ3pDLE1BQUlrQixXQUFXLEdBQUcsRUFBbEIsQ0FEeUMsQ0FFekM7QUFDQTtBQUNBO0FBQ0E7O0FBQ0EsTUFBSUMsS0FBSyxHQUNUO0FBQ0lMLElBQUFBLElBQUksRUFBRWhCLEdBQUcsQ0FBQ2MsSUFBSixDQUFTRSxJQURuQjtBQUVJTSxJQUFBQSxXQUFXLEVBQUV0QixHQUFHLENBQUNjLElBQUosQ0FBU1EsV0FGMUI7QUFHSUMsSUFBQUEsUUFBUSxFQUFFO0FBQ05DLE1BQUFBLFdBQVcsRUFBRXhCLEdBQUcsQ0FBQ2MsSUFBSixDQUFTUyxRQUFULENBQWtCQztBQUR6QixLQUhkO0FBTUlDLElBQUFBLFFBQVEsRUFBRXpCLEdBQUcsQ0FBQ2MsSUFBSixDQUFTVyxRQU52QjtBQU9JQyxJQUFBQSxXQUFXLEVBQUUxQixHQUFHLENBQUNjLElBQUosQ0FBU1ksV0FQMUI7QUFRSUMsSUFBQUEsTUFBTSxFQUFFUCxXQVJaO0FBU0lRLElBQUFBLGlCQUFpQixFQUFFNUIsR0FBRyxDQUFDYyxJQUFKLENBQVNlO0FBVGhDLEdBREE7QUFZQWhDLEVBQUFBLGNBQWMsQ0FBQ2lDLE1BQWYsQ0FBc0JULEtBQXRCLEVBQ0toQixJQURMLENBQ1cwQixhQUFELElBQW1CO0FBQ3JCOUIsSUFBQUEsR0FBRyxDQUFDTSxVQUFKLEdBQWlCLEdBQWpCO0FBQ0FOLElBQUFBLEdBQUcsQ0FBQ08sU0FBSixDQUFjLGNBQWQsRUFBOEIsa0JBQTlCO0FBQ0FQLElBQUFBLEdBQUcsQ0FBQ1EsSUFBSixDQUFTO0FBQUVDLE1BQUFBLE9BQU8sRUFBRSxJQUFYO0FBQWlCcUIsTUFBQUEsYUFBYSxFQUFFQTtBQUFoQyxLQUFUO0FBQ0gsR0FMTCxFQUtRcEIsR0FBRCxJQUFTO0FBQ1JWLElBQUFBLEdBQUcsQ0FBQ00sVUFBSixHQUFpQixHQUFqQjtBQUNBTixJQUFBQSxHQUFHLENBQUNPLFNBQUosQ0FBYyxjQUFkLEVBQThCLGtCQUE5QjtBQUNBLFVBQU13QixHQUFHLEdBQUdyQixHQUFHLENBQUNzQixNQUFKLEdBQWEsZUFBYixHQUErQnRCLEdBQUcsQ0FBQ3VCLFFBQS9DO0FBQ0FqQyxJQUFBQSxHQUFHLENBQUNRLElBQUosQ0FBUztBQUFFQyxNQUFBQSxPQUFPLEVBQUUsS0FBWDtBQUFrQnlCLE1BQUFBLE9BQU8sRUFBRUg7QUFBM0IsS0FBVDtBQUNILEdBVkwsRUFXS3BCLEtBWEwsQ0FXWUQsR0FBRCxJQUFTVCxJQUFJLENBQUNTLEdBQUQsQ0FYeEI7QUFZSCxDQTlCRDs7QUFnQ0EsTUFBTXlCLHVCQUF1QixHQUFHLENBQUNwQyxHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUNoREwsRUFBQUEsY0FBYyxDQUFDd0MsTUFBZixDQUFzQixFQUF0QixFQUNLaEMsSUFETCxDQUNXaUMsSUFBRCxJQUFVO0FBQ1pyQyxJQUFBQSxHQUFHLENBQUNNLFVBQUosR0FBaUIsR0FBakI7QUFDQU4sSUFBQUEsR0FBRyxDQUFDTyxTQUFKLENBQWMsY0FBZCxFQUE4QixrQkFBOUI7QUFDQVAsSUFBQUEsR0FBRyxDQUFDUSxJQUFKLENBQVM2QixJQUFUO0FBQ0gsR0FMTCxFQUtRM0IsR0FBRCxJQUFTVCxJQUFJLENBQUNTLEdBQUQsQ0FMcEIsRUFNS0MsS0FOTCxDQU1ZRCxHQUFELElBQVNULElBQUksQ0FBQ1MsR0FBRCxDQU54QjtBQU9ILENBUkQ7O0FBVUE0QixPQUFPLENBQUN4QyxvQkFBUixHQUErQkEsb0JBQS9CO0FBQ0F3QyxPQUFPLENBQUMxQiwwQkFBUixHQUFxQ0EsMEJBQXJDO0FBQ0EwQixPQUFPLENBQUNwQixnQkFBUixHQUEyQkEsZ0JBQTNCO0FBQ0FvQixPQUFPLENBQUNILHVCQUFSLEdBQWtDQSx1QkFBbEMsQyxDQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsTUFBTUksMkJBQTJCLEdBQUcsQ0FBQ3hDLEdBQUQsRUFBTUMsR0FBTixFQUFXQyxJQUFYLEtBQW9CO0FBQ3BETCxFQUFBQSxjQUFjLENBQUM0QyxRQUFmLENBQXdCekMsR0FBRyxDQUFDMEMsTUFBSixDQUFXQyxlQUFuQyxFQUNLdEMsSUFETCxDQUNXMEIsYUFBRCxJQUFtQjtBQUNyQjlCLElBQUFBLEdBQUcsQ0FBQ00sVUFBSixHQUFpQixHQUFqQjtBQUNBTixJQUFBQSxHQUFHLENBQUNPLFNBQUosQ0FBYyxjQUFkLEVBQThCLGtCQUE5QjtBQUNBUCxJQUFBQSxHQUFHLENBQUNRLElBQUosQ0FBUztBQUFFQyxNQUFBQSxPQUFPLEVBQUUsSUFBWDtBQUFpQnFCLE1BQUFBLGFBQWEsRUFBRUE7QUFBaEMsS0FBVDtBQUNILEdBTEwsRUFLUXBCLEdBQUQsSUFBUztBQUNSVixJQUFBQSxHQUFHLENBQUNNLFVBQUosR0FBaUIsR0FBakI7QUFDQU4sSUFBQUEsR0FBRyxDQUFDTyxTQUFKLENBQWMsY0FBZCxFQUE4QixrQkFBOUI7QUFDQVAsSUFBQUEsR0FBRyxDQUFDUSxJQUFKLENBQVM7QUFBRUMsTUFBQUEsT0FBTyxFQUFFLEtBQVg7QUFBa0J5QixNQUFBQSxPQUFPLEVBQUU7QUFBM0IsS0FBVDtBQUNILEdBVEwsRUFVS3ZCLEtBVkwsQ0FVWUQsR0FBRCxJQUFTVCxJQUFJLENBQUNTLEdBQUQsQ0FWeEI7QUFXSCxDQVpEOztBQWNBLE1BQU1pQyw4QkFBOEIsR0FBRyxDQUFDNUMsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDdkRMLEVBQUFBLGNBQWMsQ0FBQ2dELGlCQUFmLENBQWlDN0MsR0FBRyxDQUFDMEMsTUFBSixDQUFXQyxlQUE1QyxFQUE2RDtBQUN6REcsSUFBQUEsSUFBSSxFQUFFOUMsR0FBRyxDQUFDYztBQUQrQyxHQUE3RCxFQUVHO0FBQUVpQyxJQUFBQSxHQUFHLEVBQUU7QUFBUCxHQUZILEVBR0sxQyxJQUhMLENBR1cwQixhQUFELElBQW1CO0FBQ3JCOUIsSUFBQUEsR0FBRyxDQUFDTSxVQUFKLEdBQWlCLEdBQWpCO0FBQ0FOLElBQUFBLEdBQUcsQ0FBQ08sU0FBSixDQUFjLGNBQWQsRUFBOEIsa0JBQTlCO0FBQ0FQLElBQUFBLEdBQUcsQ0FBQ1EsSUFBSixDQUFTO0FBQUVDLE1BQUFBLE9BQU8sRUFBRSxJQUFYO0FBQWlCcUIsTUFBQUEsYUFBYSxFQUFFQTtBQUFoQyxLQUFUO0FBQ0gsR0FQTCxFQU9RcEIsR0FBRCxJQUFTVCxJQUFJLENBQUNTLEdBQUQsQ0FQcEIsRUFRS0MsS0FSTCxDQVFZRCxHQUFELElBQVNULElBQUksQ0FBQ1MsR0FBRCxDQVJ4QjtBQVNILENBVkQ7O0FBWUEsTUFBTXFDLHdCQUF3QixHQUFHLENBQUNoRCxHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUNqREwsRUFBQUEsY0FBYyxDQUFDb0QsaUJBQWYsQ0FBaUNqRCxHQUFHLENBQUMwQyxNQUFKLENBQVdDLGVBQTVDLEVBQ0t0QyxJQURMLENBQ1dpQyxJQUFELElBQVU7QUFDWnJDLElBQUFBLEdBQUcsQ0FBQ00sVUFBSixHQUFpQixHQUFqQjtBQUNBTixJQUFBQSxHQUFHLENBQUNPLFNBQUosQ0FBYyxjQUFkLEVBQThCLGtCQUE5QjtBQUNBUCxJQUFBQSxHQUFHLENBQUNRLElBQUosQ0FBUztBQUFFQyxNQUFBQSxPQUFPLEVBQUUsSUFBWDtBQUFpQndDLE1BQUFBLFFBQVEsRUFBRVo7QUFBM0IsS0FBVDtBQUNILEdBTEwsRUFLUTNCLEdBQUQsSUFBU1QsSUFBSSxDQUFDUyxHQUFELENBTHBCLEVBTUtDLEtBTkwsQ0FNWUQsR0FBRCxJQUFTVCxJQUFJLENBQUNTLEdBQUQsQ0FOeEI7QUFPSCxDQVJEOztBQVVBNEIsT0FBTyxDQUFDQywyQkFBUixHQUFzQ0EsMkJBQXRDO0FBQ0FELE9BQU8sQ0FBQ0ssOEJBQVIsR0FBeUNBLDhCQUF6QztBQUNBTCxPQUFPLENBQUNTLHdCQUFSLEdBQW1DQSx3QkFBbkMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBWaXNpdGluZ1BsYWNlcyA9IHJlcXVpcmUoJy4uL21vZGVscy92aXNpdGluZ1BsYWNlcycpO1xyXG5cclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyBcclxuLy8gICAgICAgICAgICAgIFZpc2l0aW5nIFBsYWNlIE9wZXJhdGlvbnMgXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG5jb25zdCBnZXRBbGxWaXNpdGluZ1BsYWNlcyA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgdmFyIHF1ZXJ5ID0ge307XHJcbiAgICBWaXNpdGluZ1BsYWNlcy5maW5kKHF1ZXJ5LCAnbmFtZSBkZXNjcmlwdGlvbiBkaXN0YW5jZSBsb2NhdGlvbiB0aW1lVG9SZWFjaCBpbWFnZSB0cmF2ZWxsaW5nTWV0aG9kcycpXHJcbiAgICAgICAgLnRoZW4oKHZpc2l0aW5nUGxhY2VzKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHZpc2l0aW5nUGxhY2VzOiB2aXNpdGluZ1BsYWNlcyB9KTtcclxuICAgICAgICB9LCAoZXJyKSA9PiBuZXh0KGVycikpXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IG5leHQoZXJyKSk7XHJcbn1cclxuXHJcbmNvbnN0IGdldEFsbFZpc2l0aW5nUGxhY2VzQnlOYW1lID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICB2YXIgcXVlcnkgPSB7fTtcclxuICAgIGlmIChyZXEuYm9keS5zaW1pbGFyVG8pIHtcclxuICAgICAgICBxdWVyeSA9IHsgbmFtZTogeyAkcmVnZXg6IGAke3JlcS5ib2R5LnNpbWlsYXJUb31gLCAkb3B0aW9uczogXCJpXCIgfSB9XHJcbiAgICB9XHJcbiAgICBWaXNpdGluZ1BsYWNlcy5maW5kKHF1ZXJ5LCAnbmFtZSBkZXNjcmlwdGlvbiBkaXN0YW5jZSBsb2NhdGlvbiB0aW1lVG9SZWFjaCBpbWFnZSB0cmF2ZWxsaW5nTWV0aG9kcycpXHJcbiAgICAgICAgLnRoZW4oKHZpc2l0aW5nUGxhY2VzKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHZpc2l0aW5nUGxhY2VzOiB2aXNpdGluZ1BsYWNlcyB9KTtcclxuICAgICAgICB9LCAoZXJyKSA9PiBuZXh0KGVycikpXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IG5leHQoZXJyKSk7XHJcbn1cclxuXHJcbmNvbnN0IGFkZFZpc2l0aW5nUGxhY2UgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHZhciBpbWFnZXNBcnJheSA9IFtdO1xyXG4gICAgLy8gZmlsZXMgPSByZXEuZmlsZXM7XHJcbiAgICAvLyBmaWxlcy5mb3JFYWNoKGZpbGUgPT4ge1xyXG4gICAgLy8gICAgIGltYWdlc0FycmF5LnB1c2goZmlsZS5maWxlbmFtZSk7XHJcbiAgICAvLyB9KTtcclxuICAgIHZhciBwbGFjZSA9XHJcbiAgICB7XHJcbiAgICAgICAgbmFtZTogcmVxLmJvZHkubmFtZSxcclxuICAgICAgICBkZXNjcmlwdGlvbjogcmVxLmJvZHkuZGVzY3JpcHRpb24sXHJcbiAgICAgICAgbG9jYXRpb246IHtcclxuICAgICAgICAgICAgY29vcmRpbmF0ZXM6IHJlcS5ib2R5LmxvY2F0aW9uLmNvb3JkaW5hdGVzXHJcbiAgICAgICAgfSxcclxuICAgICAgICBkaXN0YW5jZTogcmVxLmJvZHkuZGlzdGFuY2UsXHJcbiAgICAgICAgdGltZVRvUmVhY2g6IHJlcS5ib2R5LnRpbWVUb1JlYWNoLFxyXG4gICAgICAgIGltYWdlczogaW1hZ2VzQXJyYXksXHJcbiAgICAgICAgdHJhdmVsbGluZ01ldGhvZHM6IHJlcS5ib2R5Lm1ldGhvZHNcclxuICAgIH1cclxuICAgIFZpc2l0aW5nUGxhY2VzLmNyZWF0ZShwbGFjZSlcclxuICAgICAgICAudGhlbigodmlzaXRpbmdQbGFjZSkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCB2aXNpdGluZ1BsYWNlOiB2aXNpdGluZ1BsYWNlIH0pO1xyXG4gICAgICAgIH0sIChlcnIpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIGNvbnN0IG1zZyA9IGVyci5kcml2ZXIgPyBcIkR1cGxpY2F0ZSBLZXlcIiA6IGVyci5fbWVzc2FnZTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogbXNnIH0pO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IG5leHQoZXJyKSk7XHJcbn1cclxuXHJcbmNvbnN0IGRlbGV0ZUFsbFZpc2l0aW5nUGxhY2VzID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICBWaXNpdGluZ1BsYWNlcy5yZW1vdmUoe30pXHJcbiAgICAgICAgLnRoZW4oKHJlc3ApID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHJlc3ApO1xyXG4gICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuZXhwb3J0cy5nZXRBbGxWaXNpdGluZ1BsYWNlcyA9IGdldEFsbFZpc2l0aW5nUGxhY2VzO1xyXG5leHBvcnRzLmdldEFsbFZpc2l0aW5nUGxhY2VzQnlOYW1lID0gZ2V0QWxsVmlzaXRpbmdQbGFjZXNCeU5hbWU7XHJcbmV4cG9ydHMuYWRkVmlzaXRpbmdQbGFjZSA9IGFkZFZpc2l0aW5nUGxhY2U7XHJcbmV4cG9ydHMuZGVsZXRlQWxsVmlzaXRpbmdQbGFjZXMgPSBkZWxldGVBbGxWaXNpdGluZ1BsYWNlcztcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuLy8gXHJcbi8vICAgICAgICAgICAgICBWaXNpdGluZyBQbGFjZSBPcGVyYXRpb25zIFNwZWNpZmllZCBieSBJRFxyXG4vLyBcclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuY29uc3QgZ2V0VmlzaXRpbmdQbGFjZURldGFpbHNCeUlkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICBWaXNpdGluZ1BsYWNlcy5maW5kQnlJZChyZXEucGFyYW1zLnZpc2l0aW5nUGxhY2VJZClcclxuICAgICAgICAudGhlbigodmlzaXRpbmdQbGFjZSkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCB2aXNpdGluZ1BsYWNlOiB2aXNpdGluZ1BsYWNlIH0pO1xyXG4gICAgICAgIH0sIChlcnIpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDQ7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogZmFsc2UsIG1lc3NhZ2U6IFwiQ291bGQgbm90IGZpbmQgdGhlIHBsYWNlXCIgfSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuY29uc3QgdXBkYXRlVmlzaXRpbmdQbGFjZURldGFpbHNCeUlkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICBWaXNpdGluZ1BsYWNlcy5maW5kQnlJZEFuZFVwZGF0ZShyZXEucGFyYW1zLnZpc2l0aW5nUGxhY2VJZCwge1xyXG4gICAgICAgICRzZXQ6IHJlcS5ib2R5XHJcbiAgICB9LCB7IG5ldzogdHJ1ZSB9KVxyXG4gICAgICAgIC50aGVuKCh2aXNpdGluZ1BsYWNlKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHZpc2l0aW5nUGxhY2U6IHZpc2l0aW5nUGxhY2UgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpO1xyXG59XHJcblxyXG5jb25zdCBkZWxldGVBVmlzaXRpbmdQbGFjZUJ5SWQgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIFZpc2l0aW5nUGxhY2VzLmZpbmRCeUlkQW5kUmVtb3ZlKHJlcS5wYXJhbXMudmlzaXRpbmdQbGFjZUlkKVxyXG4gICAgICAgIC50aGVuKChyZXNwKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHJlc3BvbnNlOiByZXNwIH0pO1xyXG4gICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuZXhwb3J0cy5nZXRWaXNpdGluZ1BsYWNlRGV0YWlsc0J5SWQgPSBnZXRWaXNpdGluZ1BsYWNlRGV0YWlsc0J5SWQ7XHJcbmV4cG9ydHMudXBkYXRlVmlzaXRpbmdQbGFjZURldGFpbHNCeUlkID0gdXBkYXRlVmlzaXRpbmdQbGFjZURldGFpbHNCeUlkO1xyXG5leHBvcnRzLmRlbGV0ZUFWaXNpdGluZ1BsYWNlQnlJZCA9IGRlbGV0ZUFWaXNpdGluZ1BsYWNlQnlJZDsiXX0=\",\"originalCode\":\"const VisitingPlaces = require('../models/visitingPlaces');\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Visiting Place Operations \\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nconst getAllVisitingPlaces = (req, res, next) => {\\r\\n var query = {};\\r\\n VisitingPlaces.find(query, 'name description distance location timeToReach image travellingMethods')\\r\\n .then((visitingPlaces) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, visitingPlaces: visitingPlaces });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst getAllVisitingPlacesByName = (req, res, next) => {\\r\\n var query = {};\\r\\n if (req.body.similarTo) {\\r\\n query = { name: { $regex: `${req.body.similarTo}`, $options: \\\"i\\\" } }\\r\\n }\\r\\n VisitingPlaces.find(query, 'name description distance location timeToReach image travellingMethods')\\r\\n .then((visitingPlaces) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, visitingPlaces: visitingPlaces });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst addVisitingPlace = (req, res, next) => {\\r\\n var imagesArray = [];\\r\\n // files = req.files;\\r\\n // files.forEach(file => {\\r\\n // imagesArray.push(file.filename);\\r\\n // });\\r\\n var place =\\r\\n {\\r\\n name: req.body.name,\\r\\n description: req.body.description,\\r\\n location: {\\r\\n coordinates: req.body.location.coordinates\\r\\n },\\r\\n distance: req.body.distance,\\r\\n timeToReach: req.body.timeToReach,\\r\\n images: imagesArray,\\r\\n travellingMethods: req.body.methods\\r\\n }\\r\\n VisitingPlaces.create(place)\\r\\n .then((visitingPlace) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, visitingPlace: visitingPlace });\\r\\n }, (err) => {\\r\\n res.statusCode = 403;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n const msg = err.driver ? \\\"Duplicate Key\\\" : err._message;\\r\\n res.json({ success: false, message: msg });\\r\\n })\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst deleteAllVisitingPlaces = (req, res, next) => {\\r\\n VisitingPlaces.remove({})\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json(resp);\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nexports.getAllVisitingPlaces = getAllVisitingPlaces;\\r\\nexports.getAllVisitingPlacesByName = getAllVisitingPlacesByName;\\r\\nexports.addVisitingPlace = addVisitingPlace;\\r\\nexports.deleteAllVisitingPlaces = deleteAllVisitingPlaces;\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Visiting Place Operations Specified by ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nconst getVisitingPlaceDetailsById = (req, res, next) => {\\r\\n VisitingPlaces.findById(req.params.visitingPlaceId)\\r\\n .then((visitingPlace) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, visitingPlace: visitingPlace });\\r\\n }, (err) => {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: \\\"Could not find the place\\\" });\\r\\n })\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst updateVisitingPlaceDetailsById = (req, res, next) => {\\r\\n VisitingPlaces.findByIdAndUpdate(req.params.visitingPlaceId, {\\r\\n $set: req.body\\r\\n }, { new: true })\\r\\n .then((visitingPlace) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, visitingPlace: visitingPlace });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst deleteAVisitingPlaceById = (req, res, next) => {\\r\\n VisitingPlaces.findByIdAndRemove(req.params.visitingPlaceId)\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, response: resp });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nexports.getVisitingPlaceDetailsById = getVisitingPlaceDetailsById;\\r\\nexports.updateVisitingPlaceDetailsById = updateVisitingPlaceDetailsById;\\r\\nexports.deleteAVisitingPlaceById = deleteAVisitingPlaceById;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/ee/placeController_ee3a20e34d4d356553af723b6f7f6a6e.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2540\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\placeController.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":18578,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":18575,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"getAllVisitingPlaces\",\"ranges\":[{\"startOffset\":403,\"endOffset\":782,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getAllVisitingPlacesByName\",\"ranges\":[{\"startOffset\":820,\"endOffset\":1339,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"addVisitingPlace\",\"ranges\":[{\"startOffset\":1367,\"endOffset\":2276,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"deleteAllVisitingPlaces\",\"ranges\":[{\"startOffset\":2311,\"endOffset\":2526,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getVisitingPlaceDetailsById\",\"ranges\":[{\"startOffset\":3026,\"endOffset\":3499,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"updateVisitingPlaceDetailsById\",\"ranges\":[{\"startOffset\":3541,\"endOffset\":3906,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"deleteAVisitingPlaceById\",\"ranges\":[{\"startOffset\":3942,\"endOffset\":4237,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const express = require('express');\\n\\nconst bodyParser = require('body-parser');\\n\\nconst cors = require('./cors');\\n\\nconst {\\n checkSchema\\n} = require('express-validator');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nvar validationRules = require('../middleware/validation');\\n\\nconst scheduleController = require('../controllers/scheduleController');\\n\\nconst scheduleRouter = express.Router();\\nscheduleRouter.use(bodyParser.json()); // **********************************************************************************\\n// \\n// Schedule Routes\\n// \\n// **********************************************************************************\\n\\nscheduleRouter.route('/').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, scheduleController.getAllSchedules).post(cors.corsWithOptions, authenticate.verifyUser, scheduleController.addSchedule).put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('PUT operation not supported on /schedules');\\n}).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, scheduleController.deleteAllSchedules); // **********************************************************************************\\n// \\n// Schedule Routes On ID\\n// \\n// **********************************************************************************\\n\\nscheduleRouter.route('/:scheduleId').options(cors.corsWithOptions, authenticate.verifyUser, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, scheduleController.getScheduleDetailsById).post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('POST operation not supported on /schedules/' + req.params.scheduleId);\\n}).put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, scheduleController.updateScheduleById).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, scheduleController.deleteScheduleById);\\nscheduleRouter.route('/user/:userId').options(cors.corsWithOptions, authenticate.verifyUser, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, scheduleController.getAllSchedulesForAUser);\\nmodule.exports = scheduleRouter;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNjaGVkdWxlUm91dGVyLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwiYm9keVBhcnNlciIsImNvcnMiLCJjaGVja1NjaGVtYSIsImF1dGhlbnRpY2F0ZSIsInZhbGlkYXRpb25SdWxlcyIsInNjaGVkdWxlQ29udHJvbGxlciIsInNjaGVkdWxlUm91dGVyIiwiUm91dGVyIiwidXNlIiwianNvbiIsInJvdXRlIiwib3B0aW9ucyIsImNvcnNXaXRoT3B0aW9ucyIsInJlcSIsInJlcyIsInNlbmRTdGF0dXMiLCJnZXQiLCJ2ZXJpZnlVc2VyIiwiZ2V0QWxsU2NoZWR1bGVzIiwicG9zdCIsImFkZFNjaGVkdWxlIiwicHV0IiwidmVyaWZ5TW9kZXJhdGVyIiwibmV4dCIsInN0YXR1c0NvZGUiLCJlbmQiLCJkZWxldGUiLCJ2ZXJpZnlBZG1pbiIsImRlbGV0ZUFsbFNjaGVkdWxlcyIsImdldFNjaGVkdWxlRGV0YWlsc0J5SWQiLCJwYXJhbXMiLCJzY2hlZHVsZUlkIiwidXBkYXRlU2NoZWR1bGVCeUlkIiwiZGVsZXRlU2NoZWR1bGVCeUlkIiwiZ2V0QWxsU2NoZWR1bGVzRm9yQVVzZXIiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxPQUFPLEdBQUdDLE9BQU8sQ0FBQyxTQUFELENBQXZCOztBQUNBLE1BQU1DLFVBQVUsR0FBR0QsT0FBTyxDQUFDLGFBQUQsQ0FBMUI7O0FBRUEsTUFBTUUsSUFBSSxHQUFHRixPQUFPLENBQUMsUUFBRCxDQUFwQjs7QUFDQSxNQUFNO0FBQUVHLEVBQUFBO0FBQUYsSUFBa0JILE9BQU8sQ0FBQyxtQkFBRCxDQUEvQjs7QUFDQSxJQUFJSSxZQUFZLEdBQUdKLE9BQU8sQ0FBQyw0QkFBRCxDQUExQjs7QUFDQSxJQUFJSyxlQUFlLEdBQUdMLE9BQU8sQ0FBQywwQkFBRCxDQUE3Qjs7QUFDQSxNQUFNTSxrQkFBa0IsR0FBR04sT0FBTyxDQUFDLG1DQUFELENBQWxDOztBQUVBLE1BQU1PLGNB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T0FBUCxHQUFpQjlCLGNBQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZXhwcmVzcyA9IHJlcXVpcmUoJ2V4cHJlc3MnKTtcclxuY29uc3QgYm9keVBhcnNlciA9IHJlcXVpcmUoJ2JvZHktcGFyc2VyJyk7XHJcblxyXG5jb25zdCBjb3JzID0gcmVxdWlyZSgnLi9jb3JzJyk7XHJcbmNvbnN0IHsgY2hlY2tTY2hlbWEgfSA9IHJlcXVpcmUoJ2V4cHJlc3MtdmFsaWRhdG9yJyk7XHJcbnZhciBhdXRoZW50aWNhdGUgPSByZXF1aXJlKCcuLi9taWRkbGV3YXJlL2F1dGhlbnRpY2F0ZScpO1xyXG52YXIgdmFsaWRhdGlvblJ1bGVzID0gcmVxdWlyZSgnLi4vbWlkZGxld2FyZS92YWxpZGF0aW9uJyk7XHJcbmNvbnN0IHNjaGVkdWxlQ29udHJvbGxlciA9IHJlcXVpcmUoJy4uL2NvbnRyb2xsZXJzL3NjaGVkdWxlQ29udHJvbGxlcicpXHJcblxyXG5jb25zdCBzY2hlZHVsZVJvdXRlciA9IGV4cHJlc3MuUm91dGVyKCk7XHJcblxyXG5zY2hlZHVsZVJvdXRlci51c2UoYm9keVBhcnNlci5qc29uKCkpO1xyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbi8vIFxyXG4vLyAgICAgICAgICAgICAgU2NoZWR1bGUgUm91dGVzXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG5zY2hlZHVsZVJvdXRlci5yb3V0ZSgnLycpXHJcbiAgICAub3B0aW9ucyhjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcbiAgICAuZ2V0KGNvcnMuY29ycywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsICBzY2hlZHVsZUNvbnRyb2xsZXIuZ2V0QWxsU2NoZWR1bGVzKVxyXG4gICAgLnBvc3QoY29ycy5jb3JzV2l0aE9wdGlvbnMsYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsICBzY2hlZHVsZUNvbnRyb2xsZXIuYWRkU2NoZWR1bGUpXHJcbiAgICAucHV0KGNvcnMuY29yc1dpdGhPcHRpb25zLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeU1vZGVyYXRlciwgKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgcmVzLmVuZCgnUFVUIG9wZXJhdGlvbiBub3Qgc3VwcG9ydGVkIG9uIC9zY2hlZHVsZXMnKTtcclxuICAgIH0pXHJcbiAgICAuZGVsZXRlKGNvcnMuY29yc1dpdGhPcHRpb25zLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeUFkbWluLCBzY2hlZHVsZUNvbnRyb2xsZXIuZGVsZXRlQWxsU2NoZWR1bGVzKTtcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuLy8gXHJcbi8vICAgICAgICAgICAgICBTY2hlZHVsZSBSb3V0ZXMgT24gSURcclxuLy8gXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbnNjaGVkdWxlUm91dGVyLnJvdXRlKCcvOnNjaGVkdWxlSWQnKVxyXG4gICAgLm9wdGlvbnMoY29ycy5jb3JzV2l0aE9wdGlvbnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCAocmVxLCByZXMpID0+IHsgcmVzLnNlbmRTdGF0dXMoMjAwKTsgfSlcclxuICAgIC5nZXQoY29ycy5jb3JzLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgc2NoZWR1bGVDb250cm9sbGVyLmdldFNjaGVkdWxlRGV0YWlsc0J5SWQpXHJcbiAgICAucG9zdChjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgcmVzLmVuZCgnUE9TVCBvcGVyYXRpb24gbm90IHN1cHBvcnRlZCBvbiAvc2NoZWR1bGVzLycgKyByZXEucGFyYW1zLnNjaGVkdWxlSWQpO1xyXG4gICAgfSlcclxuICAgIC5wdXQoY29ycy5jb3JzV2l0aE9wdGlvbnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCBhdXRoZW50aWNhdGUudmVyaWZ5TW9kZXJhdGVyLCBzY2hlZHVsZUNvbnRyb2xsZXIudXBkYXRlU2NoZWR1bGVCeUlkKVxyXG4gICAgLmRlbGV0ZShjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgc2NoZWR1bGVDb250cm9sbGVyLmRlbGV0ZVNjaGVkdWxlQnlJZCk7XHJcblxyXG5zY2hlZHVsZVJvdXRlci5yb3V0ZSgnL3VzZXIvOnVzZXJJZCcpXHJcbiAgICAub3B0aW9ucyhjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIChyZXEsIHJlcykgPT4geyByZXMuc2VuZFN0YXR1cygyMDApOyB9KVxyXG4gICAgLmdldChjb3JzLmNvcnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCAgc2NoZWR1bGVDb250cm9sbGVyLmdldEFsbFNjaGVkdWxlc0ZvckFVc2VyKTtcclxuXHJcbm1vZHVsZS5leHBvcnRzID0gc2NoZWR1bGVSb3V0ZXI7Il19\",\"originalCode\":\"const express = require('express');\\r\\nconst bodyParser = require('body-parser');\\r\\n\\r\\nconst cors = require('./cors');\\r\\nconst { checkSchema } = require('express-validator');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\nvar validationRules = require('../middleware/validation');\\r\\nconst scheduleController = require('../controllers/scheduleController')\\r\\n\\r\\nconst scheduleRouter = express.Router();\\r\\n\\r\\nscheduleRouter.use(bodyParser.json());\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Schedule Routes\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nscheduleRouter.route('/')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, scheduleController.getAllSchedules)\\r\\n .post(cors.corsWithOptions,authenticate.verifyUser, scheduleController.addSchedule)\\r\\n .put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('PUT operation not supported on /schedules');\\r\\n })\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, scheduleController.deleteAllSchedules);\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Schedule Routes On ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nscheduleRouter.route('/:scheduleId')\\r\\n .options(cors.corsWithOptions, authenticate.verifyUser, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, scheduleController.getScheduleDetailsById)\\r\\n .post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('POST operation not supported on /schedules/' + req.params.scheduleId);\\r\\n })\\r\\n .put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, scheduleController.updateScheduleById)\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, scheduleController.deleteScheduleById);\\r\\n\\r\\nscheduleRouter.route('/user/:userId')\\r\\n .options(cors.corsWithOptions, authenticate.verifyUser, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, scheduleController.getAllSchedulesForAUser);\\r\\n\\r\\nmodule.exports = scheduleRouter;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/9b/scheduleRouter_9b57edc7078385d142c957dea9d9e0be.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2541\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\scheduleRouter.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":9621,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":9618,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":802,\"endOffset\":842,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1085,\"endOffset\":1188,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1621,\"endOffset\":1661,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1824,\"endOffset\":1953,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":2288,\"endOffset\":2328,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const Schedules = require('../models/schedules'); // **********************************************************************************\\n// \\n// Schedule Operations \\n// \\n// **********************************************************************************\\n\\n\\nconst getAllSchedules = (req, res, next) => {\\n Schedules.find(req.query).populate(\\\"place\\\").populate(\\\"user\\\").then(schedules => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n schedules: schedules\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst getAllSchedulesForAUser = (req, res, next) => {\\n var query = {\\n \\\"user\\\": String(req.params.userId)\\n };\\n Schedules.find(query).populate(\\\"place\\\").then(schedules => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n schedules: schedules\\n });\\n }, err => {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n const msg = err._message;\\n res.json({\\n success: false,\\n message: msg\\n });\\n }).catch(err => {\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: \\\"Failed to get data\\\"\\n });\\n });\\n};\\n\\nconst addSchedule = (req, res, next) => {\\n var schedule = {\\n user: req.body.user,\\n place: req.body.place,\\n date: req.body.date,\\n state: \\\"new\\\",\\n travellingMethod: req.body.travellingMethod\\n };\\n Schedules.create(schedule).then(schedule => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n schedule: schedule\\n });\\n }, err => {\\n res.statusCode = 403;\\n res.setHeader('Content-Type', 'application/json');\\n const msg = err._message;\\n res.json({\\n success: false,\\n message: msg\\n });\\n }).catch(err => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: \\\"Failed to add a schedule\\\"\\n });\\n });\\n};\\n\\nconst deleteAllSchedules = (req, res, next) => {\\n Schedules.remove({}).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json(resp);\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nexports.getAllSchedules = getAllSchedules;\\nexports.addSchedule = addSchedule;\\nexports.deleteAllSchedules = deleteAllSchedules;\\nexports.getAllSchedulesForAUser = getAllSchedulesForAUser; // **********************************************************************************\\n// \\n// Schedule Operations Specified by ID\\n// \\n// **********************************************************************************\\n\\nconst getScheduleDetailsById = (req, res, next) => {\\n Schedules.findById(req.params.scheduleId).then(schedule => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n schedule: schedule\\n });\\n }, err => {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: \\\"Could not find the place\\\"\\n });\\n }).catch(err => next(err));\\n};\\n\\nconst updateScheduleById = (req, res, next) => {\\n Schedules.findByIdAndUpdate(req.params.scheduleId, {\\n $set: req.body\\n }, {\\n new: true\\n }).then(schedule => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n schedule: schedule\\n });\\n }, err => next(err)).catch(err => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: \\\"Update failed\\\"\\n });\\n });\\n};\\n\\nconst deleteScheduleById = (req, res, next) => {\\n Schedules.findByIdAndRemove(req.params.scheduleId).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n response: resp\\n });\\n }, err => next(err)).catch(err => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: \\\"Delete failed\\\"\\n });\\n });\\n};\\n\\nexports.getScheduleDetailsById = getScheduleDetailsById;\\nexports.updateScheduleById = updateScheduleById;\\nexports.deleteScheduleById = deleteScheduleById; // **********************************************************************************\\n// \\n// Schedule Operations Specified by UserID\\n// \\n// **********************************************************************************\\n// const getScheduleDetailsByUserId = (req, res, next) => {\\n// Schedules.findById(req.params.scheduleId)\\n// .then((schedule) => {\\n// res.statusCode = 200;\\n// res.setHeader('Content-Type', 'application/json');\\n// res.json(schedule);\\n// }, (err) => next(err))\\n// .catch((err) => next(err));\\n// }\\n// const updateScheduleByUserId = (req, res, next) => {\\n// Schedules.findByIdAndUpdate(req.params.scheduleId, {\\n// $set: req.body\\n// }, { new: true })\\n// .then((schedule) => {\\n// res.statusCode = 200;\\n// res.setHeader('Content-Type', 'application/json');\\n// res.json(schedule);\\n// }, (err) => next(err))\\n// .catch((err) => next(err));\\n// }\\n// const deleteScheduleByUserId = (req, res, next) => {\\n// Schedules.findByIdAndRemove(req.params.scheduleId)\\n// .then((resp) => {\\n// res.statusCode = 200;\\n// res.setHeader('Content-Type', 'application/json');\\n// res.json(resp);\\n// }, (err) => next(err))\\n// .catch((err) => next(err));\\n// }\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNjaGVkdWxlQ29udHJvbGxlci5qcyJdLCJuYW1lcyI6WyJTY2hlZHVsZXMiLCJyZXF1aXJlIiwiZ2V0QWxsU2NoZWR1bGVzIiwicmVxIiwicmVzIiwibmV4dCIsImZpbmQiLCJxdWVyeSIsInBvcHVsYXRlIiwidGhlbiIsInNjaGVkdWxlcyIsInN0YXR1c0NvZGUiLCJzZXRIZWFkZXIiLCJqc29uIiwic3VjY2VzcyIsImVyciIsImNhdGNoIiwiZ2V0QWxsU2NoZWR1bGVzRm9yQVVzZXIiLCJTdHJpbmciLCJwYXJhbXMiLCJ1c2VySWQiLCJtc2ciLCJfbWVzc2FnZSIsIm1lc3NhZ2UiLCJhZGRTY2hlZHVsZSIsInNjaGVkdWxlIiwidXNlciIsImJvZHkiLCJwbGFjZSIsImRhdGUiLCJzdGF0ZSIsInRyYXZlbGxpbmdNZXRob2QiLCJjcmVhdGUiLCJkZWxldGVBbGxTY2hlZHVsZXMiLCJyZW1vdmUiLCJyZXNwIiwiZXhwb3J0cyIsImdldFNjaGVkdWxlRGV0YWlsc0J5SWQiLCJmaW5kQnlJZCIsInNjaGVkdWxlSWQiLCJ1cGRhdGVTY2hlZHVsZUJ5SWQiLCJmaW5kQnlJZEFuZFVwZGF0ZSIsIiRzZXQiLCJuZXciLCJkZWxldGVTY2hlZHVsZUJ5SWQiLCJmaW5kQnlJZEFuZFJlbW92ZSIsInJlc3BvbnNlIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxTQUFTLEdBQUdDLE9BQU8sQ0FBQyxxQkFBRCxDQUF6QixDLENBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUEsTUFBTUMsZUFBZSxHQUFHLENBQUNDLEdBQUQsRUFBTUMsR0FBTixFQUFXQyxJQUFYLEtBQW9CO0FBQ3hDTCxFQUFBQSxTQUFTLENBQUNNLElBQVYsQ0FBZUgsR0FBRyxDQUFDSSxLQUFuQixFQUEwQkMsUUFBMUIsQ0FBbUMsT0FBbkMsRUFBNENBLFFBQTVDLENBQXFELE1BQXJELEVBQ0tDLElBREwsQ0FDV0MsU0FBRCxJQUFlO0FBQ2pCTixJQUFBQSxHQUFHLENBQUNPLFVBQUosR0FBaUIs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LE1BQUFBLFFBQVEsRUFBQ1g7QUFBMUIsS0FBVDtBQUNILEdBTEwsRUFLUXBCLEdBQUQsSUFBU1YsSUFBSSxDQUFDVSxHQUFELENBTHBCLEVBTUtDLEtBTkwsQ0FNWUQsR0FBRCxJQUFTO0FBQ1pYLElBQUFBLEdBQUcsQ0FBQ08sVUFBSixHQUFpQixHQUFqQjtBQUNBUCxJQUFBQSxHQUFHLENBQUNRLFNBQUosQ0FBYyxjQUFkLEVBQThCLGtCQUE5QjtBQUNBUixJQUFBQSxHQUFHLENBQUNTLElBQUosQ0FBUztBQUFFQyxNQUFBQSxPQUFPLEVBQUUsS0FBWDtBQUFrQlMsTUFBQUEsT0FBTyxFQUFFO0FBQTNCLEtBQVQ7QUFDSCxHQVZMO0FBV0gsQ0FaRDs7QUFjQWEsT0FBTyxDQUFDQyxzQkFBUixHQUFpQ0Esc0JBQWpDO0FBQ0FELE9BQU8sQ0FBQ0ksa0JBQVIsR0FBNkJBLGtCQUE3QjtBQUNBSixPQUFPLENBQUNRLGtCQUFSLEdBQTZCQSxrQkFBN0IsQyxDQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgU2NoZWR1bGVzID0gcmVxdWlyZSgnLi4vbW9kZWxzL3NjaGVkdWxlcycpO1xyXG5cclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyBcclxuLy8gICAgICAgICAgICAgIFNjaGVkdWxlIE9wZXJhdGlvbnMgXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG5jb25zdCBnZXRBbGxTY2hlZHVsZXMgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIFNjaGVkdWxlcy5maW5kKHJlcS5xdWVyeSkucG9wdWxhdGUoXCJwbGFjZVwiKS5wb3B1bGF0ZShcInVzZXJcIilcclxuICAgICAgICAudGhlbigoc2NoZWR1bGVzKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHNjaGVkdWxlczpzY2hlZHVsZXMgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpO1xyXG59XHJcblxyXG5jb25zdCBnZXRBbGxTY2hlZHVsZXNGb3JBVXNlciA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgdmFyIHF1ZXJ5ID0geyBcInVzZXJcIjogU3RyaW5nKHJlcS5wYXJhbXMudXNlcklkKSB9O1xyXG4gICAgU2NoZWR1bGVzLmZpbmQocXVlcnkpLnBvcHVsYXRlKFwicGxhY2VcIilcclxuICAgICAgICAudGhlbigoc2NoZWR1bGVzKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHNjaGVkdWxlczpzY2hlZHVsZXMgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gIHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDQ7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIGNvbnN0IG1zZyA9IGVyci5fbWVzc2FnZTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogbXNnIH0pO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA1MDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogZmFsc2UsIG1lc3NhZ2U6IFwiRmFpbGVkIHRvIGdldCBkYXRhXCIgfSk7XHJcbiAgICAgICAgfSk7XHJcbn1cclxuXHJcbmNvbnN0IGFkZFNjaGVkdWxlID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICB2YXIgc2NoZWR1bGUgPSB7XHJcbiAgICAgICAgdXNlcjogcmVxLmJvZHkudXNlcixcclxuICAgICAgICBwbGFjZTogcmVxLmJvZHkucGxhY2UsXHJcbiAgICAgICAgZGF0ZTogcmVxLmJvZHkuZGF0ZSxcclxuICAgICAgICBzdGF0ZTogXCJuZXdcIixcclxuICAgICAgICB0cmF2ZWxsaW5nTWV0aG9kOiByZXEuYm9keS50cmF2ZWxsaW5nTWV0aG9kXHJcbiAgICB9XHJcbiAgICBTY2hlZHVsZXMuY3JlYXRlKHNjaGVkdWxlKVxyXG4gICAgICAgIC50aGVuKChzY2hlZHVsZSkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCBzY2hlZHVsZTpzY2hlZHVsZSB9KTtcclxuICAgICAgICB9LCAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNDAzO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICBjb25zdCBtc2cgPSBlcnIuX21lc3NhZ2U7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogZmFsc2UsIG1lc3NhZ2U6IG1zZyB9KTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IGZhbHNlLCBtZXNzYWdlOiBcIkZhaWxlZCB0byBhZGQgYSBzY2hlZHVsZVwiIH0pO1xyXG4gICAgICAgIH0pO1xyXG59XHJcblxyXG5jb25zdCBkZWxldGVBbGxTY2hlZHVsZXMgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIFNjaGVkdWxlcy5yZW1vdmUoe30pXHJcbiAgICAgICAgLnRoZW4oKHJlc3ApID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHJlc3ApO1xyXG4gICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuZXhwb3J0cy5nZXRBbGxTY2hlZHVsZXMgPSBnZXRBbGxTY2hlZHVsZXM7XHJcbmV4cG9ydHMuYWRkU2NoZWR1bGUgPSBhZGRTY2hlZHVsZTtcclxuZXhwb3J0cy5kZWxldGVBbGxTY2hlZHVsZXMgPSBkZWxldGVBbGxTY2hlZHVsZXM7XHJcbmV4cG9ydHMuZ2V0QWxsU2NoZWR1bGVzRm9yQVVzZXIgPSBnZXRBbGxTY2hlZHVsZXNGb3JBVXNlcjtcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuLy8gXHJcbi8vICAgICAgICAgICAgICBTY2hlZHVsZSBPcGVyYXRpb25zIFNwZWNpZmllZCBieSBJRFxyXG4vLyBcclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuY29uc3QgZ2V0U2NoZWR1bGVEZXRhaWxzQnlJZCA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgU2NoZWR1bGVzLmZpbmRCeUlkKHJlcS5wYXJhbXMuc2NoZWR1bGVJZClcclxuICAgICAgICAudGhlbigoc2NoZWR1bGUpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgc2NoZWR1bGU6c2NoZWR1bGUgfSk7XHJcbiAgICAgICAgfSwgIChlcnIpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDQ7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogZmFsc2UsIG1lc3NhZ2U6IFwiQ291bGQgbm90IGZpbmQgdGhlIHBsYWNlXCIgfSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuY29uc3QgdXBkYXRlU2NoZWR1bGVCeUlkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICBTY2hlZHVsZXMuZmluZEJ5SWRBbmRVcGRhdGUocmVxLnBhcmFtcy5zY2hlZHVsZUlkLCB7XHJcbiAgICAgICAgJHNldDogcmVxLmJvZHlcclxuICAgIH0sIHsgbmV3OiB0cnVlIH0pXHJcbiAgICAgICAgLnRoZW4oKHNjaGVkdWxlKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHNjaGVkdWxlOnNjaGVkdWxlIH0pO1xyXG4gICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogXCJVcGRhdGUgZmFpbGVkXCIgfSk7XHJcbiAgICAgICAgfSk7XHJcbn1cclxuXHJcbmNvbnN0IGRlbGV0ZVNjaGVkdWxlQnlJZCA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgU2NoZWR1bGVzLmZpbmRCeUlkQW5kUmVtb3ZlKHJlcS5wYXJhbXMuc2NoZWR1bGVJZClcclxuICAgICAgICAudGhlbigocmVzcCkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCByZXNwb25zZTpyZXNwIH0pO1xyXG4gICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogXCJEZWxldGUgZmFpbGVkXCIgfSk7XHJcbiAgICAgICAgfSk7XHJcbn1cclxuXHJcbmV4cG9ydHMuZ2V0U2NoZWR1bGVEZXRhaWxzQnlJZCA9IGdldFNjaGVkdWxlRGV0YWlsc0J5SWQ7XHJcbmV4cG9ydHMudXBkYXRlU2NoZWR1bGVCeUlkID0gdXBkYXRlU2NoZWR1bGVCeUlkO1xyXG5leHBvcnRzLmRlbGV0ZVNjaGVkdWxlQnlJZCA9IGRlbGV0ZVNjaGVkdWxlQnlJZDtcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuLy8gXHJcbi8vICAgICAgICAgICAgICBTY2hlZHVsZSBPcGVyYXRpb25zIFNwZWNpZmllZCBieSBVc2VySURcclxuLy8gXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbi8vIGNvbnN0IGdldFNjaGVkdWxlRGV0YWlsc0J5VXNlcklkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbi8vICAgICBTY2hlZHVsZXMuZmluZEJ5SWQocmVxLnBhcmFtcy5zY2hlZHVsZUlkKVxyXG4vLyAgICAgICAgIC50aGVuKChzY2hlZHVsZSkgPT4ge1xyXG4vLyAgICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuLy8gICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuLy8gICAgICAgICAgICAgcmVzLmpzb24oc2NoZWR1bGUpO1xyXG4vLyAgICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuLy8gICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxuLy8gfVxyXG5cclxuLy8gY29uc3QgdXBkYXRlU2NoZWR1bGVCeVVzZXJJZCA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4vLyAgICAgU2NoZWR1bGVzLmZpbmRCeUlkQW5kVXBkYXRlKHJlcS5wYXJhbXMuc2NoZWR1bGVJZCwge1xyXG4vLyAgICAgICAgICRzZXQ6IHJlcS5ib2R5XHJcbi8vICAgICB9LCB7IG5ldzogdHJ1ZSB9KVxyXG4vLyAgICAgICAgIC50aGVuKChzY2hlZHVsZSkgPT4ge1xyXG4vLyAgICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuLy8gICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuLy8gICAgICAgICAgICAgcmVzLmpzb24oc2NoZWR1bGUpO1xyXG4vLyAgICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuLy8gICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxuLy8gfVxyXG5cclxuLy8gY29uc3QgZGVsZXRlU2NoZWR1bGVCeVVzZXJJZCA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4vLyAgICAgU2NoZWR1bGVzLmZpbmRCeUlkQW5kUmVtb3ZlKHJlcS5wYXJhbXMuc2NoZWR1bGVJZClcclxuLy8gICAgICAgICAudGhlbigocmVzcCkgPT4ge1xyXG4vLyAgICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuLy8gICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuLy8gICAgICAgICAgICAgcmVzLmpzb24ocmVzcCk7XHJcbi8vICAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4vLyAgICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpO1xyXG4vLyB9Il19\",\"originalCode\":\"const Schedules = require('../models/schedules');\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Schedule Operations \\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nconst getAllSchedules = (req, res, next) => {\\r\\n Schedules.find(req.query).populate(\\\"place\\\").populate(\\\"user\\\")\\r\\n .then((schedules) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, schedules:schedules });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst getAllSchedulesForAUser = (req, res, next) => {\\r\\n var query = { \\\"user\\\": String(req.params.userId) };\\r\\n Schedules.find(query).populate(\\\"place\\\")\\r\\n .then((schedules) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, schedules:schedules });\\r\\n }, (err) => {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n const msg = err._message;\\r\\n res.json({ success: false, message: msg });\\r\\n })\\r\\n .catch((err) => {\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: \\\"Failed to get data\\\" });\\r\\n });\\r\\n}\\r\\n\\r\\nconst addSchedule = (req, res, next) => {\\r\\n var schedule = {\\r\\n user: req.body.user,\\r\\n place: req.body.place,\\r\\n date: req.body.date,\\r\\n state: \\\"new\\\",\\r\\n travellingMethod: req.body.travellingMethod\\r\\n }\\r\\n Schedules.create(schedule)\\r\\n .then((schedule) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, schedule:schedule });\\r\\n }, (err) => {\\r\\n res.statusCode = 403;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n const msg = err._message;\\r\\n res.json({ success: false, message: msg });\\r\\n })\\r\\n .catch((err) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: \\\"Failed to add a schedule\\\" });\\r\\n });\\r\\n}\\r\\n\\r\\nconst deleteAllSchedules = (req, res, next) => {\\r\\n Schedules.remove({})\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json(resp);\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nexports.getAllSchedules = getAllSchedules;\\r\\nexports.addSchedule = addSchedule;\\r\\nexports.deleteAllSchedules = deleteAllSchedules;\\r\\nexports.getAllSchedulesForAUser = getAllSchedulesForAUser;\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Schedule Operations Specified by ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nconst getScheduleDetailsById = (req, res, next) => {\\r\\n Schedules.findById(req.params.scheduleId)\\r\\n .then((schedule) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, schedule:schedule });\\r\\n }, (err) => {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: \\\"Could not find the place\\\" });\\r\\n })\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst updateScheduleById = (req, res, next) => {\\r\\n Schedules.findByIdAndUpdate(req.params.scheduleId, {\\r\\n $set: req.body\\r\\n }, { new: true })\\r\\n .then((schedule) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, schedule:schedule });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: \\\"Update failed\\\" });\\r\\n });\\r\\n}\\r\\n\\r\\nconst deleteScheduleById = (req, res, next) => {\\r\\n Schedules.findByIdAndRemove(req.params.scheduleId)\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, response:resp });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: \\\"Delete failed\\\" });\\r\\n });\\r\\n}\\r\\n\\r\\nexports.getScheduleDetailsById = getScheduleDetailsById;\\r\\nexports.updateScheduleById = updateScheduleById;\\r\\nexports.deleteScheduleById = deleteScheduleById;\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Schedule Operations Specified by UserID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\n// const getScheduleDetailsByUserId = (req, res, next) => {\\r\\n// Schedules.findById(req.params.scheduleId)\\r\\n// .then((schedule) => {\\r\\n// res.statusCode = 200;\\r\\n// res.setHeader('Content-Type', 'application/json');\\r\\n// res.json(schedule);\\r\\n// }, (err) => next(err))\\r\\n// .catch((err) => next(err));\\r\\n// }\\r\\n\\r\\n// const updateScheduleByUserId = (req, res, next) => {\\r\\n// Schedules.findByIdAndUpdate(req.params.scheduleId, {\\r\\n// $set: req.body\\r\\n// }, { new: true })\\r\\n// .then((schedule) => {\\r\\n// res.statusCode = 200;\\r\\n// res.setHeader('Content-Type', 'application/json');\\r\\n// res.json(schedule);\\r\\n// }, (err) => next(err))\\r\\n// .catch((err) => next(err));\\r\\n// }\\r\\n\\r\\n// const deleteScheduleByUserId = (req, res, next) => {\\r\\n// Schedules.findByIdAndRemove(req.params.scheduleId)\\r\\n// .then((resp) => {\\r\\n// res.statusCode = 200;\\r\\n// res.setHeader('Content-Type', 'application/json');\\r\\n// res.json(resp);\\r\\n// }, (err) => next(err))\\r\\n// .catch((err) => next(err));\\r\\n// }\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/df/scheduleController_df2aee56329a17301dcb5de3e55455e9.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2542\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\scheduleController.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":22878,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":22875,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"getAllSchedules\",\"ranges\":[{\"startOffset\":382,\"endOffset\":688,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getAllSchedulesForAUser\",\"ranges\":[{\"startOffset\":723,\"endOffset\":1396,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"addSchedule\",\"ranges\":[{\"startOffset\":1419,\"endOffset\":2190,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"deleteAllSchedules\",\"ranges\":[{\"startOffset\":2220,\"endOffset\":2430,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getScheduleDetailsById\",\"ranges\":[{\"startOffset\":2883,\"endOffset\":3331,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"updateScheduleById\",\"ranges\":[{\"startOffset\":3361,\"endOffset\":3854,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"deleteScheduleById\",\"ranges\":[{\"startOffset\":3884,\"endOffset\":4322,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const mongoose = require('mongoose');\\n\\nconst Schema = mongoose.Schema;\\n\\nrequire('mongoose-currency').loadType(mongoose);\\n\\nconst Currency = mongoose.Types.Currency;\\nconst scheduleSchema = new Schema({\\n user: {\\n type: mongoose.Schema.Types.ObjectId,\\n ref: \\\"User\\\"\\n },\\n place: {\\n type: mongoose.Schema.Types.ObjectId,\\n ref: \\\"Place\\\"\\n },\\n date: {\\n type: Date,\\n required: true\\n },\\n fair: {\\n type: Currency,\\n min: 0\\n },\\n state: {\\n type: String,\\n default: \\\"new\\\",\\n enum: [\\\"new\\\", \\\"not-completed\\\", \\\"canceled\\\", \\\"completed\\\"]\\n },\\n travellingMethod: {\\n type: String,\\n required: true,\\n enum: ['Bus', 'Car', 'Train', 'Threewheeler', 'Foot']\\n }\\n}, {\\n timestamps: true\\n});\\nvar Schedules = mongoose.model('Schedule', scheduleSchema);\\nmodule.exports = Schedules;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNjaGVkdWxlcy5qcyJdLCJuYW1lcyI6WyJtb25nb29zZSIsInJlcXVpcmUiLCJTY2hlbWEiLCJsb2FkVHlwZSIsIkN1cnJlbmN5IiwiVHlwZXMiLCJzY2hlZHVsZVNjaGVtYSIsInVzZXIiLCJ0eXBlIiwiT2JqZWN0SWQiLCJyZWYiLCJwbGFjZSIsImRhdGUiLCJEYXRlIiwicmVxdWlyZWQiLCJmYWlyIiwibWluIiwic3RhdGUiLCJTdHJpbmciLCJkZWZhdWx0IiwiZW51bSIsInRyYXZlbGxpbmdNZXRob2QiLCJ0aW1lc3RhbXBzIiwiU2NoZWR1bGVzIiwibW9kZWwiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxRQUFRLEdBQUdDLE9BQU8sQ0FBQyxVQUFELENBQXhCOztBQUNBLE1BQU1DLE1BQU0sR0FBR0YsUUFBUSxDQUFDRSxNQUF4Qjs7QUFDQUQsT0FBTyxDQUFDLG1CQUFELENBQVAsQ0FBNkJFLFFBQTdCLENBQXNDSCxRQUF0Qzs7QUFDQSxNQUFNSSxRQUFRLEdBQUdKLFFBQVEsQ0FBQ0ssS0FBVCxDQUFlRCxRQUFoQztBQUNBLE1BQU1FLGNBQWMsR0FBRyxJQUFJSixNQUFKLENBQVc7QUFDOUJLLEVBQUFBLElBQUksRUFBRTtBQUNGQyxJQUFBQSxJQUFJLEVBQUVSLFFBQVEsQ0FBQ0UsTUFBVCxDQUFnQkcsS0FBaEIsQ0FBc0JJLFFBRDFCO0FBRUZDLElBQUFBLEdBQUcsRUFBRTtBQUZILEdBRHdCO0FBSzlCQyxFQUFBQSxLQUFLLEVBQUU7QUFDSEgsSUFBQUEsSUFBSSxFQUFFUixRQUFRLENBQUNFLE1BQVQsQ0FBZ0JHLEtBQWhCLENBQXNCSSxRQUR6QjtBQUVIQyxJQUFBQSxHQUFHLEVBQUU7QUFGRixHQUx1QjtBQVM5QkUsRUFBQUEsSUFBSSxFQUFFO0FBQ0ZKLElBQUFBLElBQUksRUFBRUssSUFESjtBQUVGQyxJQUFBQSxRQUFRLEVBQUU7QUFGUixHQVR3QjtBQWE5QkMsRUFBQUEsSUFBSSxFQUFFO0FBQ0ZQLElBQUFBLElBQUksRUFBRUosUUFESjtBQUVGWSxJQUFBQSxHQUFHLEVBQUU7QUFGSCxHQWJ3QjtBQWlCOUJDLEVBQUFBLEtBQUssRUFBRTtBQUNIVCxJQUFBQSxJQUFJLEVBQUVVLE1BREg7QUFFSEMsSUFBQUEsT0FBTyxFQUFFLEtBRk47QUFHSEMsSUFBQUEsSUFBSSxFQUFFLENBQUMsS0FBRCxFQUFPLGVBQVAsRUFBd0IsVUFBeEIsRUFBb0MsV0FBcEM7QUFISCxHQWpCdUI7QUFzQjlCQyxFQUFBQSxnQkFBZ0IsRUFBRTtBQUNkYixJQUFBQSxJQUFJLEVBQUVVLE1BRFE7QUFFZEosSUFBQUEsUUFBUSxFQUFFLElBRkk7QUFHZE0sSUFBQUEsSUFBSSxFQUFFLENBQUMsS0FBRCxFQUFRLEtBQVIsRUFBZSxPQUFmLEVBQXdCLGNBQXhCLEVBQXdDLE1BQXhDO0FBSFE7QUF0QlksQ0FBWCxFQTJCcEI7QUFDQ0UsRUFBQUEsVUFBVSxFQUFFO0FBRGIsQ0EzQm9CLENBQXZCO0FBK0JBLElBQUlDLFNBQVMsR0FBR3ZCLFFBQVEsQ0FBQ3dCLEtBQVQsQ0FBZSxVQUFmLEVBQTJCbEIsY0FBM0IsQ0FBaEI7QUFFQW1CLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQkgsU0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBtb25nb29zZSA9IHJlcXVpcmUoJ21vbmdvb3NlJyk7XHJcbmNvbnN0IFNjaGVtYSA9IG1vbmdvb3NlLlNjaGVtYTtcclxucmVxdWlyZSgnbW9uZ29vc2UtY3VycmVuY3knKS5sb2FkVHlwZShtb25nb29zZSk7XHJcbmNvbnN0IEN1cnJlbmN5ID0gbW9uZ29vc2UuVHlwZXMuQ3VycmVuY3k7XHJcbmNvbnN0IHNjaGVkdWxlU2NoZW1hID0gbmV3IFNjaGVtYSh7XHJcbiAgICB1c2VyOiB7XHJcbiAgICAgICAgdHlwZTogbW9uZ29vc2UuU2NoZW1hLlR5cGVzLk9iamVjdElkLFxyXG4gICAgICAgIHJlZjogXCJVc2VyXCJcclxuICAgIH0sXHJcbiAgICBwbGFjZToge1xyXG4gICAgICAgIHR5cGU6IG1vbmdvb3NlLlNjaGVtYS5UeXBlcy5PYmplY3RJZCxcclxuICAgICAgICByZWY6IFwiUGxhY2VcIlxyXG4gICAgfSxcclxuICAgIGRhdGU6IHtcclxuICAgICAgICB0eXBlOiBEYXRlLFxyXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlXHJcbiAgICB9LFxyXG4gICAgZmFpcjoge1xyXG4gICAgICAgIHR5cGU6IEN1cnJlbmN5LFxyXG4gICAgICAgIG1pbjogMFxyXG4gICAgfSxcclxuICAgIHN0YXRlOiB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICAgIGRlZmF1bHQ6IFwibmV3XCIsXHJcbiAgICAgICAgZW51bTogW1wibmV3XCIsXCJub3QtY29tcGxldGVkXCIsIFwiY2FuY2VsZWRcIiwgXCJjb21wbGV0ZWRcIl1cclxuICAgIH0sXHJcbiAgICB0cmF2ZWxsaW5nTWV0aG9kOiB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxyXG4gICAgICAgIGVudW06IFsnQnVzJywgJ0NhcicsICdUcmFpbicsICdUaHJlZXdoZWVsZXInLCAnRm9vdCddXHJcbiAgICB9XHJcbn0sIHtcclxuICAgIHRpbWVzdGFtcHM6IHRydWVcclxufSk7XHJcblxyXG52YXIgU2NoZWR1bGVzID0gbW9uZ29vc2UubW9kZWwoJ1NjaGVkdWxlJywgc2NoZWR1bGVTY2hlbWEpO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBTY2hlZHVsZXM7Il19\",\"originalCode\":\"const mongoose = require('mongoose');\\r\\nconst Schema = mongoose.Schema;\\r\\nrequire('mongoose-currency').loadType(mongoose);\\r\\nconst Currency = mongoose.Types.Currency;\\r\\nconst scheduleSchema = new Schema({\\r\\n user: {\\r\\n type: mongoose.Schema.Types.ObjectId,\\r\\n ref: \\\"User\\\"\\r\\n },\\r\\n place: {\\r\\n type: mongoose.Schema.Types.ObjectId,\\r\\n ref: \\\"Place\\\"\\r\\n },\\r\\n date: {\\r\\n type: Date,\\r\\n required: true\\r\\n },\\r\\n fair: {\\r\\n type: Currency,\\r\\n min: 0\\r\\n },\\r\\n state: {\\r\\n type: String,\\r\\n default: \\\"new\\\",\\r\\n enum: [\\\"new\\\",\\\"not-completed\\\", \\\"canceled\\\", \\\"completed\\\"]\\r\\n },\\r\\n travellingMethod: {\\r\\n type: String,\\r\\n required: true,\\r\\n enum: ['Bus', 'Car', 'Train', 'Threewheeler', 'Foot']\\r\\n }\\r\\n}, {\\r\\n timestamps: true\\r\\n});\\r\\n\\r\\nvar Schedules = mongoose.model('Schedule', scheduleSchema);\\r\\n\\r\\nmodule.exports = Schedules;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/e2/schedules_e2f8e79bc28961f4db3736c92d490e47.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2543\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\models\\\\schedules.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":4238,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":4235,\"count\":1}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const express = require('express');\\n\\nconst bodyParser = require('body-parser');\\n\\nconst cors = require('./cors');\\n\\nconst {\\n checkSchema\\n} = require('express-validator');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nvar validationRules = require('../middleware/validation');\\n\\nconst touristController = require('../controllers/touristController');\\n\\nconst touristRouter = express.Router();\\ntouristRouter.use(bodyParser.json()); // **********************************************************************************\\n// \\n// Tourist Routes\\n// \\n// **********************************************************************************\\n\\ntouristRouter.route('/').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, touristController.getAllTourists).post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, touristController.addTourist).put(cors.corsWithOptions, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('PUT operation not supported on /tourists');\\n}).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, touristController.deleteAllTourists);\\ntouristRouter.route('/search').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).post(cors.corsWithOptions, authenticate.verifyUser, touristController.getAllTouristsByName); // **********************************************************************************\\n// \\n// Tourist Routes Specified by ID\\n// \\n// **********************************************************************************\\n\\ntouristRouter.route('/:touristId').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, touristController.getTouristDetailsById).post(cors.corsWithOptions, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('POST operation not supported on /tourists/' + req.params.touristId);\\n}).put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, touristController.updateTouristDetailsById).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, touristController.deleteATouristById);\\nmodule.exports = touristRouter;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRvdXJpc3RSb3V0ZXIuanMiXSwibmFtZXMiOlsiZXhwcmVzcyIsInJlcXVpcmUiLCJib2R5UGFyc2VyIiwiY29ycyIsImNoZWNrU2NoZW1hIiwiYXV0aGVudGljYXRlIiwidmFsaWRhdGlvblJ1bGVzIiwidG91cmlzdENvbnRyb2xsZXIiLCJ0b3VyaXN0Um91dGVyIiwiUm91dGVyIiwidXNlIiwianNvbiIsInJvdXRlIiwib3B0aW9ucyIsImNvcnNXaXRoT3B0aW9ucyIsInJlcSIsInJlcyIsInNlbmRTdGF0dXMiLCJnZXQiLCJ2ZXJpZnlVc2VyIiwiZ2V0QWxsVG91cmlzdHMiLCJwb3N0IiwidmVyaWZ5TW9kZXJhdGVyIiwiYWRkVG91cmlzdCIsInB1dCIsIm5leHQiLCJzdGF0dXNDb2RlIiwiZW5kIiwiZGVsZXRlIiwidmVyaWZ5QWRtaW4iLCJkZWxldGVBbGxUb3VyaXN0cyIsImdldEFsbFRvdXJpc3RzQnlOYW1lIiwiZ2V0VG91cmlzdERldGFpbHNCeUlkIiwicGFyYW1zIiwidG91cmlzdElkIiwidXBkYXRlVG91cmlzdERldGFpbHNCeUlkIiwiZGVsZXRlQVRvdXJpc3RCeUlkIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsT0FBTyxHQUFHQyxPQUFPLENBQUMsU0FBRCxDQUF2Qjs7QUFDQSxNQUFNQyxVQUFVLEdBQUdELE9BQU8sQ0FBQyxhQUFELENBQTFCOztBQUVBLE1BQU1FLElBQUksR0FBR0YsT0FBTyxDQUFDLFFBQUQsQ0FBcEI7O0FBQ0EsTUFBTTtBQUFFRyxFQUFBQTtBQUFGLElBQWtCSCxPQUFPLENBQUMsbUJBQUQsQ0FBL0I7O0FBQ0EsSUFBSUksWUFBWSxHQUFHSixPQUFPLENBQUMsNEJBQUQsQ0FBMUI7O0FBQ0EsSUFBSUssZUFBZSxHQUFHTCxPQUFPLENBQUMsMEJBQUQsQ0FBN0I7O0FBQ0EsTUFBTU0saUJBQWlCLEdBQUdOLE9BQU8sQ0FBQyxrQ0FBRCxDQUFqQzs7QUFFQSxNQUFNTyxhQUFhLEdBQUdSLE9BQU8sQ0FBQ1MsTUFBUixFQUF0QjtBQUVBRCxhQUFhLENBQUNFLEdBQWQsQ0FBa0JSLFVBQVUsQ0FBQ1MsSUFBWCxFQUFsQixFLENBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQUgsYUFBYSxDQUFDSSxLQUFkLENBQW9CLEdBQXBCLEVBQ0tDLE9BREwsQ0FDYVYsSUFBSSxDQUFDVyxlQURsQixFQUNtQyxDQUFDQyxHQUFELEVBQU1DLEdBQU4sS0FBYztBQUFFQSxFQUFBQSxHQUFHLENBQUNDLFVBQUosQ0FBZSxHQUFmO0FBQXNCLENBRHpFLEVBRUtDLEdBRkwsQ0FFU2YsSUFBSSxDQUFDQSxJQUZkLEVBRXFCRSxZQUFZLENBQUNjLFVBRmxDLEVBRWdEWixpQkFBaUIsQ0FBQ2EsY0FGbEUsRUFHS0MsSUFITCxDQUdVbEIsSUFBSSxDQUFDVyxlQUhmLEVBR2lDVCxZQUFZLENBQUNjLFVBSDlDLEVBRzBEZCxZQUFZLENBQUNpQixlQUh2RSxFQUd3RmYsaUJBQWlCLENBQUNnQixVQUgxRyxFQUlLQyxHQUpMLENBSVNyQixJQUFJLENBQUNXLGVBSmQsRUFJK0IsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEVBQVdTLElBQVgsS0FBb0I7QUFDM0NULEVBQUFBLEdBQUcsQ0FBQ1UsVUFBSixHQUFpQixHQUFqQjtBQUNBVixFQUFBQSxHQUFHLENBQUNXLEdBQUosQ0FBUSwwQ0FBUjtBQUNILENBUEwsRUFRS0MsTUFSTCxDQVFZekIsSUFBSSxDQUFDVyxlQVJqQixFQVFrQ1QsWUFBWSxDQUFDYyxVQVIvQyxFQVEyRGQsWUFBWSxDQUFDd0IsV0FSeEUsRUFRc0Z0QixpQkFBaUIsQ0FBQ3VCLGlCQVJ4RztBQVNBdEIsYUFBYSxDQUFDSSxLQUFkLENBQW9CLFNBQXBCLEVBQ0tDLE9BREwsQ0FDYVYsSUFBSSxDQUFDVyxlQURsQixFQUNtQyxDQUFDQyxHQUFELEVBQU1DLEdBQU4sS0FBYztBQUFFQSxFQUFBQSxHQUFHLENBQUNDLFVBQUosQ0FBZSxHQUFmO0FBQXNCLENBRHpFLEVBRUtJLElBRkwsQ0FFVWxCLElBQUksQ0FBQ1csZUFGZixFQUVnQ1QsWUFBWSxDQUFDYyxVQUY3QyxFQUUwRFosaUJBQWlCLENBQUN3QixvQkFGNUUsRSxDQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUF2QixhQUFhLENBQUNJLEtBQWQsQ0FBb0IsYUFBcEIsRUFDS0MsT0FETCxDQUNhVixJQUFJLENBQUNXLGVBRGxCLEVBQ21DLENBQUNDLEdBQUQsRUFBTUMsR0FBTixLQUFjO0FBQUVBLEVBQUFBLEdBQUcsQ0FBQ0MsVUFBSixDQUFlLEdBQWY7QUFBc0IsQ0FEekUsRUFFS0MsR0FGTCxDQUVTZixJQUFJLENBQUNBLElBRmQsRUFFb0JFLFlBQVksQ0FBQ2MsVUFGakMsRUFFK0NaLGlCQUFpQixDQUFDeUIscUJBRmpFLEVBR0tYLElBSEwsQ0FHVWxCLElBQUksQ0FBQ1csZUFIZixFQUdnQyxDQUFDQyxHQUFELEVBQU1DLEdBQU4sRUFBV1MsSUFBWCxLQUFvQjtBQUM1Q1QsRUFBQUEsR0FBRyxDQUFDVSxVQUFKLEdBQWlCLEdBQWpCO0FBQ0FWLEVBQUFBLEdBQUcsQ0FBQ1csR0FBSixDQUFRLCtDQUErQ1osR0FBRyxDQUFDa0IsTUFBSixDQUFXQyxTQUFsRTtBQUNILENBTkwsRUFPS1YsR0FQTCxDQU9TckIsSUFBSSxDQUFDVyxlQVBkLEVBTytCVCxZQUFZLENBQUNjLFVBUDVDLEVBT3dEZCxZQUFZLENBQUNpQixlQVByRSxFQU91RmYsaUJBQWlCLENBQUM0Qix3QkFQekcsRUFRS1AsTUFSTCxDQVFZekIsSUFBSSxDQUFDVyxlQVJqQixFQVFtQ1QsWUFBWSxDQUFDYyxVQVJoRCxFQVE0RGQsWUFBWSxDQUFDaUIsZUFSekUsRUFRMEZmLGlCQUFpQixDQUFDNkIsa0JBUjVHO0FBVUFDLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQjlCLGFBQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZXhwcmVzcyA9IHJlcXVpcmUoJ2V4cHJlc3MnKTtcclxuY29uc3QgYm9keVBhcnNlciA9IHJlcXVpcmUoJ2JvZHktcGFyc2VyJyk7XHJcblxyXG5jb25zdCBjb3JzID0gcmVxdWlyZSgnLi9jb3JzJyk7XHJcbmNvbnN0IHsgY2hlY2tTY2hlbWEgfSA9IHJlcXVpcmUoJ2V4cHJlc3MtdmFsaWRhdG9yJyk7XHJcbnZhciBhdXRoZW50aWNhdGUgPSByZXF1aXJlKCcuLi9taWRkbGV3YXJlL2F1dGhlbnRpY2F0ZScpO1xyXG52YXIgdmFsaWRhdGlvblJ1bGVzID0gcmVxdWlyZSgnLi4vbWlkZGxld2FyZS92YWxpZGF0aW9uJyk7XHJcbmNvbnN0IHRvdXJpc3RDb250cm9sbGVyID0gcmVxdWlyZSgnLi4vY29udHJvbGxlcnMvdG91cmlzdENvbnRyb2xsZXInKVxyXG5cclxuY29uc3QgdG91cmlzdFJvdXRlciA9IGV4cHJlc3MuUm91dGVyKCk7XHJcblxyXG50b3VyaXN0Um91dGVyLnVzZShib2R5UGFyc2VyLmpzb24oKSk7XHJcblxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbi8vIFxyXG4vLyAgICAgICAgICAgICAgVG91cmlzdCBSb3V0ZXNcclxuLy8gXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbnRvdXJpc3RSb3V0ZXIucm91dGUoJy8nKVxyXG4gICAgLm9wdGlvbnMoY29ycy5jb3JzV2l0aE9wdGlvbnMsIChyZXEsIHJlcykgPT4geyByZXMuc2VuZFN0YXR1cygyMDApOyB9KVxyXG4gICAgLmdldChjb3JzLmNvcnMsICBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgICB0b3VyaXN0Q29udHJvbGxlci5nZXRBbGxUb3VyaXN0cylcclxuICAgIC5wb3N0KGNvcnMuY29yc1dpdGhPcHRpb25zLCAgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlNb2RlcmF0ZXIsIHRvdXJpc3RDb250cm9sbGVyLmFkZFRvdXJpc3QpXHJcbiAgICAucHV0KGNvcnMuY29yc1dpdGhPcHRpb25zLCAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwMztcclxuICAgICAgICByZXMuZW5kKCdQVVQgb3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQgb24gL3RvdXJpc3RzJyk7XHJcbiAgICB9KVxyXG4gICAgLmRlbGV0ZShjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgIHRvdXJpc3RDb250cm9sbGVyLmRlbGV0ZUFsbFRvdXJpc3RzKTtcclxudG91cmlzdFJvdXRlci5yb3V0ZSgnL3NlYXJjaCcpXHJcbiAgICAub3B0aW9ucyhjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcbiAgICAucG9zdChjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsICB0b3VyaXN0Q29udHJvbGxlci5nZXRBbGxUb3VyaXN0c0J5TmFtZSk7XHJcblxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbi8vIFxyXG4vLyAgICAgICAgICAgICAgVG91cmlzdCBSb3V0ZXMgU3BlY2lmaWVkIGJ5IElEXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG50b3VyaXN0Um91dGVyLnJvdXRlKCcvOnRvdXJpc3RJZCcpXHJcbiAgICAub3B0aW9ucyhjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcbiAgICAuZ2V0KGNvcnMuY29ycywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsICAgdG91cmlzdENvbnRyb2xsZXIuZ2V0VG91cmlzdERldGFpbHNCeUlkKVxyXG4gICAgLnBvc3QoY29ycy5jb3JzV2l0aE9wdGlvbnMsIChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNDAzO1xyXG4gICAgICAgIHJlcy5lbmQoJ1BPU1Qgb3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQgb24gL3RvdXJpc3RzLycgKyByZXEucGFyYW1zLnRvdXJpc3RJZCk7XHJcbiAgICB9KVxyXG4gICAgLnB1dChjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlNb2RlcmF0ZXIsICB0b3VyaXN0Q29udHJvbGxlci51cGRhdGVUb3VyaXN0RGV0YWlsc0J5SWQpXHJcbiAgICAuZGVsZXRlKGNvcnMuY29yc1dpdGhPcHRpb25zLCAgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlNb2RlcmF0ZXIsIHRvdXJpc3RDb250cm9sbGVyLmRlbGV0ZUFUb3VyaXN0QnlJZCk7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IHRvdXJpc3RSb3V0ZXI7Il19\",\"originalCode\":\"const express = require('express');\\r\\nconst bodyParser = require('body-parser');\\r\\n\\r\\nconst cors = require('./cors');\\r\\nconst { checkSchema } = require('express-validator');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\nvar validationRules = require('../middleware/validation');\\r\\nconst touristController = require('../controllers/touristController')\\r\\n\\r\\nconst touristRouter = express.Router();\\r\\n\\r\\ntouristRouter.use(bodyParser.json());\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Tourist Routes\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\ntouristRouter.route('/')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, touristController.getAllTourists)\\r\\n .post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, touristController.addTourist)\\r\\n .put(cors.corsWithOptions, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('PUT operation not supported on /tourists');\\r\\n })\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, touristController.deleteAllTourists);\\r\\ntouristRouter.route('/search')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .post(cors.corsWithOptions, authenticate.verifyUser, touristController.getAllTouristsByName);\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Tourist Routes Specified by ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\ntouristRouter.route('/:touristId')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, touristController.getTouristDetailsById)\\r\\n .post(cors.corsWithOptions, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('POST operation not supported on /tourists/' + req.params.touristId);\\r\\n })\\r\\n .put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, touristController.updateTouristDetailsById)\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, touristController.deleteATouristById);\\r\\n\\r\\nmodule.exports = touristRouter;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/0a/touristRouter_0ad938586662daadc81c6cb1ad2e0f53.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2545\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\touristRouter.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":9165,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":9162,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":796,\"endOffset\":836,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1050,\"endOffset\":1152,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1333,\"endOffset\":1373,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1761,\"endOffset\":1801,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1911,\"endOffset\":2038,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const Tourists = require('../models/users');\\n\\nconst utils = require('../utils/utils'); // **********************************************************************************\\n// \\n// Tourist Operations \\n// \\n// **********************************************************************************\\n\\n\\nconst getAllTourists = (req, res, next) => {\\n var query = {\\n \\\"role\\\": \\\"user\\\"\\n }; // var obj = Object.assign(query, { $text: { $search: searchBy } });\\n\\n Tourists.find(query).then(tourists => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n tourists: tourists\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst getAllTouristsByName = (req, res, next) => {\\n var query = {\\n \\\"role\\\": \\\"user\\\"\\n };\\n\\n if (req.body.similarTo) {\\n var searchBy = req.body.similarTo || {};\\n query = {\\n \\\"role\\\": \\\"user\\\",\\n $text: {\\n $search: searchBy\\n }\\n };\\n }\\n\\n var sortby = req.body.sortBy || {};\\n Tourists.find(query).sort(sortby).then(tourists => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n tourists: tourists\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst addTourist = async (req, res, next) => {\\n const randomPassword = utils.password_generator(10);\\n var tourist = {\\n username: req.body.email,\\n firstname: req.body.firstname,\\n lastname: req.body.lastname,\\n email: req.body.email,\\n mobile: req.body.mobile,\\n role: 'user'\\n };\\n\\n try {\\n Tourists.register(new Tourists(tourist), randomPassword, (err, tourist) => {\\n if (err) {\\n res.statusCode = 403;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: err.message\\n });\\n } else {\\n tourist.save((err, tourist) => {\\n if (err) {\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Error while Saving new user.'\\n });\\n }\\n\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n email: tourist.email,\\n password: randomPassword\\n });\\n });\\n }\\n });\\n } catch (error) {\\n next(err);\\n }\\n};\\n\\nconst deleteAllTourists = (req, res, next) => {\\n Tourists.remove({\\n \\\"role\\\": \\\"user\\\"\\n }).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n response: resp\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nexports.getAllTourists = getAllTourists;\\nexports.getAllTouristsByName = getAllTouristsByName;\\nexports.addTourist = addTourist;\\nexports.deleteAllTourists = deleteAllTourists; // **********************************************************************************\\n// \\n// Tourist Operations Specified by ID\\n// \\n// **********************************************************************************\\n\\nconst getTouristDetailsById = (req, res, next) => {\\n var touristId = req.params.touristId;\\n Tourists.findById(touristId).then(tourist => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n tourist: tourist\\n });\\n }, err => {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Could not find tourist with given ID'\\n });\\n }).catch(err => next(err));\\n};\\n\\nconst updateTouristDetailsById = (req, res, next) => {\\n Tourists.findByIdAndUpdate(req.params.touristId, {\\n $set: req.body\\n }, {\\n new: true\\n }).then(tourist => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n tourist: tourist\\n });\\n }, err => {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Could not find tourist with given ID'\\n });\\n }).catch(err => next(err));\\n};\\n\\nconst deleteATouristById = (req, res, next) => {\\n Tourists.findByIdAndRemove(req.params.touristId).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n response: resp\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nexports.getTouristDetailsById = getTouristDetailsById;\\nexports.updateTouristDetailsById = updateTouristDetailsById;\\nexports.deleteATouristById = deleteATouristById;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRvdXJpc3RDb250cm9sbGVyLmpzIl0sIm5hbWVzIjpbIlRvdXJpc3RzIiwicmVxdWlyZSIsInV0aWxzIiwiZ2V0QWxsVG91cmlzdHMiLCJyZXEiLCJyZXMiLCJuZXh0IiwicXVlcnkiLCJmaW5kIiwidGhlbiIsInRvdXJpc3RzIiwic3RhdHVzQ29kZSIsInNldEhlYWRlciIsImpzb24iLCJzdWNjZXNzIiwiZXJyIiwiY2F0Y2giLCJnZXRBbGxUb3VyaXN0c0J5TmFtZSIsImJvZHkiLCJzaW1pbGFyVG8iLCJzZWFyY2hCeSIsIiR0ZXh0IiwiJHNlYXJjaCIsInNvcnRieSIsInNvcnRCeSIsInNvcnQiLCJhZGRUb3VyaXN0IiwicmFuZG9tUGFzc3dvcmQiLCJwYXNzd29yZF9nZW5lcmF0b3IiLCJ0b3VyaXN0IiwidXNlcm5hbWUiLCJlbWFpbCIsImZpcnN0bmFtZSIsImxhc3RuYW1lIiwibW9iaWxlIiwicm9sZSIsInJlZ2lzdGVyIiwibWVzc2FnZSIsInNhdmUiLCJwYXNzd29yZCIsImVycm9yIiwiZGVsZXRlQWxsVG91cmlzdHMiLCJyZW1vdmUiLCJyZXNwIiwicmVzcG9uc2UiLCJleHBvcnRzIiwiZ2V0VG91cmlzdERldGFpbHNCeUlkIiwidG91cmlzdElkIiwicGFyYW1zIiwiZmluZEJ5SWQiLCJ1cGRhdGVUb3VyaXN0RGV0YWlsc0J5SWQiLCJmaW5kQnlJZEFuZFVwZGF0ZSIsIiRzZXQiLCJuZXciLCJkZWxldGVBVG91cmlzdEJ5SWQiLCJmaW5kQnlJZEFuZFJlbW92ZSJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsUUFBUSxHQUFHQyxPQUFPLENBQUMsaUJBQUQsQ0FBeEI7O0FBQ0EsTUFBTUMsS0FBSyxHQUFHRCxPQUFPLENBQUMsZ0JBQUQsQ0FBckIsQyxDQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBLE1BQU1FLGNBQWMsR0FBRyxDQUFDQyxHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUN2QyxNQUFJQyxLQUFLLEdBQUc7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RUFBRTtBQUEzQixLQUFUO0FBQ0gsR0FYTCxFQVlLckIsS0FaTCxDQVlZRCxHQUFELElBQVNULElBQUksQ0FBQ1MsR0FBRCxDQVp4QjtBQWFILENBZkQ7O0FBaUJBLE1BQU11QyxrQkFBa0IsR0FBRyxDQUFDbEQsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDM0NOLEVBQUFBLFFBQVEsQ0FBQ3VELGlCQUFULENBQTJCbkQsR0FBRyxDQUFDNEMsTUFBSixDQUFXRCxTQUF0QyxFQUNLdEMsSUFETCxDQUNXa0MsSUFBRCxJQUFVO0FBQ1p0QyxJQUFBQSxHQUFHLENBQUNNLFVBQUosR0FBaUIsR0FBakI7QUFDQU4sSUFBQUEsR0FBRyxDQUFDTyxTQUFKLENBQWMsY0FBZCxFQUE4QixrQkFBOUI7QUFDQVAsSUFBQUEsR0FBRyxDQUFDUSxJQUFKLENBQVM7QUFBRUMsTUFBQUEsT0FBTyxFQUFFLElBQVg7QUFBaUI4QixNQUFBQSxRQUFRLEVBQUVEO0FBQTNCLEtBQVQ7QUFDSCxHQUxMLEVBS1E1QixHQUFELElBQVNULElBQUksQ0FBQ1MsR0FBRCxDQUxwQixFQU1LQyxLQU5MLENBTVlELEdBQUQsSUFBU1QsSUFBSSxDQUFDUyxHQUFELENBTnhCO0FBT0gsQ0FSRDs7QUFVQThCLE9BQU8sQ0FBQ0MscUJBQVIsR0FBZ0NBLHFCQUFoQztBQUNBRCxPQUFPLENBQUNLLHdCQUFSLEdBQW1DQSx3QkFBbkM7QUFDQUwsT0FBTyxDQUFDUyxrQkFBUixHQUE2QkEsa0JBQTdCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgVG91cmlzdHMgPSByZXF1aXJlKCcuLi9tb2RlbHMvdXNlcnMnKTtcclxuY29uc3QgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscy91dGlscycpO1xyXG5cclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyBcclxuLy8gICAgICAgICAgICAgIFRvdXJpc3QgT3BlcmF0aW9ucyBcclxuLy8gXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbmNvbnN0IGdldEFsbFRvdXJpc3RzID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICB2YXIgcXVlcnkgPSB7IFwicm9sZVwiOiBcInVzZXJcIiB9O1xyXG4gICAgLy8gdmFyIG9iaiA9IE9iamVjdC5hc3NpZ24ocXVlcnksIHsgJHRleHQ6IHsgJHNlYXJjaDogc2VhcmNoQnkgfSB9KTtcclxuICAgICBUb3VyaXN0cy5maW5kKHF1ZXJ5KVxyXG4gICAgICAgIC50aGVuKCh0b3VyaXN0cykgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCB0b3VyaXN0czogdG91cmlzdHMgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpO1xyXG59XHJcblxyXG5jb25zdCBnZXRBbGxUb3VyaXN0c0J5TmFtZSA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgdmFyIHF1ZXJ5ID0geyBcInJvbGVcIjogXCJ1c2VyXCIgfTtcclxuICAgIGlmIChyZXEuYm9keS5zaW1pbGFyVG8pIHtcclxuICAgICAgICB2YXIgc2VhcmNoQnkgPSByZXEuYm9keS5zaW1pbGFyVG8gfHwge31cclxuICAgICAgICBxdWVyeSA9IHsgXCJyb2xlXCI6IFwidXNlclwiLCAkdGV4dDogeyAkc2VhcmNoOiBzZWFyY2hCeSB9IH1cclxuICAgIH1cclxuXHJcbiAgICB2YXIgc29ydGJ5ID0gcmVxLmJvZHkuc29ydEJ5IHx8IHt9O1xyXG4gICAgVG91cmlzdHMuZmluZChxdWVyeSkuc29ydChzb3J0YnkpXHJcbiAgICAgICAgLnRoZW4oKHRvdXJpc3RzKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHRvdXJpc3RzOiB0b3VyaXN0cyB9KTtcclxuICAgICAgICB9LCAoZXJyKSA9PiBuZXh0KGVycikpXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IG5leHQoZXJyKSk7XHJcbn1cclxuXHJcbmNvbnN0IGFkZFRvdXJpc3QgPSBhc3luYyAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIGNvbnN0IHJhbmRvbVBhc3N3b3JkID0gdXRpbHMucGFzc3dvcmRfZ2VuZXJhdG9yKDEwKTtcclxuICAgIHZhciB0b3VyaXN0ID0ge1xyXG4gICAgICAgIHVzZXJuYW1lOiByZXEuYm9keS5lbWFpbCxcclxuICAgICAgICBmaXJzdG5hbWU6IHJlcS5ib2R5LmZpcnN0bmFtZSxcclxuICAgICAgICBsYXN0bmFtZTogcmVxLmJvZHkubGFzdG5hbWUsXHJcbiAgICAgICAgZW1haWw6IHJlcS5ib2R5LmVtYWlsLFxyXG4gICAgICAgIG1vYmlsZTogcmVxLmJvZHkubW9iaWxlLFxyXG4gICAgICAgIHJvbGU6ICd1c2VyJ1xyXG4gICAgfVxyXG4gICAgdHJ5IHtcclxuICAgICAgICBUb3VyaXN0cy5yZWdpc3RlcihuZXcgVG91cmlzdHModG91cmlzdCksXHJcbiAgICAgICAgICAgIHJhbmRvbVBhc3N3b3JkLCAoZXJyLCB0b3VyaXN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IGZhbHNlLCBtZXNzYWdlOiBlcnIubWVzc2FnZSB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRvdXJpc3Quc2F2ZSgoZXJyLCB0b3VyaXN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNTAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IGZhbHNlLCBtZXNzYWdlOiAnRXJyb3Igd2hpbGUgU2F2aW5nIG5ldyB1c2VyLicgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgZW1haWw6IHRvdXJpc3QuZW1haWwsIHBhc3N3b3JkOiByYW5kb21QYXNzd29yZCB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgbmV4dChlcnIpO1xyXG4gICAgfVxyXG59XHJcblxyXG5jb25zdCBkZWxldGVBbGxUb3VyaXN0cyA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgVG91cmlzdHMucmVtb3ZlKHsgXCJyb2xlXCI6IFwidXNlclwiIH0pXHJcbiAgICAgICAgLnRoZW4oKHJlc3ApID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgcmVzcG9uc2U6IHJlc3AgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpO1xyXG59XHJcblxyXG5leHBvcnRzLmdldEFsbFRvdXJpc3RzID0gZ2V0QWxsVG91cmlzdHM7XHJcbmV4cG9ydHMuZ2V0QWxsVG91cmlzdHNCeU5hbWUgPSBnZXRBbGxUb3VyaXN0c0J5TmFtZTtcclxuZXhwb3J0cy5hZGRUb3VyaXN0ID0gYWRkVG91cmlzdDtcclxuZXhwb3J0cy5kZWxldGVBbGxUb3VyaXN0cyA9IGRlbGV0ZUFsbFRvdXJpc3RzO1xyXG5cclxuXHJcblxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbi8vIFxyXG4vLyAgICAgICAgICAgICAgVG91cmlzdCBPcGVyYXRpb25zIFNwZWNpZmllZCBieSBJRFxyXG4vLyBcclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuY29uc3QgZ2V0VG91cmlzdERldGFpbHNCeUlkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICB2YXIgdG91cmlzdElkID0gcmVxLnBhcmFtcy50b3VyaXN0SWQ7XHJcbiAgICBUb3VyaXN0cy5maW5kQnlJZCh0b3VyaXN0SWQpXHJcbiAgICAgICAgLnRoZW4oKHRvdXJpc3QpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgdG91cmlzdDogdG91cmlzdCB9KTtcclxuICAgICAgICB9LCAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNDA0O1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IGZhbHNlLCBtZXNzYWdlOiAnQ291bGQgbm90IGZpbmQgdG91cmlzdCB3aXRoIGdpdmVuIElEJyB9KTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpOyBcclxufVxyXG5cclxuY29uc3QgdXBkYXRlVG91cmlzdERldGFpbHNCeUlkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICBcclxuICAgIFRvdXJpc3RzLmZpbmRCeUlkQW5kVXBkYXRlKHJlcS5wYXJhbXMudG91cmlzdElkLCB7XHJcbiAgICAgICAgJHNldDogcmVxLmJvZHlcclxuICAgIH0sIHsgbmV3OiB0cnVlIH0pXHJcbiAgICAgICAgLnRoZW4oKHRvdXJpc3QpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgdG91cmlzdDogdG91cmlzdCB9KTtcclxuICAgICAgICB9LCAoZXJyKSA9PiAge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwNDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogJ0NvdWxkIG5vdCBmaW5kIHRvdXJpc3Qgd2l0aCBnaXZlbiBJRCcgfSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuY29uc3QgZGVsZXRlQVRvdXJpc3RCeUlkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICBUb3VyaXN0cy5maW5kQnlJZEFuZFJlbW92ZShyZXEucGFyYW1zLnRvdXJpc3RJZClcclxuICAgICAgICAudGhlbigocmVzcCkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCByZXNwb25zZTogcmVzcCB9KTtcclxuICAgICAgICB9LCAoZXJyKSA9PiBuZXh0KGVycikpXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IG5leHQoZXJyKSk7XHJcbn1cclxuXHJcbmV4cG9ydHMuZ2V0VG91cmlzdERldGFpbHNCeUlkID0gZ2V0VG91cmlzdERldGFpbHNCeUlkO1xyXG5leHBvcnRzLnVwZGF0ZVRvdXJpc3REZXRhaWxzQnlJZCA9IHVwZGF0ZVRvdXJpc3REZXRhaWxzQnlJZDtcclxuZXhwb3J0cy5kZWxldGVBVG91cmlzdEJ5SWQgPSBkZWxldGVBVG91cmlzdEJ5SWQ7XHJcblxyXG5cclxuIl19\",\"originalCode\":\"const Tourists = require('../models/users');\\r\\nconst utils = require('../utils/utils');\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Tourist Operations \\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nconst getAllTourists = (req, res, next) => {\\r\\n var query = { \\\"role\\\": \\\"user\\\" };\\r\\n // var obj = Object.assign(query, { $text: { $search: searchBy } });\\r\\n Tourists.find(query)\\r\\n .then((tourists) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, tourists: tourists });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst getAllTouristsByName = (req, res, next) => {\\r\\n var query = { \\\"role\\\": \\\"user\\\" };\\r\\n if (req.body.similarTo) {\\r\\n var searchBy = req.body.similarTo || {}\\r\\n query = { \\\"role\\\": \\\"user\\\", $text: { $search: searchBy } }\\r\\n }\\r\\n\\r\\n var sortby = req.body.sortBy || {};\\r\\n Tourists.find(query).sort(sortby)\\r\\n .then((tourists) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, tourists: tourists });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst addTourist = async (req, res, next) => {\\r\\n const randomPassword = utils.password_generator(10);\\r\\n var tourist = {\\r\\n username: req.body.email,\\r\\n firstname: req.body.firstname,\\r\\n lastname: req.body.lastname,\\r\\n email: req.body.email,\\r\\n mobile: req.body.mobile,\\r\\n role: 'user'\\r\\n }\\r\\n try {\\r\\n Tourists.register(new Tourists(tourist),\\r\\n randomPassword, (err, tourist) => {\\r\\n if (err) {\\r\\n res.statusCode = 403;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: err.message });\\r\\n }\\r\\n else {\\r\\n tourist.save((err, tourist) => {\\r\\n if (err) {\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Error while Saving new user.' });\\r\\n }\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, email: tourist.email, password: randomPassword });\\r\\n });\\r\\n }\\r\\n });\\r\\n } catch (error) {\\r\\n next(err);\\r\\n }\\r\\n}\\r\\n\\r\\nconst deleteAllTourists = (req, res, next) => {\\r\\n Tourists.remove({ \\\"role\\\": \\\"user\\\" })\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, response: resp });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nexports.getAllTourists = getAllTourists;\\r\\nexports.getAllTouristsByName = getAllTouristsByName;\\r\\nexports.addTourist = addTourist;\\r\\nexports.deleteAllTourists = deleteAllTourists;\\r\\n\\r\\n\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Tourist Operations Specified by ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nconst getTouristDetailsById = (req, res, next) => {\\r\\n var touristId = req.params.touristId;\\r\\n Tourists.findById(touristId)\\r\\n .then((tourist) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, tourist: tourist });\\r\\n }, (err) => {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Could not find tourist with given ID' });\\r\\n })\\r\\n .catch((err) => next(err)); \\r\\n}\\r\\n\\r\\nconst updateTouristDetailsById = (req, res, next) => {\\r\\n \\r\\n Tourists.findByIdAndUpdate(req.params.touristId, {\\r\\n $set: req.body\\r\\n }, { new: true })\\r\\n .then((tourist) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, tourist: tourist });\\r\\n }, (err) => {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Could not find tourist with given ID' });\\r\\n })\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst deleteATouristById = (req, res, next) => {\\r\\n Tourists.findByIdAndRemove(req.params.touristId)\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, response: resp });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nexports.getTouristDetailsById = getTouristDetailsById;\\r\\nexports.updateTouristDetailsById = updateTouristDetailsById;\\r\\nexports.deleteATouristById = deleteATouristById;\\r\\n\\r\\n\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/ff/touristController_ff3455758448d6e0c4e2be11f313067b.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2546\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\touristController.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":20391,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":20388,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"getAllTourists\",\"ranges\":[{\"startOffset\":417,\"endOffset\":790,\"count\":3}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":577,\"endOffset\":744,\"count\":2}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":746,\"endOffset\":762,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":770,\"endOffset\":786,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getAllTouristsByName\",\"ranges\":[{\"startOffset\":822,\"endOffset\":1347,\"count\":3},{\"startOffset\":911,\"endOffset\":1053,\"count\":1},{\"startOffset\":951,\"endOffset\":956,\"count\":0}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1134,\"endOffset\":1301,\"count\":3}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1303,\"endOffset\":1319,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1327,\"endOffset\":1343,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"addTourist\",\"ranges\":[{\"startOffset\":1369,\"endOffset\":2534,\"count\":4},{\"startOffset\":2498,\"endOffset\":2532,\"count\":0}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1716,\"endOffset\":2491,\"count\":4},{\"startOffset\":1751,\"endOffset\":2485,\"count\":2}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1966,\"endOffset\":2475,\"count\":2},{\"startOffset\":2005,\"endOffset\":2238,\"count\":0}],\"isBlockCoverage\":true},{\"functionName\":\"deleteAllTourists\",\"ranges\":[{\"startOffset\":2563,\"endOffset\":2839,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":2634,\"endOffset\":2793,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":2795,\"endOffset\":2811,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":2819,\"endOffset\":2835,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getTouristDetailsById\",\"ranges\":[{\"startOffset\":3278,\"endOffset\":3762,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"updateTouristDetailsById\",\"ranges\":[{\"startOffset\":3798,\"endOffset\":4309,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"deleteATouristById\",\"ranges\":[{\"startOffset\":4339,\"endOffset\":4622,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const express = require('express');\\n\\nconst bodyParser = require('body-parser');\\n\\nconst cors = require('./cors');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nconst dashboardController = require('../controllers/dashboardController');\\n\\nconst dashboardRouter = express.Router();\\ndashboardRouter.use(bodyParser.json());\\ndashboardRouter.route('/admin').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, authenticate.verifyAdmin, dashboardController.getDashboard);\\nmodule.exports = dashboardRouter;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRhc2hib2FyZFJvdXRlci5qcyJdLCJuYW1lcyI6WyJleHByZXNzIiwicmVxdWlyZSIsImJvZHlQYXJzZXIiLCJjb3JzIiwiYXV0aGVudGljYXRlIiwiZGFzaGJvYXJkQ29udHJvbGxlciIsImRhc2hib2FyZFJvdXRlciIsIlJvdXRlciIsInVzZSIsImpzb24iLCJyb3V0ZSIsIm9wdGlvbnMiLCJjb3JzV2l0aE9wdGlvbnMiLCJyZXEiLCJyZXMiLCJzZW5kU3RhdHVzIiwiZ2V0IiwidmVyaWZ5VXNlciIsInZlcmlmeUFkbWluIiwiZ2V0RGFzaGJvYXJkIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsT0FBTyxHQUFHQyxPQUFPLENBQUMsU0FBRCxDQUF2Qjs7QUFDQSxNQUFNQyxVQUFVLEdBQUdELE9BQU8sQ0FBQyxhQUFELENBQTFCOztBQUVBLE1BQU1FLElBQUksR0FBR0YsT0FBTyxDQUFDLFFBQUQsQ0FBcEI7O0FBQ0EsSUFBSUcsWUFBWSxHQUFHSCxPQUFPLENBQUMsNEJBQUQsQ0FBMUI7O0FBQ0EsTUFBTUksbUJBQW1CLEdBQUdKLE9BQU8sQ0FBQyxvQ0FBRCxDQUFuQzs7QUFFQSxNQUFNSyxlQUFlLEdBQUdOLE9BQU8sQ0FBQ08sTUFBUixFQUF4QjtBQUVBRCxlQUFlLENBQUNFLEdBQWhCLENBQW9CTixVQUFVLENBQUNPLElBQVgsRUFBcEI7QUFFQUgsZUFBZSxDQUFDSSxLQUFoQixDQUFzQixRQUF0QixFQUNLQyxPQURMLENBQ2FSLElBQUksQ0FBQ1MsZUFEbEIsRUFDbUMsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEtBQWM7QUFBRUEsRUFBQUEsR0FBRyxDQUFDQyxVQUFKLENBQWUsR0FBZjtBQUFzQixDQUR6RSxFQUVLQyxHQUZMLENBRVNiLElBQUksQ0FBQ0EsSUFGZCxFQUVtQkMsWUFBWSxDQUFDYSxVQUZoQyxFQUU0Q2IsWUFBWSxDQUFDYyxXQUZ6RCxFQUVzRWIsbUJBQW1CLENBQUNjLFlBRjFGO0FBSUFDLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQmYsZUFBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBleHByZXNzID0gcmVxdWlyZSgnZXhwcmVzcycpO1xyXG5jb25zdCBib2R5UGFyc2VyID0gcmVxdWlyZSgnYm9keS1wYXJzZXInKTtcclxuXHJcbmNvbnN0IGNvcnMgPSByZXF1aXJlKCcuL2NvcnMnKTtcclxudmFyIGF1dGhlbnRpY2F0ZSA9IHJlcXVpcmUoJy4uL21pZGRsZXdhcmUvYXV0aGVudGljYXRlJyk7XHJcbmNvbnN0IGRhc2hib2FyZENvbnRyb2xsZXIgPSByZXF1aXJlKCcuLi9jb250cm9sbGVycy9kYXNoYm9hcmRDb250cm9sbGVyJyk7XHJcblxyXG5jb25zdCBkYXNoYm9hcmRSb3V0ZXIgPSBleHByZXNzLlJvdXRlcigpO1xyXG5cclxuZGFzaGJvYXJkUm91dGVyLnVzZShib2R5UGFyc2VyLmpzb24oKSk7XHJcblxyXG5kYXNoYm9hcmRSb3V0ZXIucm91dGUoJy9hZG1pbicpXHJcbiAgICAub3B0aW9ucyhjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcbiAgICAuZ2V0KGNvcnMuY29ycyxhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeUFkbWluLCBkYXNoYm9hcmRDb250cm9sbGVyLmdldERhc2hib2FyZCk7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IGRhc2hib2FyZFJvdXRlcjsiXX0=\",\"originalCode\":\"const express = require('express');\\r\\nconst bodyParser = require('body-parser');\\r\\n\\r\\nconst cors = require('./cors');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\nconst dashboardController = require('../controllers/dashboardController');\\r\\n\\r\\nconst dashboardRouter = express.Router();\\r\\n\\r\\ndashboardRouter.use(bodyParser.json());\\r\\n\\r\\ndashboardRouter.route('/admin')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors,authenticate.verifyUser, authenticate.verifyAdmin, dashboardController.getDashboard);\\r\\n\\r\\nmodule.exports = dashboardRouter;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/07/dashboardRouter_0791a49f2f45fc0f57ade98f27175c5c.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2547\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\dashboardRouter.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":2824,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":2821,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":482,\"endOffset\":522,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const Place = require('../models/visitingPlaces');\\n\\nconst User = require('../models/users');\\n\\nconst Schedule = require('../models/schedules');\\n\\nexports.getDashboard = async (req, res, next) => {\\n try {\\n const users_count = (await User.find().countDocuments()) - 1;\\n const tourist_count_total = await User.find({\\n \\\"role\\\": \\\"user\\\"\\n }).countDocuments();\\n const assistant_count_total = await User.find({\\n \\\"role\\\": \\\"moderater\\\"\\n }).countDocuments();\\n const tourist_count_in = await User.find({\\n \\\"role\\\": \\\"user\\\",\\n \\\"userstate\\\": \\\"in\\\"\\n }).countDocuments();\\n const place_count = await Place.find().countDocuments();\\n const place_names = await Place.find({}, {\\n _id: 0,\\n name: 1\\n });\\n const place_locations = await Place.find({}, {\\n _id: 0,\\n \\\"location.coordinates\\\": 1\\n });\\n var locations = [];\\n place_locations.forEach(element => {\\n var longitude = element.location.coordinates[0];\\n var latitude = element.location.coordinates[1];\\n locations.push({\\n longitude,\\n latitude\\n });\\n });\\n const schedules_count_total = await Schedule.find().countDocuments();\\n const schedules_count_new = await Schedule.find({\\n \\\"state\\\": \\\"new\\\"\\n }).countDocuments();\\n const schedules_count_canceled = await Schedule.find({\\n \\\"state\\\": \\\"cancled\\\"\\n }).countDocuments();\\n const schedules_count_notcompleted = await Schedule.find({\\n \\\"state\\\": \\\"notcompleted\\\"\\n }).countDocuments();\\n const schedules_count_completed = await Schedule.find({\\n \\\"state\\\": \\\"completed\\\"\\n }).countDocuments();\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n dashboardValues: {\\n users_count: users_count,\\n tourist_count_total: tourist_count_total,\\n assistant_count_total: assistant_count_total,\\n tourist_count_in: tourist_count_in,\\n place_count: place_count,\\n place_names: place_names,\\n place_locations: locations,\\n schedules_count_total: schedules_count_total,\\n schedules_count_new: schedules_count_new,\\n schedules_count_canceled: schedules_count_canceled,\\n schedules_count_notcompleted: schedules_count_notcompleted,\\n schedules_count_completed: schedules_count_completed\\n }\\n });\\n } catch (err) {\\n next(err);\\n }\\n};\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRhc2hib2FyZENvbnRyb2xsZXIuanMiXSwibmFtZXMiOlsiUGxhY2UiLCJyZXF1aXJlIiwiVXNlciIsIlNjaGVkdWxlIiwiZXhwb3J0cyIsImdldERhc2hib2FyZCIsInJlcSIsInJlcyIsIm5leHQiLCJ1c2Vyc19jb3VudCIsImZpbmQiLCJjb3VudERvY3VtZW50cyIsInRvdXJpc3RfY291bnRfdG90YWwiLCJhc3Npc3RhbnRfY291bnRfdG90YWwiLCJ0b3VyaXN0X2NvdW50X2luIiwicGxhY2VfY291bnQiLCJwbGFjZV9uYW1lcyIsIl9pZCIsIm5hbWUiLCJwbGFjZV9sb2NhdGlvbnMiLCJsb2NhdGlvbnMiLCJmb3JFYWNoIiwiZWxlbWVudCIsImxvbmdpdHVkZSIsImxvY2F0aW9uIiwiY29vcmRpbmF0ZXMiLCJsYXRpdHVkZSIsInB1c2giLCJzY2hlZHVsZXNfY291bnRfdG90YWwiLCJzY2hlZHVsZXNfY291bnRfbmV3Iiwic2NoZWR1bGVzX2NvdW50X2NhbmNlbGVkIiwic2NoZWR1bGVzX2NvdW50X25vdGNvbXBsZXRlZCIsInNjaGVkdWxlc19jb3VudF9jb21wbGV0ZWQiLCJzdGF0dXNDb2RlIiwic2V0SGVhZGVyIiwianNvbiIsInN1Y2Nlc3MiLCJkYXNoYm9hcmRWYWx1ZXMiLCJlcnIiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLEtBQUssR0FBR0MsT0FBTyxDQUFDLDBCQUFELENBQXJCOztBQUNBLE1BQU1DLElBQUksR0FBR0QsT0FBTyxDQUFDLGlCQUFELENBQXBCOztBQUNBLE1BQU1FLFFBQVEsR0FBR0YsT0FBTyxDQUFDLHFCQUFELENBQXhCOztBQUVBRyxPQUFPLENBQUNDLFlBQVIsR0FBdUIsT0FBT0MsR0FBUCxFQUFZQyxHQUFaLEVBQWlCQyxJQUFqQixLQUEwQjtBQUM3QyxNQUFJO0FBQ0EsVUFBTUMsV0FBVyxHQUFHLE9BQU1QLElBQUksQ0FBQ1EsSUFBTCxHQUFZQyxjQUFaLEVBQU4sSUFBcUMsQ0FBekQ7QUFDQSxVQUFNQyxtQkFB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QUFFQSw0QkFYRjtBQVk1QkMsUUFBQUEseUJBQXlCLEVBQUVBO0FBWkM7QUFEM0IsS0FBVDtBQWdCSCxHQXRDRCxDQXNDRSxPQUFPTSxHQUFQLEVBQVk7QUFDVjlCLElBQUFBLElBQUksQ0FBQzhCLEdBQUQsQ0FBSjtBQUNIO0FBQ0osQ0ExQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBQbGFjZSA9IHJlcXVpcmUoJy4uL21vZGVscy92aXNpdGluZ1BsYWNlcycpO1xyXG5jb25zdCBVc2VyID0gcmVxdWlyZSgnLi4vbW9kZWxzL3VzZXJzJyk7XHJcbmNvbnN0IFNjaGVkdWxlID0gcmVxdWlyZSgnLi4vbW9kZWxzL3NjaGVkdWxlcycpO1xyXG5cclxuZXhwb3J0cy5nZXREYXNoYm9hcmQgPSBhc3luYyAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgICAgY29uc3QgdXNlcnNfY291bnQgPSBhd2FpdCBVc2VyLmZpbmQoKS5jb3VudERvY3VtZW50cygpIC0gMTtcclxuICAgICAgICBjb25zdCB0b3VyaXN0X2NvdW50X3RvdGFsID0gYXdhaXQgVXNlci5maW5kKHsgXCJyb2xlXCI6IFwidXNlclwiIH0pLmNvdW50RG9jdW1lbnRzKCk7XHJcbiAgICAgICAgY29uc3QgYXNzaXN0YW50X2NvdW50X3RvdGFsID0gYXdhaXQgVXNlci5maW5kKHsgXCJyb2xlXCI6IFwibW9kZXJhdGVyXCIgfSkuY291bnREb2N1bWVudHMoKTtcclxuICAgICAgICBjb25zdCB0b3VyaXN0X2NvdW50X2luID0gYXdhaXQgVXNlci5maW5kKHsgXCJyb2xlXCI6IFwidXNlclwiLCBcInVzZXJzdGF0ZVwiOiBcImluXCIgfSkuY291bnREb2N1bWVudHMoKTtcclxuICAgICAgICBjb25zdCBwbGFjZV9jb3VudCA9IGF3YWl0IFBsYWNlLmZpbmQoKS5jb3VudERvY3VtZW50cygpO1xyXG4gICAgICAgIGNvbnN0IHBsYWNlX25hbWVzID0gYXdhaXQgUGxhY2UuZmluZCh7fSwgeyBfaWQ6IDAsIG5hbWU6IDEgfSk7XHJcbiAgICAgICAgY29uc3QgcGxhY2VfbG9jYXRpb25zID0gYXdhaXQgUGxhY2UuZmluZCh7fSwgeyBfaWQ6IDAsIFwibG9jYXRpb24uY29vcmRpbmF0ZXNcIjogMSB9KTtcclxuICAgICAgICB2YXIgbG9jYXRpb25zID0gW107XHJcbiAgICAgICAgcGxhY2VfbG9jYXRpb25zLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICAgIHZhciBsb25naXR1ZGUgPSBlbGVtZW50LmxvY2F0aW9uLmNvb3JkaW5hdGVzWzBdO1xyXG4gICAgICAgICAgICB2YXIgbGF0aXR1ZGUgPSBlbGVtZW50LmxvY2F0aW9uLmNvb3JkaW5hdGVzWzFdO1xyXG4gICAgICAgICAgICBsb2NhdGlvbnMucHVzaCh7IGxvbmdpdHVkZSwgbGF0aXR1ZGUgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgY29uc3Qgc2NoZWR1bGVzX2NvdW50X3RvdGFsID0gYXdhaXQgU2NoZWR1bGUuZmluZCgpLmNvdW50RG9jdW1lbnRzKCk7XHJcbiAgICAgICAgY29uc3Qgc2NoZWR1bGVzX2NvdW50X25ldyA9IGF3YWl0IFNjaGVkdWxlLmZpbmQoeyBcInN0YXRlXCI6IFwibmV3XCIgfSkuY291bnREb2N1bWVudHMoKTtcclxuICAgICAgICBjb25zdCBzY2hlZHVsZXNfY291bnRfY2FuY2VsZWQgPSBhd2FpdCBTY2hlZHVsZS5maW5kKHsgXCJzdGF0ZVwiOiBcImNhbmNsZWRcIiB9KS5jb3VudERvY3VtZW50cygpO1xyXG4gICAgICAgIGNvbnN0IHNjaGVkdWxlc19jb3VudF9ub3Rjb21wbGV0ZWQgPSBhd2FpdCBTY2hlZHVsZS5maW5kKHsgXCJzdGF0ZVwiOiBcIm5vdGNvbXBsZXRlZFwiIH0pLmNvdW50RG9jdW1lbnRzKCk7XHJcbiAgICAgICAgY29uc3Qgc2NoZWR1bGVzX2NvdW50X2NvbXBsZXRlZCA9IGF3YWl0IFNjaGVkdWxlLmZpbmQoeyBcInN0YXRlXCI6IFwiY29tcGxldGVkXCIgfSkuY291bnREb2N1bWVudHMoKTtcclxuXHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICByZXMuanNvbih7XHJcbiAgICAgICAgICAgIHN1Y2Nlc3M6IHRydWUsIGRhc2hib2FyZFZhbHVlczoge1xyXG4gICAgICAgICAgICAgICAgdXNlcnNfY291bnQ6IHVzZXJzX2NvdW50LFxyXG4gICAgICAgICAgICAgICAgdG91cmlzdF9jb3VudF90b3RhbDogdG91cmlzdF9jb3VudF90b3RhbCxcclxuICAgICAgICAgICAgICAgIGFzc2lzdGFudF9jb3VudF90b3RhbDogYXNzaXN0YW50X2NvdW50X3RvdGFsLFxyXG4gICAgICAgICAgICAgICAgdG91cmlzdF9jb3VudF9pbjogdG91cmlzdF9jb3VudF9pbixcclxuICAgICAgICAgICAgICAgIHBsYWNlX2NvdW50OiBwbGFjZV9jb3VudCxcclxuICAgICAgICAgICAgICAgIHBsYWNlX25hbWVzOiBwbGFjZV9uYW1lcyxcclxuICAgICAgICAgICAgICAgIHBsYWNlX2xvY2F0aW9uczogbG9jYXRpb25zLFxyXG4gICAgICAgICAgICAgICAgc2NoZWR1bGVzX2NvdW50X3RvdGFsOiBzY2hlZHVsZXNfY291bnRfdG90YWwsXHJcbiAgICAgICAgICAgICAgICBzY2hlZHVsZXNfY291bnRfbmV3OiBzY2hlZHVsZXNfY291bnRfbmV3LFxyXG4gICAgICAgICAgICAgICAgc2NoZWR1bGVzX2NvdW50X2NhbmNlbGVkOiBzY2hlZHVsZXNfY291bnRfY2FuY2VsZWQsXHJcbiAgICAgICAgICAgICAgICBzY2hlZHVsZXNfY291bnRfbm90Y29tcGxldGVkOiBzY2hlZHVsZXNfY291bnRfbm90Y29tcGxldGVkLFxyXG4gICAgICAgICAgICAgICAgc2NoZWR1bGVzX2NvdW50X2NvbXBsZXRlZDogc2NoZWR1bGVzX2NvdW50X2NvbXBsZXRlZFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICBuZXh0KGVycik7XHJcbiAgICB9XHJcbn1cclxuXHJcbiJdfQ==\",\"originalCode\":\"const Place = require('../models/visitingPlaces');\\r\\nconst User = require('../models/users');\\r\\nconst Schedule = require('../models/schedules');\\r\\n\\r\\nexports.getDashboard = async (req, res, next) => {\\r\\n try {\\r\\n const users_count = await User.find().countDocuments() - 1;\\r\\n const tourist_count_total = await User.find({ \\\"role\\\": \\\"user\\\" }).countDocuments();\\r\\n const assistant_count_total = await User.find({ \\\"role\\\": \\\"moderater\\\" }).countDocuments();\\r\\n const tourist_count_in = await User.find({ \\\"role\\\": \\\"user\\\", \\\"userstate\\\": \\\"in\\\" }).countDocuments();\\r\\n const place_count = await Place.find().countDocuments();\\r\\n const place_names = await Place.find({}, { _id: 0, name: 1 });\\r\\n const place_locations = await Place.find({}, { _id: 0, \\\"location.coordinates\\\": 1 });\\r\\n var locations = [];\\r\\n place_locations.forEach(element => {\\r\\n var longitude = element.location.coordinates[0];\\r\\n var latitude = element.location.coordinates[1];\\r\\n locations.push({ longitude, latitude });\\r\\n });\\r\\n const schedules_count_total = await Schedule.find().countDocuments();\\r\\n const schedules_count_new = await Schedule.find({ \\\"state\\\": \\\"new\\\" }).countDocuments();\\r\\n const schedules_count_canceled = await Schedule.find({ \\\"state\\\": \\\"cancled\\\" }).countDocuments();\\r\\n const schedules_count_notcompleted = await Schedule.find({ \\\"state\\\": \\\"notcompleted\\\" }).countDocuments();\\r\\n const schedules_count_completed = await Schedule.find({ \\\"state\\\": \\\"completed\\\" }).countDocuments();\\r\\n\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({\\r\\n success: true, dashboardValues: {\\r\\n users_count: users_count,\\r\\n tourist_count_total: tourist_count_total,\\r\\n assistant_count_total: assistant_count_total,\\r\\n tourist_count_in: tourist_count_in,\\r\\n place_count: place_count,\\r\\n place_names: place_names,\\r\\n place_locations: locations,\\r\\n schedules_count_total: schedules_count_total,\\r\\n schedules_count_new: schedules_count_new,\\r\\n schedules_count_canceled: schedules_count_canceled,\\r\\n schedules_count_notcompleted: schedules_count_notcompleted,\\r\\n schedules_count_completed: schedules_count_completed\\r\\n }\\r\\n });\\r\\n } catch (err) {\\r\\n next(err);\\r\\n }\\r\\n}\\r\\n\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/34/dashboardController_34872bbac017cfae6fcc33926d204118.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2548\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\dashboardController.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":9854,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":9851,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
.exports.getDashboard\",\"ranges\":[{\"startOffset\":256,\"endOffset\":2463,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const app = require('../../app');\\n\\nconst server = require(\\\"supertest\\\")(app);\\n\\nconst jwt_decode = require('jwt-decode');\\n\\nconst Users = require('../../models/users');\\n\\nvar userToken;\\nvar assistantToken;\\nvar adminToken;\\nvar passwordAssistant;\\nvar passwordUser;\\nconst admin = {\\n \\\"firstname\\\": \\\"Admin\\\",\\n \\\"lastname\\\": \\\"Admin\\\",\\n \\\"email\\\": \\\"admin@gmail.com\\\",\\n \\\"password\\\": \\\"admin-password\\\"\\n};\\nconst assistant = {\\n \\\"firstname\\\": \\\"Pasan\\\",\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\n \\\"email\\\": \\\"pasanFernamdo@gmail.com\\\"\\n};\\nconst tourist = {\\n \\\"firstname\\\": \\\"Sunil\\\",\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\n \\\"email\\\": \\\"sunilFernamdo@gmail.com\\\"\\n};\\n\\nconst signupAdmin = async () => {\\n await Users.deleteMany({});\\n await server.post(\\\"/users/signup/admin\\\").send(admin);\\n};\\n\\nconst getAdminToken = async () => {\\n if (adminToken) {\\n return adminToken;\\n }\\n\\n await signupAdmin();\\n var creds = {\\n username: admin.email,\\n password: admin.password\\n };\\n const response = await server.post(\\\"/users/login\\\").send(creds);\\n adminToken = response.body.token;\\n return adminToken;\\n};\\n\\nconst addAssistant = async () => {\\n if (!adminToken) {\\n await getAdminToken();\\n }\\n\\n const response = await server.post(\\\"/employees\\\").set(\\\"Authorization\\\", `Bearer ${adminToken}`).send(assistant).expect(200);\\n passwordAssistant = response.body.password;\\n};\\n\\nconst getAssistantToken = async () => {\\n if (assistantToken) {\\n return assistantToken;\\n }\\n\\n if (passwordAssistant == null) {\\n await addAssistant();\\n }\\n\\n var creds = {\\n username: assistant.email,\\n password: passwordAssistant\\n };\\n const response = await server.post(\\\"/users/login\\\").send(creds);\\n assistantToken = response.body.token;\\n return assistantToken;\\n};\\n\\nconst addTourist = async () => {\\n if (!assistantToken) {\\n await getAssistantToken();\\n }\\n\\n const response = await server.post(\\\"/tourists\\\").set(\\\"Authorization\\\", `Bearer ${assistantToken}`).send(tourist).expect(200);\\n passwordUser = response.body.password;\\n};\\n\\nconst getTouristToken = async () => {\\n if (userToken) {\\n return userToken;\\n }\\n\\n if (passwordUser == null) {\\n await addTourist();\\n }\\n\\n var creds = {\\n username: tourist.email,\\n password: passwordUser\\n };\\n const response = await server.post(\\\"/users/login\\\").send(creds);\\n userToken = response.body.token;\\n return userToken;\\n};\\n\\nconst getExistingId = async () => {\\n const newTourist = {\\n \\\"firstname\\\": \\\"Namal\\\",\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\n \\\"email\\\": \\\"namalfernamdo@gmail.com\\\",\\n \\\"mobile\\\": \\\"981114844\\\",\\n \\\"rommnumber\\\": \\\"41\\\"\\n };\\n const tourist = new Users(newTourist);\\n await tourist.save();\\n return tourist._id.toString();\\n};\\n\\nconst getNonExistingId = async () => {\\n const newTourist = {\\n \\\"firstname\\\": \\\"Kamal\\\",\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\n \\\"email\\\": \\\"kamalfernamdo@gmail.com\\\",\\n \\\"username\\\": \\\"kamalfernamdo@gmail.com\\\"\\n };\\n const tourist = new Users(newTourist);\\n await tourist.save();\\n await tourist.remove();\\n return tourist._id.toString();\\n};\\n\\nconst getExistingIdAssistanct = async () => {\\n const newAssistant = {\\n \\\"firstname\\\": \\\"Kasun\\\",\\n \\\"lastname\\\": \\\"Perera\\\",\\n \\\"email\\\": \\\"kasun@gmail.com\\\"\\n };\\n const assistant = new Users(newAssistant);\\n await assistant.save();\\n return assistant._id.toString();\\n};\\n\\nconst getNonExistingIdAssistant = async () => {\\n const newAssistant = {\\n \\\"firstname\\\": \\\"Kamal\\\",\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\n \\\"email\\\": \\\"kamalfernamdo@gmail.com\\\"\\n };\\n const assistant = new Users(newAssistant);\\n await assistant.save();\\n await assistant.remove();\\n return assistant._id.toString();\\n};\\n\\nconst decodeToken = token => {\\n var decoded = jwt_decode(token);\\n return decoded;\\n};\\n\\nmodule.exports = {\\n getAdminToken,\\n getAssistantToken,\\n getTouristToken,\\n decodeToken,\\n addTourist,\\n getTouristToken,\\n getExistingId,\\n getNonExistingId,\\n getExistingIdAssistanct,\\n getNonExistingIdAssistant,\\n addAssistant\\n};\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVzZXJfaGVscGVyLmpzIl0sIm5hbWVzIjpbImFwcCIsInJlcXVpcmUiLCJzZXJ2ZXIiLCJqd3RfZGVjb2RlIiwiVXNlcnMiLCJ1c2VyVG9rZW4iLCJhc3Npc3RhbnRUb2tlbiIsImFkbWluVG9rZW4iLCJwYXNzd29yZEFzc2lzdGFudCIsInBhc3N3b3JkVXNlciIsImFkbWluIiwiYXNzaXN0YW50IiwidG91cmlzdCIsInNpZ251cEFkbWluIiwiZGVsZXRlTWFueSIsInBvc3QiLCJzZW5kIiwiZ2V0QWRtaW5Ub2tlbiIsImNyZWRzIiwidXNlcm5hbWUiLCJlbWFpbCIsInBhc3N3b3JkIiwicmVzcG9uc2UiLCJib2R5IiwidG9rZW4iLCJhZGRBc3Npc3RhbnQiLCJzZXQiLCJleHBlY3QiLCJnZXRBc3Npc3RhbnRUb2tlbiIsImFkZFRvdXJpc3QiLCJnZXRUb3VyaXN0VG9rZW4iLCJnZXRFeGlzdGluZ0lkIiwibmV3VG91cmlzdCIsInNhdmUiLCJfaWQiLCJ0b1N0cmluZyIsImdldE5vbkV4aXN0aW5nSWQiLCJyZW1vdmUiLCJnZXRFeGlzdGluZ0lkQXNzaXN0YW5jdCIsIm5ld0Fzc2lzdGFudCIsImdldE5vbkV4aXN0aW5nSWRBc3Npc3RhbnQiLCJkZWNvZGVUb2tlbiIsImRlY29kZWQiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxHQUFHLEdBQUdDLE9BQU8sQ0FBQyxXQUFELENBQW5COztBQUNBLE1BQU1DLE1BQU0sR0FBR0QsT0FBTyxDQUFDLFdBQUQsQ0FBUCxDQUFxQkQsR0FBckIsQ0FBZjs7QUFDQSxNQUFNRyxVQUFVLEdBQUdGLE9BQU8sQ0FBQyxZQUFELENBQTFCOztBQUNBLE1BQU1HLEtBQUssR0FBR0gsT0FBTyxDQUFDLG9CQUFELENBQXJCOztBQUVBLElBQUlJLFNBQUo7QUFDQSxJQUFJQyxjQUFKO0FBQ0EsSUFBSUMsVUFBSjtBQUNBLElBQUlDLGlCQUFKO0FBQ0EsSUFBSUMsWUFBSjtBQUVBLE1BQU1DLEtB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dGVudCI6WyJjb25zdCBhcHAgPSByZXF1aXJlKCcuLi8uLi9hcHAnKTtcclxuY29uc3Qgc2VydmVyID0gcmVxdWlyZShcInN1cGVydGVzdFwiKShhcHApO1xyXG5jb25zdCBqd3RfZGVjb2RlID0gcmVxdWlyZSgnand0LWRlY29kZScpO1xyXG5jb25zdCBVc2VycyA9IHJlcXVpcmUoJy4uLy4uL21vZGVscy91c2VycycpO1xyXG5cclxudmFyIHVzZXJUb2tlbjtcclxudmFyIGFzc2lzdGFudFRva2VuO1xyXG52YXIgYWRtaW5Ub2tlbjtcclxudmFyIHBhc3N3b3JkQXNzaXN0YW50O1xyXG52YXIgcGFzc3dvcmRVc2VyO1xyXG5cclxuY29uc3QgYWRtaW4gPSB7XHJcbiAgICBcImZpcnN0bmFtZVwiOiBcIkFkbWluXCIsXHJcbiAgICBcImxhc3RuYW1lXCI6IFwiQWRtaW5cIixcclxuICAgIFwiZW1haWxcIjogXCJhZG1pbkBnbWFpbC5jb21cIixcclxuICAgIFwicGFzc3dvcmRcIjogXCJhZG1pbi1wYXNzd29yZFwiXHJcbn07XHJcbmNvbnN0IGFzc2lzdGFudCA9IHtcclxuICAgIFwiZmlyc3RuYW1lXCI6IFwiUGFzYW5cIixcclxuICAgIFwibGFzdG5hbWVcIjogXCJGZXJuYW1kb1wiLFxyXG4gICAgXCJlbWFpbFwiOiBcInBhc2FuRmVybmFtZG9AZ21haWwuY29tXCJcclxufTtcclxuY29uc3QgdG91cmlzdCA9IHtcclxuICAgIFwiZmlyc3RuYW1lXCI6IFwiU3VuaWxcIixcclxuICAgIFwibGFzdG5hbWVcIjogXCJGZXJuYW1kb1wiLFxyXG4gICAgXCJlbWFpbFwiOiBcInN1bmlsRmVybmFtZG9AZ21haWwuY29tXCJcclxufTtcclxuXHJcbmNvbnN0IHNpZ251cEFkbWluID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgYXdhaXQgVXNlcnMuZGVsZXRlTWFueSh7fSk7XHJcbiAgICBhd2FpdCBzZXJ2ZXJcclxuICAgICAgICAucG9zdChcIi91c2Vycy9zaWdudXAvYWRtaW5cIilcclxuICAgICAgICAuc2VuZChhZG1pbik7XHJcbn07XHJcblxyXG5jb25zdCBnZXRBZG1pblRva2VuID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgaWYgKGFkbWluVG9rZW4pIHtcclxuICAgICAgICByZXR1cm4gYWRtaW5Ub2tlbjtcclxuICAgIH1cclxuICAgIGF3YWl0IHNpZ251cEFkbWluKCk7XHJcbiAgICB2YXIgY3JlZHMgPSB7XHJcbiAgICAgICAgdXNlcm5hbWU6IGFkbWluLmVtYWlsLFxyXG4gICAgICAgIHBhc3N3b3JkOiBhZG1pbi5wYXNzd29yZCxcclxuICAgIH07XHJcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHNlcnZlclxyXG4gICAgICAgIC5wb3N0KFwiL3VzZXJzL2xvZ2luXCIpXHJcbiAgICAgICAgLnNlbmQoY3JlZHMpO1xyXG4gICAgYWRtaW5Ub2tlbiA9IHJlc3BvbnNlLmJvZHkudG9rZW47XHJcbiAgICByZXR1cm4gYWRtaW5Ub2tlbjtcclxufVxyXG5cclxuY29uc3QgYWRkQXNzaXN0YW50ID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgaWYgKCFhZG1pblRva2VuKSB7XHJcbiAgICAgICAgYXdhaXQgZ2V0QWRtaW5Ub2tlbigpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBzZXJ2ZXJcclxuICAgICAgICAucG9zdChcIi9lbXBsb3llZXNcIilcclxuICAgICAgICAuc2V0KFwiQXV0aG9yaXphdGlvblwiLCBgQmVhcmVyICR7YWRtaW5Ub2tlbn1gKVxyXG4gICAgICAgIC5zZW5kKGFzc2lzdGFudClcclxuICAgICAgICAuZXhwZWN0KDIwMCk7XHJcbiAgICAgICAgICAgXHJcbiAgICBwYXNzd29yZEFzc2lzdGFudCA9ICByZXNwb25zZS5ib2R5LnBhc3N3b3JkO1xyXG59O1xyXG5cclxuY29uc3QgZ2V0QXNzaXN0YW50VG9rZW4gPSBhc3luYyAoKSA9PiB7XHJcbiAgICBpZiAoYXNzaXN0YW50VG9rZW4pIHtcclxuICAgICAgICByZXR1cm4gYXNzaXN0YW50VG9rZW47XHJcbiAgICB9XHJcbiAgICBpZihwYXNzd29yZEFzc2lzdGFudD09bnVsbCl7YXdhaXQgYWRkQXNzaXN0YW50KCk7fVxyXG4gICAgdmFyIGNyZWRzID0ge1xyXG4gICAgICAgIHVzZXJuYW1lOiBhc3Npc3RhbnQuZW1haWwsXHJcbiAgICAgICAgcGFzc3dvcmQ6IHBhc3N3b3JkQXNzaXN0YW50LFxyXG4gICAgfTtcclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgc2VydmVyXHJcbiAgICAgICAgLnBvc3QoXCIvdXNlcnMvbG9naW5cIilcclxuICAgICAgICAuc2VuZChjcmVkcyk7XHJcbiAgICBhc3Npc3RhbnRUb2tlbiA9IHJlc3BvbnNlLmJvZHkudG9rZW47XHJcbiAgICByZXR1cm4gYXNzaXN0YW50VG9rZW47XHJcbn1cclxuXHJcbmNvbnN0IGFkZFRvdXJpc3QgPSBhc3luYyAoKSA9PiB7XHJcbiAgICBpZiAoIWFzc2lzdGFudFRva2VuKSB7XHJcbiAgICAgICAgYXdhaXQgZ2V0QXNzaXN0YW50VG9rZW4oKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgc2VydmVyXHJcbiAgICAgICAgLnBvc3QoXCIvdG91cmlzdHNcIilcclxuICAgICAgICAuc2V0KFwiQXV0aG9yaXphdGlvblwiLCBgQmVhcmVyICR7YXNzaXN0YW50VG9rZW59YClcclxuICAgICAgICAuc2VuZCh0b3VyaXN0KVxyXG4gICAgICAgIC5leHBlY3QoMjAwKTtcclxuICAgIHBhc3N3b3JkVXNlcj0gIHJlc3BvbnNlLmJvZHkucGFzc3dvcmQ7XHJcbn07XHJcbiBcclxuXHJcbmNvbnN0IGdldFRvdXJpc3RUb2tlbiA9IGFzeW5jICgpID0+IHtcclxuICAgIGlmICh1c2VyVG9rZW4pIHtcclxuICAgICAgICByZXR1cm4gdXNlclRva2VuO1xyXG4gICAgfVxyXG4gICAgaWYocGFzc3dvcmRVc2VyID09IG51bGwpIHsgYXdhaXQgYWRkVG91cmlzdCgpO31cclxuICAgIHZhciBjcmVkcyA9IHtcclxuICAgICAgICB1c2VybmFtZTogdG91cmlzdC5lbWFpbCxcclxuICAgICAgICBwYXNzd29yZDogcGFzc3dvcmRVc2VyLFxyXG4gICAgfTtcclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgc2VydmVyXHJcbiAgICAgICAgLnBvc3QoXCIvdXNlcnMvbG9naW5cIilcclxuICAgICAgICAuc2VuZChjcmVkcyk7XHJcbiAgICB1c2VyVG9rZW4gPSByZXNwb25zZS5ib2R5LnRva2VuO1xyXG4gICAgcmV0dXJuIHVzZXJUb2tlbjtcclxufVxyXG5cclxuY29uc3QgZ2V0RXhpc3RpbmdJZCA9IGFzeW5jICgpID0+IHtcclxuICAgIGNvbnN0IG5ld1RvdXJpc3QgPSB7XHJcbiAgICAgICAgXCJmaXJzdG5hbWVcIjogXCJOYW1hbFwiLFxyXG4gICAgICAgIFwibGFzdG5hbWVcIjogXCJGZXJuYW1kb1wiLFxyXG4gICAgICAgIFwiZW1haWxcIjogXCJuYW1hbGZlcm5hbWRvQGdtYWlsLmNvbVwiLFxyXG4gICAgICAgIFwibW9iaWxlXCI6IFwiOTgxMTE0ODQ0XCIsXHJcbiAgICAgICAgXCJyb21tbnVtYmVyXCIgOiBcIjQxXCIsXHJcblxyXG4gICAgfVxyXG4gICAgY29uc3QgdG91cmlzdCA9IG5ldyBVc2VycyhuZXdUb3VyaXN0KTtcclxuICAgIGF3YWl0IHRvdXJpc3Quc2F2ZSgpO1xyXG5cclxuICAgIHJldHVybiB0b3VyaXN0Ll9pZC50b1N0cmluZygpO1xyXG5cclxuICAgIFxyXG59XHJcblxyXG5jb25zdCBnZXROb25FeGlzdGluZ0lkID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgY29uc3QgbmV3VG91cmlzdCA9IHtcclxuICAgICAgICBcImZpcnN0bmFtZVwiOiBcIkthbWFsXCIsXHJcbiAgICAgICAgXCJsYXN0bmFtZVwiOiBcIkZlcm5hbWRvXCIsXHJcbiAgICAgICAgXCJlbWFpbFwiOiBcImthbWFsZmVybmFtZG9AZ21haWwuY29tXCIsXHJcbiAgICAgICAgXCJ1c2VybmFtZVwiOiBcImthbWFsZmVybmFtZG9AZ21haWwuY29tXCJcclxuICAgIH1cclxuICAgIGNvbnN0IHRvdXJpc3QgPSBuZXcgVXNlcnMobmV3VG91cmlzdCk7XHJcbiAgICBhd2FpdCB0b3VyaXN0LnNhdmUoKTtcclxuICAgIGF3YWl0IHRvdXJpc3QucmVtb3ZlKCk7XHJcblxyXG4gICAgcmV0dXJuIHRvdXJpc3QuX2lkLnRvU3RyaW5nKCk7XHJcbn1cclxuXHJcbmNvbnN0IGdldEV4aXN0aW5nSWRBc3Npc3RhbmN0ID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgY29uc3QgbmV3QXNzaXN0YW50ID0ge1xyXG4gICAgICAgIFwiZmlyc3RuYW1lXCI6IFwiS2FzdW5cIixcclxuICAgICAgICBcImxhc3RuYW1lXCI6IFwiUGVyZXJhXCIsXHJcbiAgICAgICAgXCJlbWFpbFwiOiBcImthc3VuQGdtYWlsLmNvbVwiLFxyXG4gICAgfVxyXG4gICAgY29uc3QgYXNzaXN0YW50ID0gbmV3IFVzZXJzKG5ld0Fzc2lzdGFudCk7XHJcbiAgICBhd2FpdCBhc3Npc3RhbnQuc2F2ZSgpO1xyXG5cclxuICAgIHJldHVybiBhc3Npc3RhbnQuX2lkLnRvU3RyaW5nKCk7XHJcblxyXG4gICAgXHJcbn1cclxuXHJcbmNvbnN0IGdldE5vbkV4aXN0aW5nSWRBc3Npc3RhbnQgPSBhc3luYyAoKSA9PiB7XHJcbiAgICBjb25zdCBuZXdBc3Npc3RhbnQgPSB7XHJcbiAgICAgICAgXCJmaXJzdG5hbWVcIjogXCJLYW1hbFwiLFxyXG4gICAgICAgIFwibGFzdG5hbWVcIjogXCJGZXJuYW1kb1wiLFxyXG4gICAgICAgIFwiZW1haWxcIjogXCJrYW1hbGZlcm5hbWRvQGdtYWlsLmNvbVwiXHJcbiAgICB9XHJcbiAgICBjb25zdCBhc3Npc3RhbnQgPSBuZXcgVXNlcnMobmV3QXNzaXN0YW50KTtcclxuICAgIGF3YWl0IGFzc2lzdGFudC5zYXZlKCk7XHJcbiAgICBhd2FpdCBhc3Npc3RhbnQucmVtb3ZlKCk7XHJcblxyXG4gICAgcmV0dXJuIGFzc2lzdGFudC5faWQudG9TdHJpbmcoKTtcclxufVxyXG5cclxuY29uc3QgZGVjb2RlVG9rZW4gPSAodG9rZW4pID0+IHtcclxuICAgIHZhciBkZWNvZGVkID0gand0X2RlY29kZSh0b2tlbik7XHJcbiAgICByZXR1cm4gZGVjb2RlZDtcclxufVxyXG5cclxubW9kdWxlLmV4cG9ydHMgPSB7XHJcbiAgICBnZXRBZG1pblRva2VuLCBnZXRBc3Npc3RhbnRUb2tlbiwgZ2V0VG91cmlzdFRva2VuLCBkZWNvZGVUb2tlbiwgYWRkVG91cmlzdCwgZ2V0VG91cmlzdFRva2VuICxnZXRFeGlzdGluZ0lkICxnZXROb25FeGlzdGluZ0lkLCBnZXRFeGlzdGluZ0lkQXNzaXN0YW5jdCwgZ2V0Tm9uRXhpc3RpbmdJZEFzc2lzdGFudCwgYWRkQXNzaXN0YW50XHJcbn1cclxuIl19\",\"originalCode\":\"const app = require('../../app');\\r\\nconst server = require(\\\"supertest\\\")(app);\\r\\nconst jwt_decode = require('jwt-decode');\\r\\nconst Users = require('../../models/users');\\r\\n\\r\\nvar userToken;\\r\\nvar assistantToken;\\r\\nvar adminToken;\\r\\nvar passwordAssistant;\\r\\nvar passwordUser;\\r\\n\\r\\nconst admin = {\\r\\n \\\"firstname\\\": \\\"Admin\\\",\\r\\n \\\"lastname\\\": \\\"Admin\\\",\\r\\n \\\"email\\\": \\\"admin@gmail.com\\\",\\r\\n \\\"password\\\": \\\"admin-password\\\"\\r\\n};\\r\\nconst assistant = {\\r\\n \\\"firstname\\\": \\\"Pasan\\\",\\r\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\r\\n \\\"email\\\": \\\"pasanFernamdo@gmail.com\\\"\\r\\n};\\r\\nconst tourist = {\\r\\n \\\"firstname\\\": \\\"Sunil\\\",\\r\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\r\\n \\\"email\\\": \\\"sunilFernamdo@gmail.com\\\"\\r\\n};\\r\\n\\r\\nconst signupAdmin = async () => {\\r\\n await Users.deleteMany({});\\r\\n await server\\r\\n .post(\\\"/users/signup/admin\\\")\\r\\n .send(admin);\\r\\n};\\r\\n\\r\\nconst getAdminToken = async () => {\\r\\n if (adminToken) {\\r\\n return adminToken;\\r\\n }\\r\\n await signupAdmin();\\r\\n var creds = {\\r\\n username: admin.email,\\r\\n password: admin.password,\\r\\n };\\r\\n const response = await server\\r\\n .post(\\\"/users/login\\\")\\r\\n .send(creds);\\r\\n adminToken = response.body.token;\\r\\n return adminToken;\\r\\n}\\r\\n\\r\\nconst addAssistant = async () => {\\r\\n if (!adminToken) {\\r\\n await getAdminToken();\\r\\n }\\r\\n const response = await server\\r\\n .post(\\\"/employees\\\")\\r\\n .set(\\\"Authorization\\\", `Bearer ${adminToken}`)\\r\\n .send(assistant)\\r\\n .expect(200);\\r\\n \\r\\n passwordAssistant = response.body.password;\\r\\n};\\r\\n\\r\\nconst getAssistantToken = async () => {\\r\\n if (assistantToken) {\\r\\n return assistantToken;\\r\\n }\\r\\n if(passwordAssistant==null){await addAssistant();}\\r\\n var creds = {\\r\\n username: assistant.email,\\r\\n password: passwordAssistant,\\r\\n };\\r\\n const response = await server\\r\\n .post(\\\"/users/login\\\")\\r\\n .send(creds);\\r\\n assistantToken = response.body.token;\\r\\n return assistantToken;\\r\\n}\\r\\n\\r\\nconst addTourist = async () => {\\r\\n if (!assistantToken) {\\r\\n await getAssistantToken();\\r\\n }\\r\\n const response = await server\\r\\n .post(\\\"/tourists\\\")\\r\\n .set(\\\"Authorization\\\", `Bearer ${assistantToken}`)\\r\\n .send(tourist)\\r\\n .expect(200);\\r\\n passwordUser= response.body.password;\\r\\n};\\r\\n \\r\\n\\r\\nconst getTouristToken = async () => {\\r\\n if (userToken) {\\r\\n return userToken;\\r\\n }\\r\\n if(passwordUser == null) { await addTourist();}\\r\\n var creds = {\\r\\n username: tourist.email,\\r\\n password: passwordUser,\\r\\n };\\r\\n const response = await server\\r\\n .post(\\\"/users/login\\\")\\r\\n .send(creds);\\r\\n userToken = response.body.token;\\r\\n return userToken;\\r\\n}\\r\\n\\r\\nconst getExistingId = async () => {\\r\\n const newTourist = {\\r\\n \\\"firstname\\\": \\\"Namal\\\",\\r\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\r\\n \\\"email\\\": \\\"namalfernamdo@gmail.com\\\",\\r\\n \\\"mobile\\\": \\\"981114844\\\",\\r\\n \\\"rommnumber\\\" : \\\"41\\\",\\r\\n\\r\\n }\\r\\n const tourist = new Users(newTourist);\\r\\n await tourist.save();\\r\\n\\r\\n return tourist._id.toString();\\r\\n\\r\\n \\r\\n}\\r\\n\\r\\nconst getNonExistingId = async () => {\\r\\n const newTourist = {\\r\\n \\\"firstname\\\": \\\"Kamal\\\",\\r\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\r\\n \\\"email\\\": \\\"kamalfernamdo@gmail.com\\\",\\r\\n \\\"username\\\": \\\"kamalfernamdo@gmail.com\\\"\\r\\n }\\r\\n const tourist = new Users(newTourist);\\r\\n await tourist.save();\\r\\n await tourist.remove();\\r\\n\\r\\n return tourist._id.toString();\\r\\n}\\r\\n\\r\\nconst getExistingIdAssistanct = async () => {\\r\\n const newAssistant = {\\r\\n \\\"firstname\\\": \\\"Kasun\\\",\\r\\n \\\"lastname\\\": \\\"Perera\\\",\\r\\n \\\"email\\\": \\\"kasun@gmail.com\\\",\\r\\n }\\r\\n const assistant = new Users(newAssistant);\\r\\n await assistant.save();\\r\\n\\r\\n return assistant._id.toString();\\r\\n\\r\\n \\r\\n}\\r\\n\\r\\nconst getNonExistingIdAssistant = async () => {\\r\\n const newAssistant = {\\r\\n \\\"firstname\\\": \\\"Kamal\\\",\\r\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\r\\n \\\"email\\\": \\\"kamalfernamdo@gmail.com\\\"\\r\\n }\\r\\n const assistant = new Users(newAssistant);\\r\\n await assistant.save();\\r\\n await assistant.remove();\\r\\n\\r\\n return assistant._id.toString();\\r\\n}\\r\\n\\r\\nconst decodeToken = (token) => {\\r\\n var decoded = jwt_decode(token);\\r\\n return decoded;\\r\\n}\\r\\n\\r\\nmodule.exports = {\\r\\n getAdminToken, getAssistantToken, getTouristToken, decodeToken, addTourist, getTouristToken ,getExistingId ,getNonExistingId, getExistingIdAssistanct, getNonExistingIdAssistant, addAssistant\\r\\n}\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/79/user_helper_79166e334a8b342d542dc0574b645dc7.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2692\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\tests\\\\helpers\\\\user_helper.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":16466,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":16463,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"signupAdmin\",\"ranges\":[{\"startOffset\":714,\"endOffset\":815,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"getAdminToken\",\"ranges\":[{\"startOffset\":840,\"endOffset\":1126,\"count\":2},{\"startOffset\":872,\"endOffset\":1125,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"addAssistant\",\"ranges\":[{\"startOffset\":1150,\"endOffset\":1389,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"getAssistantToken\",\"ranges\":[{\"startOffset\":1418,\"endOffset\":1770,\"count\":2},{\"startOffset\":1454,\"endOffset\":1769,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"addTourist\",\"ranges\":[{\"startOffset\":1792,\"endOffset\":2035,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"getTouristToken\",\"ranges\":[{\"startOffset\":2062,\"endOffset\":2380,\"count\":1},{\"startOffset\":2093,\"endOffset\":2120,\"count\":0},{\"startOffset\":2150,\"endOffset\":2179,\"count\":0}],\"isBlockCoverage\":true},{\"functionName\":\"getExistingId\",\"ranges\":[{\"startOffset\":2405,\"endOffset\":2690,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getNonExistingId\",\"ranges\":[{\"startOffset\":2718,\"endOffset\":3021,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getExistingIdAssistanct\",\"ranges\":[{\"startOffset\":3056,\"endOffset\":3290,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getNonExistingIdAssistant\",\"ranges\":[{\"startOffset\":3327,\"endOffset\":3599,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"decodeToken\",\"ranges\":[{\"startOffset\":3622,\"endOffset\":3687,\"count\":0}],\"isBlockCoverage\":false}]}}]},{\"leaks\":false,\"numFailingTests\":0,\"numPassingTests\":9,\"numPendingTests\":0,\"numTodoTests\":0,\"openHandles\":[],\"perfStats\":{\"end\":1615204312152,\"runtime\":3173,\"slow\":false,\"start\":1615204308979},\"skipped\":false,\"snapshot\":{\"added\":0,\"fileDeleted\":false,\"matched\":0,\"unchecked\":0,\"unmatched\":0,\"updated\":0,\"uncheckedKeys\":[]},\"testFilePath\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\tests\\\\schedule.test.js\",\"testResults\":[{\"ancestorTitles\":[\"Schedule Model\"],\"duration\":1,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Schedule Model Schedule model exists\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"Schedule model exists\"},{\"ancestorTitles\":[\"GET /schedules\"],\"duration\":9,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"GET /schedules requires Authorization - 401\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"requires Authorization - 401\"},{\"ancestorTitles\":[\"GET /schedules\"],\"duration\":31,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"GET /schedules with Authorization - 200\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"with Authorization - 200\"},{\"ancestorTitles\":[\"POST /schedules\"],\"duration\":10,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"POST /schedules requires Authorization - 401\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"requires Authorization - 401\"},{\"ancestorTitles\":[\"POST /schedules\"],\"duration\":56,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"POST /schedules with Authorization - 200\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"with Authorization - 200\"},{\"ancestorTitles\":[\"POST /schedules\"],\"duration\":18,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"POST /schedules validation failed - 403\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"validation failed - 403\"},{\"ancestorTitles\":[\"PUT /schedule\"],\"duration\":12,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"PUT /schedule does not support - 403\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"does not support - 403\"},{\"ancestorTitles\":[\"DELETE /schedule\"],\"duration\":8,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"DELETE /schedule requires Authorization - 401\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"requires Authorization - 401\"},{\"ancestorTitles\":[\"DELETE /schedule\"],\"duration\":20,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"DELETE /schedule with Authorization - 200\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"with Authorization - 200\"}],\"failureMessage\":null,\"v8Coverage\":[{\"codeTransformResult\":{\"code\":\"var createError = require('http-errors');\\n\\nvar express = require('express');\\n\\nconst cors = require('cors');\\n\\nvar path = require('path');\\n\\nconst bodyParser = require('body-parser');\\n\\nconst expressValidator = require('express-validator');\\n\\nvar session = require('express-session');\\n\\nvar FileStore = require('session-file-store')(session);\\n\\nvar cookieParser = require('cookie-parser');\\n\\nvar logger = require('morgan');\\n\\nvar passport = require('passport');\\n\\nconst mongoose = require('mongoose');\\n\\nrequire('dotenv').config();\\n\\nvar userRouter = require('./routes/userRouter');\\n\\nvar employeeRouter = require('./routes/employeeRouter');\\n\\nvar placeRouter = require('./routes/placeRouter');\\n\\nvar scheduleRouter = require('./routes/scheduleRouter');\\n\\nvar touristRouter = require('./routes/touristRouter');\\n\\nvar dashboardRouter = require('./routes/dashboardRouter');\\n\\nvar app = express(); // view engine setup\\n\\napp.set('views', path.join(__dirname, 'views'));\\napp.set('view engine', 'jade');\\napp.use(cors());\\napp.use(passport.initialize());\\napp.use(bodyParser.json());\\napp.use(cookieParser('the-immortal-coils')); // app.use(logger('dev'));\\n\\napp.use(express.json());\\napp.use(express.urlencoded({\\n extended: false\\n}));\\napp.use(cookieParser()); // app.use(express.static('build'));\\n\\napp.use(express.static(path.join(__dirname, 'build')));\\nvar url = process.env.mongoUrl;\\n\\nif (process.env.NODE_ENV === 'test') {\\n url = process.env.testMongoUrl;\\n}\\n\\nmongoose.connect(url, {\\n useNewUrlParser: true,\\n useCreateIndex: true,\\n useUnifiedTopology: true\\n}).then(db => {}, err => {\\n if (err) {\\n console.log('👺 Error connecting to MongoDB');\\n } else {\\n console.log('✅ Connected to MongoDB');\\n }\\n});\\napp.use('/users', userRouter);\\napp.use('/employees', employeeRouter);\\napp.use('/places', placeRouter);\\napp.use('/schedules', scheduleRouter);\\napp.use('/tourists', touristRouter);\\napp.use('/dashboard', dashboardRouter); // catch 404 and forward to error handler\\n\\napp.use(function (req, res, next) {\\n next(createError(404));\\n}); // error handler\\n\\napp.use(function (err, req, res, next) {\\n // set locals, only providing error in development\\n res.locals.message = err.message;\\n res.locals.error = req.app.get('env') === 'development' ? err : {}; // render the error page\\n\\n res.status(err.status || 500);\\n res.render('error');\\n});\\nmodule.exports = app;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC5qcyJdLCJuYW1lcyI6WyJjcmVhdGVFcnJvciIsInJlcXVpcmUiLCJleHByZXNzIiwiY29ycyIsInBhdGgiLCJib2R5UGFyc2VyIiwiZXhwcmVzc1ZhbGlkYXRvciIsInNlc3Npb24iLCJGaWxlU3RvcmUiLCJjb29raWVQYXJzZXIiLCJsb2dnZXIiLCJwYXNzcG9ydCIsIm1vbmdvb3NlIiwiY29uZmlnIiwidXNlclJvdXRlciIsImVtcGxveWVlUm91dGVyIiwicGxhY2VSb3V0ZXIiLCJzY2hlZHVsZVJvdXRlciIsInRvdXJpc3RSb3V0ZXIiLCJkYXNoYm9hcmRSb3V0ZXIiLCJhcHAiLCJzZXQiLCJqb2luIiwiX19kaXJuYW1lIiwidXNlIiwiaW5pdGlhbGl6ZSIsImpzb24iLCJ1cmxlbmNvZGVkIiwiZXh0ZW5kZWQiLCJzdGF0aWMiLCJ1cmwiLCJwcm9jZXNzIiwiZW52IiwibW9uZ29VcmwiLCJOT0RFX0VOViIsInRlc3RNb25nb1VybCIsImNvbm5lY3QiLCJ1c2VOZXdVcmxQYXJzZXIiLCJ1c2VDcmVhdGVJbmRleCIsInVzZVVuaWZpZWRUb3BvbG9neSIsInRoZW4iLCJkYiIsImVyciIsImNvbnNvbGUiLCJsb2ciLCJyZXEiLCJyZXMiLCJuZXh0IiwibG9jYWxzIiwibWVzc2FnZSIsImVycm9yIiwiZ2V0Iiwic3RhdHVzIiwicmVuZGVyIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsSUFBSUEsV0FBVyxHQUFHQyxPQUFPLENBQUMsYUFBRCxDQUF6Qjs7QUFDQSxJQUFJQyxPQUFPLEdBQUdELE9BQU8sQ0FBQyxTQUFELENBQXJCOztBQUNBLE1BQU1FLElBQUksR0FBR0YsT0FBTyxDQUFDLE1BQUQsQ0FBcEI7O0FBQ0EsSUFBSUcsSUFBSSxHQUFHSCxPQUFPLENBQUMsTUFBRCxDQUFsQjs7QUFDQSxNQUFNSSxVQUFVLEdBQUdKLE9BQU8sQ0FBQyxhQUFELENBQTFCOztBQUNBLE1BQU1LLGdCQUFnQixHQUFHTCxPQUFPLENBQUMs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a0JWLFVBQWxCO0FBQ0FNLEdBQUcsQ0FBQ0ksR0FBSixDQUFRLFlBQVIsRUFBc0JULGNBQXRCO0FBQ0FLLEdBQUcsQ0FBQ0ksR0FBSixDQUFRLFNBQVIsRUFBbUJSLFdBQW5CO0FBQ0FJLEdBQUcsQ0FBQ0ksR0FBSixDQUFRLFlBQVIsRUFBc0JQLGNBQXRCO0FBQ0FHLEdBQUcsQ0FBQ0ksR0FBSixDQUFRLFdBQVIsRUFBcUJOLGFBQXJCO0FBQ0FFLEdBQUcsQ0FBQ0ksR0FBSixDQUFRLFlBQVIsRUFBc0JMLGVBQXRCLEUsQ0FFQTs7QUFDQUMsR0FBRyxDQUFDSSxHQUFKLENBQVEsVUFBVXFCLEdBQVYsRUFBZUMsR0FBZixFQUFvQkMsSUFBcEIsRUFBMEI7QUFDaENBLEVBQUFBLElBQUksQ0FBQy9DLFdBQVcsQ0FBQyxHQUFELENBQVosQ0FBSjtBQUNELENBRkQsRSxDQUlBOztBQUNBb0IsR0FBRyxDQUFDSSxHQUFKLENBQVEsVUFBVWtCLEdBQVYsRUFBZUcsR0FBZixFQUFvQkMsR0FBcEIsRUFBeUJDLElBQXpCLEVBQStCO0FBQ3JDO0FBQ0FELEVBQUFBLEdBQUcsQ0FBQ0UsTUFBSixDQUFXQyxPQUFYLEdBQXFCUCxHQUFHLENBQUNPLE9BQXpCO0FBQ0FILEVBQUFBLEdBQUcsQ0FBQ0UsTUFBSixDQUFXRSxLQUFYLEdBQW1CTCxHQUFHLENBQUN6QixHQUFKLENBQVErQixHQUFSLENBQVksS0FBWixNQUF1QixhQUF2QixHQUF1Q1QsR0FBdkMsR0FBNkMsRUFBaEUsQ0FIcUMsQ0FLckM7O0FBQ0FJLEVBQUFBLEdBQUcsQ0FBQ00sTUFBSixDQUFXVixHQUFHLENBQUNVLE1BQUosSUFBYyxHQUF6QjtBQUNBTixFQUFBQSxHQUFHLENBQUNPLE1BQUosQ0FBVyxPQUFYO0FBQ0QsQ0FSRDtBQVVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUJuQyxHQUFqQiIsInNvdXJjZXNDb250ZW50IjpbInZhciBjcmVhdGVFcnJvciA9IHJlcXVpcmUoJ2h0dHAtZXJyb3JzJyk7XHJcbnZhciBleHByZXNzID0gcmVxdWlyZSgnZXhwcmVzcycpO1xyXG5jb25zdCBjb3JzID0gcmVxdWlyZSgnY29ycycpO1xyXG52YXIgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcclxuY29uc3QgYm9keVBhcnNlciA9IHJlcXVpcmUoJ2JvZHktcGFyc2VyJylcclxuY29uc3QgZXhwcmVzc1ZhbGlkYXRvciA9IHJlcXVpcmUoJ2V4cHJlc3MtdmFsaWRhdG9yJylcclxudmFyIHNlc3Npb24gPSByZXF1aXJlKCdleHByZXNzLXNlc3Npb24nKTtcclxudmFyIEZpbGVTdG9yZSA9IHJlcXVpcmUoJ3Nlc3Npb24tZmlsZS1zdG9yZScpKHNlc3Npb24pO1xyXG52YXIgY29va2llUGFyc2VyID0gcmVxdWlyZSgnY29va2llLXBhcnNlcicpO1xyXG52YXIgbG9nZ2VyID0gcmVxdWlyZSgnbW9yZ2FuJyk7XHJcbnZhciBwYXNzcG9ydCA9IHJlcXVpcmUoJ3Bhc3Nwb3J0Jyk7XHJcbmNvbnN0IG1vbmdvb3NlID0gcmVxdWlyZSgnbW9uZ29vc2UnKTtcclxucmVxdWlyZSgnZG90ZW52JykuY29uZmlnKClcclxuXHJcbnZhciB1c2VyUm91dGVyID0gcmVxdWlyZSgnLi9yb3V0ZXMvdXNlclJvdXRlcicpO1xyXG52YXIgZW1wbG95ZWVSb3V0ZXIgPSByZXF1aXJlKCcuL3JvdXRlcy9lbXBsb3llZVJvdXRlcicpO1xyXG52YXIgcGxhY2VSb3V0ZXIgPSByZXF1aXJlKCcuL3JvdXRlcy9wbGFjZVJvdXRlcicpO1xyXG52YXIgc2NoZWR1bGVSb3V0ZXIgPSByZXF1aXJlKCcuL3JvdXRlcy9zY2hlZHVsZVJvdXRlcicpO1xyXG52YXIgdG91cmlzdFJvdXRlciA9IHJlcXVpcmUoJy4vcm91dGVzL3RvdXJpc3RSb3V0ZXInKTtcclxudmFyIGRhc2hib2FyZFJvdXRlciA9IHJlcXVpcmUoJy4vcm91dGVzL2Rhc2hib2FyZFJvdXRlcicpO1xyXG5cclxudmFyIGFwcCA9IGV4cHJlc3MoKTtcclxuXHJcbi8vIHZpZXcgZW5naW5lIHNldHVwXHJcbmFwcC5zZXQoJ3ZpZXdzJywgcGF0aC5qb2luKF9fZGlybmFtZSwgJ3ZpZXdzJykpO1xyXG5hcHAuc2V0KCd2aWV3IGVuZ2luZScsICdqYWRlJyk7XHJcbmFwcC51c2UoY29ycygpKTtcclxuYXBwLnVzZShwYXNzcG9ydC5pbml0aWFsaXplKCkpO1xyXG5cclxuYXBwLnVzZShib2R5UGFyc2VyLmpzb24oKSk7XHJcblxyXG5hcHAudXNlKGNvb2tpZVBhcnNlcigndGhlLWltbW9ydGFsLWNvaWxzJykpO1xyXG4vLyBhcHAudXNlKGxvZ2dlcignZGV2JykpO1xyXG5hcHAudXNlKGV4cHJlc3MuanNvbigpKTtcclxuYXBwLnVzZShleHByZXNzLnVybGVuY29kZWQoeyBleHRlbmRlZDogZmFsc2UgfSkpO1xyXG5hcHAudXNlKGNvb2tpZVBhcnNlcigpKTtcclxuLy8gYXBwLnVzZShleHByZXNzLnN0YXRpYygnYnVpbGQnKSk7XHJcbmFwcC51c2UoZXhwcmVzcy5zdGF0aWMocGF0aC5qb2luKF9fZGlybmFtZSwgJ2J1aWxkJykpKTtcclxuXHJcbnZhciB1cmwgPSBwcm9jZXNzLmVudi5tb25nb1VybDtcclxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAndGVzdCcpIHtcclxuICB1cmwgPSBwcm9jZXNzLmVudi50ZXN0TW9uZ29Vcmw7XHJcbn1cclxubW9uZ29vc2UuY29ubmVjdCh1cmwsIHsgdXNlTmV3VXJsUGFyc2VyOiB0cnVlLCB1c2VDcmVhdGVJbmRleDogdHJ1ZSwgdXNlVW5pZmllZFRvcG9sb2d5OiB0cnVlIH0pLnRoZW4oKGRiKSA9PiB7XHJcbn0sIChlcnIpID0+IHtcclxuICBpZiAoZXJyKSB7XHJcbiAgICBjb25zb2xlLmxvZygn8J+RuiAgRXJyb3IgY29ubmVjdGluZyB0byBNb25nb0RCJyk7XHJcbiAgfSBlbHNlIHtcclxuICAgIGNvbnNvbGUubG9nKCfinIUgIENvbm5lY3RlZCB0byBNb25nb0RCJyk7XHJcbiAgfVxyXG59KTtcclxuXHJcbmFwcC51c2UoJy91c2VycycsIHVzZXJSb3V0ZXIpO1xyXG5hcHAudXNlKCcvZW1wbG95ZWVzJywgZW1wbG95ZWVSb3V0ZXIpO1xyXG5hcHAudXNlKCcvcGxhY2VzJywgcGxhY2VSb3V0ZXIpO1xyXG5hcHAudXNlKCcvc2NoZWR1bGVzJywgc2NoZWR1bGVSb3V0ZXIpO1xyXG5hcHAudXNlKCcvdG91cmlzdHMnLCB0b3VyaXN0Um91dGVyKTtcclxuYXBwLnVzZSgnL2Rhc2hib2FyZCcsIGRhc2hib2FyZFJvdXRlcik7XHJcblxyXG4vLyBjYXRjaCA0MDQgYW5kIGZvcndhcmQgdG8gZXJyb3IgaGFuZGxlclxyXG5hcHAudXNlKGZ1bmN0aW9uIChyZXEsIHJlcywgbmV4dCkge1xyXG4gIG5leHQoY3JlYXRlRXJyb3IoNDA0KSk7XHJcbn0pO1xyXG5cclxuLy8gZXJyb3IgaGFuZGxlclxyXG5hcHAudXNlKGZ1bmN0aW9uIChlcnIsIHJlcSwgcmVzLCBuZXh0KSB7XHJcbiAgLy8gc2V0IGxvY2Fscywgb25seSBwcm92aWRpbmcgZXJyb3IgaW4gZGV2ZWxvcG1lbnRcclxuICByZXMubG9jYWxzLm1lc3NhZ2UgPSBlcnIubWVzc2FnZTtcclxuICByZXMubG9jYWxzLmVycm9yID0gcmVxLmFwcC5nZXQoJ2VudicpID09PSAnZGV2ZWxvcG1lbnQnID8gZXJyIDoge307XHJcblxyXG4gIC8vIHJlbmRlciB0aGUgZXJyb3IgcGFnZVxyXG4gIHJlcy5zdGF0dXMoZXJyLnN0YXR1cyB8fCA1MDApO1xyXG4gIHJlcy5yZW5kZXIoJ2Vycm9yJyk7XHJcbn0pO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBhcHA7XHJcbiJdfQ==\",\"originalCode\":\"var createError = require('http-errors');\\r\\nvar express = require('express');\\r\\nconst cors = require('cors');\\r\\nvar path = require('path');\\r\\nconst bodyParser = require('body-parser')\\r\\nconst expressValidator = require('express-validator')\\r\\nvar session = require('express-session');\\r\\nvar FileStore = require('session-file-store')(session);\\r\\nvar cookieParser = require('cookie-parser');\\r\\nvar logger = require('morgan');\\r\\nvar passport = require('passport');\\r\\nconst mongoose = require('mongoose');\\r\\nrequire('dotenv').config()\\r\\n\\r\\nvar userRouter = require('./routes/userRouter');\\r\\nvar employeeRouter = require('./routes/employeeRouter');\\r\\nvar placeRouter = require('./routes/placeRouter');\\r\\nvar scheduleRouter = require('./routes/scheduleRouter');\\r\\nvar touristRouter = require('./routes/touristRouter');\\r\\nvar dashboardRouter = require('./routes/dashboardRouter');\\r\\n\\r\\nvar app = express();\\r\\n\\r\\n// view engine setup\\r\\napp.set('views', path.join(__dirname, 'views'));\\r\\napp.set('view engine', 'jade');\\r\\napp.use(cors());\\r\\napp.use(passport.initialize());\\r\\n\\r\\napp.use(bodyParser.json());\\r\\n\\r\\napp.use(cookieParser('the-immortal-coils'));\\r\\n// app.use(logger('dev'));\\r\\napp.use(express.json());\\r\\napp.use(express.urlencoded({ extended: false }));\\r\\napp.use(cookieParser());\\r\\n// app.use(express.static('build'));\\r\\napp.use(express.static(path.join(__dirname, 'build')));\\r\\n\\r\\nvar url = process.env.mongoUrl;\\r\\nif (process.env.NODE_ENV === 'test') {\\r\\n url = process.env.testMongoUrl;\\r\\n}\\r\\nmongoose.connect(url, { useNewUrlParser: true, useCreateIndex: true, useUnifiedTopology: true }).then((db) => {\\r\\n}, (err) => {\\r\\n if (err) {\\r\\n console.log('👺 Error connecting to MongoDB');\\r\\n } else {\\r\\n console.log('✅ Connected to MongoDB');\\r\\n }\\r\\n});\\r\\n\\r\\napp.use('/users', userRouter);\\r\\napp.use('/employees', employeeRouter);\\r\\napp.use('/places', placeRouter);\\r\\napp.use('/schedules', scheduleRouter);\\r\\napp.use('/tourists', touristRouter);\\r\\napp.use('/dashboard', dashboardRouter);\\r\\n\\r\\n// catch 404 and forward to error handler\\r\\napp.use(function (req, res, next) {\\r\\n next(createError(404));\\r\\n});\\r\\n\\r\\n// error handler\\r\\napp.use(function (err, req, res, next) {\\r\\n // set locals, only providing error in development\\r\\n res.locals.message = err.message;\\r\\n res.locals.error = req.app.get('env') === 'development' ? err : {};\\r\\n\\r\\n // render the error page\\r\\n res.status(err.status || 500);\\r\\n res.render('error');\\r\\n});\\r\\n\\r\\nmodule.exports = app;\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/01/app_010e21b7416079df77678cc6cb70a530.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"1596\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\app.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":10626,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":10623,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1632,\"endOffset\":1640,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1642,\"endOffset\":1776,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":2049,\"endOffset\":2104,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":2133,\"endOffset\":2408,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"var express = require('express');\\n\\nvar userRouter = express.Router();\\n\\nconst bodyParser = require('body-parser');\\n\\nvar upload = require('../controllers/upload');\\n\\nconst {\\n checkSchema\\n} = require('express-validator');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nvar validationRules = require('../middleware/validation');\\n\\nvar userController = require('../controllers/userController');\\n\\nconst cors = require('./cors');\\n\\nuserRouter.use(bodyParser.json());\\nuserRouter.options('*', cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n});\\nuserRouter.post('/signup/admin', cors.corsWithOptions, userController.signupAdmin);\\nuserRouter.post('/login', cors.corsWithOptions, userController.login);\\nuserRouter.post('/changepassoword/:id', authenticate.verifyUser, userController.changePassoword);\\nuserRouter.post(\\\"/updateprofilepicture/:id\\\", authenticate.verifyUser, upload.UploadUserImage);\\nuserRouter.get('/logout', authenticate.verifyUser, userController.logout);\\nmodule.exports = userRouter;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVzZXJSb3V0ZXIuanMiXSwibmFtZXMiOlsiZXhwcmVzcyIsInJlcXVpcmUiLCJ1c2VyUm91dGVyIiwiUm91dGVyIiwiYm9keVBhcnNlciIsInVwbG9hZCIsImNoZWNrU2NoZW1hIiwiYXV0aGVudGljYXRlIiwidmFsaWRhdGlvblJ1bGVzIiwidXNlckNvbnRyb2xsZXIiLCJjb3JzIiwidXNlIiwianNvbiIsIm9wdGlvbnMiLCJjb3JzV2l0aE9wdGlvbnMiLCJyZXEiLCJyZXMiLCJzZW5kU3RhdHVzIiwicG9zdCIsInNpZ251cEFkbWluIiwibG9naW4iLCJ2ZXJpZnlVc2VyIiwiY2hhbmdlUGFzc293b3JkIiwiVXBsb2FkVXNlckltYWdlIiwiZ2V0IiwibG9nb3V0IiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsSUFBSUEsT0FBTyxHQUFHQyxPQUFPLENBQUMsU0FBRCxDQUFyQjs7QUFDQSxJQUFJQyxVQUFVLEdBQUdGLE9BQU8sQ0FBQ0csTUFBUixFQUFqQjs7QUFFQSxNQUFNQyxVQUFVLEdBQUdILE9BQU8sQ0FBQyxhQUFELENBQTFCOztBQUNBLElBQUlJLE1BQU0sR0FBR0osT0FBTyxDQUFDLHVCQUFELENBQXBCOztBQUNBLE1BQU07QUFBRUssRUFBQUE7QUFBRixJQUFrQkwsT0FBTyxDQUFDLG1CQUFELENBQS9COztBQUNBLElBQUlNLFlBQVksR0FBR04sT0FBTyxDQUFDLDRCQUFELENBQTFCOztBQUNBLElBQUlPLGVBQWUsR0FBR1AsT0FBTyxDQUFDLDBCQUFELENBQTdCOztBQUNBLElBQUlRLGNBQWMsR0FBR1IsT0FBTyxDQUFDLCtCQUFELENBQTVCOztBQUNBLE1BQU1TLElBQUksR0FBR1QsT0FBTyxDQUFDLFFBQUQsQ0FBcEI7O0FBRUFDLFVBQVUsQ0FBQ1MsR0FBWCxDQUFlUCxVQUFVLENBQUNRLElBQVgsRUFBZjtBQUVBVixVQUFVLENBQUNXLE9BQVgsQ0FBbUIsR0FBbkIsRUFBd0JILElBQUksQ0FBQ0ksZUFBN0IsRUFBOEMsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEtBQWM7QUFBRUEsRUFBQUEsR0FBRyxDQUFDQyxVQUFKLENBQWUsR0FBZjtBQUFzQixDQUFwRjtBQUVBZixVQUFVLENBQUNnQixJQUFYLENBQWdCLGVBQWhCLEVBQWlDUixJQUFJLENBQUNJLGVBQXRDLEVBQXVETCxjQUFjLENBQUNVLFdBQXRFO0FBRUFqQixVQUFVLENBQUNnQixJQUFYLENBQWdCLFFBQWhCLEVBQTBCUixJQUFJLENBQUNJLGVBQS9CLEVBQWdETCxjQUFjLENBQUNXLEtBQS9EO0FBRUFsQixVQUFVLENBQUNnQixJQUFYLENBQWdCLHNCQUFoQixFQUF1Q1gsWUFBWSxDQUFDYyxVQUFwRCxFQUFnRVosY0FBYyxDQUFDYSxlQUEvRTtBQUVBcEIsVUFBVSxDQUFDZ0IsSUFBWCxDQUFnQiwyQkFBaEIsRUFBNENYLFlBQVksQ0FBQ2MsVUFBekQsRUFBcUVoQixNQUFNLENBQUNrQixlQUE1RTtBQUVBckIsVUFBVSxDQUFDc0IsR0FBWCxDQUFlLFNBQWYsRUFBeUJqQixZQUFZLENBQUNjLFVBQXRDLEVBQWtEWixjQUFjLENBQUNnQixNQUFqRTtBQUVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUJ6QixVQUFqQiIsInNvdXJjZXNDb250ZW50IjpbInZhciBleHByZXNzID0gcmVxdWlyZSgnZXhwcmVzcycpO1xyXG52YXIgdXNlclJvdXRlciA9IGV4cHJlc3MuUm91dGVyKCk7XHJcblxyXG5jb25zdCBib2R5UGFyc2VyID0gcmVxdWlyZSgnYm9keS1wYXJzZXInKTtcclxudmFyIHVwbG9hZCA9IHJlcXVpcmUoJy4uL2NvbnRyb2xsZXJzL3VwbG9hZCcpO1xyXG5jb25zdCB7IGNoZWNrU2NoZW1hIH0gPSByZXF1aXJlKCdleHByZXNzLXZhbGlkYXRvcicpO1xyXG52YXIgYXV0aGVudGljYXRlID0gcmVxdWlyZSgnLi4vbWlkZGxld2FyZS9hdXRoZW50aWNhdGUnKTtcclxudmFyIHZhbGlkYXRpb25SdWxlcyA9IHJlcXVpcmUoJy4uL21pZGRsZXdhcmUvdmFsaWRhdGlvbicpO1xyXG52YXIgdXNlckNvbnRyb2xsZXIgPSByZXF1aXJlKCcuLi9jb250cm9sbGVycy91c2VyQ29udHJvbGxlcicpO1xyXG5jb25zdCBjb3JzID0gcmVxdWlyZSgnLi9jb3JzJyk7XHJcblxyXG51c2VyUm91dGVyLnVzZShib2R5UGFyc2VyLmpzb24oKSk7XHJcblxyXG51c2VyUm91dGVyLm9wdGlvbnMoJyonLCBjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcblxyXG51c2VyUm91dGVyLnBvc3QoJy9zaWdudXAvYWRtaW4nLCBjb3JzLmNvcnNXaXRoT3B0aW9ucywgdXNlckNvbnRyb2xsZXIuc2lnbnVwQWRtaW4pO1xyXG5cclxudXNlclJvdXRlci5wb3N0KCcvbG9naW4nLCBjb3JzLmNvcnNXaXRoT3B0aW9ucywgdXNlckNvbnRyb2xsZXIubG9naW4pO1xyXG5cclxudXNlclJvdXRlci5wb3N0KCcvY2hhbmdlcGFzc293b3JkLzppZCcsYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIHVzZXJDb250cm9sbGVyLmNoYW5nZVBhc3Nvd29yZCk7XHJcblxyXG51c2VyUm91dGVyLnBvc3QoXCIvdXBkYXRlcHJvZmlsZXBpY3R1cmUvOmlkXCIsYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIHVwbG9hZC5VcGxvYWRVc2VySW1hZ2UpO1xyXG5cclxudXNlclJvdXRlci5nZXQoJy9sb2dvdXQnLGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCB1c2VyQ29udHJvbGxlci5sb2dvdXQpO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSB1c2VyUm91dGVyO1xyXG4iXX0=\",\"originalCode\":\"var express = require('express');\\r\\nvar userRouter = express.Router();\\r\\n\\r\\nconst bodyParser = require('body-parser');\\r\\nvar upload = require('../controllers/upload');\\r\\nconst { checkSchema } = require('express-validator');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\nvar validationRules = require('../middleware/validation');\\r\\nvar userController = require('../controllers/userController');\\r\\nconst cors = require('./cors');\\r\\n\\r\\nuserRouter.use(bodyParser.json());\\r\\n\\r\\nuserRouter.options('*', cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n\\r\\nuserRouter.post('/signup/admin', cors.corsWithOptions, userController.signupAdmin);\\r\\n\\r\\nuserRouter.post('/login', cors.corsWithOptions, userController.login);\\r\\n\\r\\nuserRouter.post('/changepassoword/:id',authenticate.verifyUser, userController.changePassoword);\\r\\n\\r\\nuserRouter.post(\\\"/updateprofilepicture/:id\\\",authenticate.verifyUser, upload.UploadUserImage);\\r\\n\\r\\nuserRouter.get('/logout',authenticate.verifyUser, userController.logout);\\r\\n\\r\\nmodule.exports = userRouter;\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/a6/userRouter_a6221ff3be20743fe1c0fd1dc9fd8435.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2377\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\userRouter.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":4566,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":4563,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":606,\"endOffset\":646,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const sharp = require('sharp');\\n\\nconst uid = require('uid');\\n\\nconst fs = require('fs');\\n\\nconst Users = require('../models/users');\\n\\nconst Places = require('../models/visitingPlaces');\\n\\nconst uploadFile = async (req, res) => {\\n try {\\n await upload(req, res);\\n\\n if (req.file == undefined) {\\n return res.send(`You must select a file.`);\\n }\\n\\n return res.send(`File has been uploaded.`);\\n } catch (error) {\\n return res.send(`Error when trying upload image: ${error}`);\\n }\\n};\\n\\nconst UploadUserImage = async (req, res, next) => {\\n try {\\n const user_id = req.params._id;\\n const user = await Users.findById(user_id);\\n console.log(req);\\n let imageUrl;\\n\\n if (req.file) {\\n imageUrl = `${uid()}__${req.file.originalname}`;\\n let filename = `images/userImages/${imageUrl}`;\\n let previousImagePath = `images/userImages/${user.image}`;\\n const imageExist = fs.existsSync(previousImagePath);\\n\\n if (imageExist) {\\n deleteImage(previousImagePath);\\n }\\n\\n await sharp(req.file.path).rotate().resize(500, 500).toFile(filename);\\n fs.unlink(req.file.path, err => {\\n if (err) {}\\n });\\n } else {\\n imageUrl = 'profile.png';\\n }\\n\\n user.image = imageUrl;\\n await user.save();\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n message: 'Successfully updated profile picture'\\n });\\n } catch (err) {\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Error while updating profile picture'\\n });\\n }\\n};\\n\\nconst uploadPlaceImage = async (req, res, next) => {\\n try {\\n const place_id = req.params._id;\\n const place = await Places.findById(place_id);\\n let imageUrl;\\n\\n if (req.file) {\\n imageUrl = `${uid()}__${req.file.originalname}`;\\n let filename = `images/placeImages/${imageUrl}`;\\n let previousImagePath = `images/placeImages/${place.image}`;\\n const imageExist = fs.existsSync(previousImagePath);\\n\\n if (imageExist) {\\n deleteImage(previousImagePath);\\n }\\n\\n await sharp(req.file.path).rotate().resize(500, 500).toFile(filename);\\n fs.unlink(req.file.path, err => {\\n if (err) {}\\n });\\n } else {\\n imageUrl = 'image.png';\\n }\\n\\n place.image = imageUrl;\\n await place.save();\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n message: 'Successfully updated profile picture'\\n });\\n } catch (err) {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Error while updating profile picture'\\n });\\n }\\n};\\n\\nexports.UploadUserImage = UploadUserImage;\\nexports.uploadFile = uploadFile;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVwbG9hZC5qcyJdLCJuYW1lcyI6WyJzaGFycCIsInJlcXVpcmUiLCJ1aWQiLCJmcyIsIlVzZXJzIiwiUGxhY2VzIiwidXBsb2FkRmlsZSIsInJlcSIsInJlcyIsInVwbG9hZCIsImZpbGUiLCJ1bmRlZmluZWQiLCJzZW5kIiwiZXJyb3IiLCJVcGxvYWRVc2VySW1hZ2UiLCJuZXh0IiwidXNlcl9pZCIsInBhcmFtcyIsIl9pZCIsInVzZXIiLCJmaW5kQnlJZCIsImNvbnNvbGUiLCJsb2ciLCJpbWFnZVVybCIsIm9yaWdpbmFsbmFtZSIsImZpbGVuYW1lIiwicHJldmlvdXNJbWFnZVBhdGgiLCJpbWFnZSIsImltYWdlRXhpc3QiLCJleGlzdHNTeW5jIiwiZGVsZXRlSW1hZ2UiLCJwYXRoIiwicm90YXRlIiwicmVzaXplIiwidG9GaWxlIiwidW5saW5rIiwiZXJyIiwic2F2ZSIsInN0YXR1c0NvZGUiLCJzZXRIZWFkZXIiLCJqc29uIiwic3VjY2VzcyIsIm1lc3NhZ2UiLCJ1cGxvYWRQbGFjZUltYWdlIiwicGxhY2VfaWQiLCJwbGFjZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLEtBQUssR0FBR0MsT0FBTyxDQUFDLE9BQUQsQ0FBckI7O0FBQ0EsTUFBTUMsR0FBRyxHQUFHRCxPQUFPLENBQUMsS0FBRCxDQUFuQjs7QUFDQSxNQUFNRSxFQUFFLEdBQUdGLE9BQU8sQ0FBQyxJQUFELENBQWxCOztBQUNBLE1BQU1HLEtBQUssR0FBR0gsT0FBTyxDQUFDLGlCQUFELENBQXJCOztBQUNBLE1BQU1JLE1BQU0sR0FBR0osT0FBTyxDQUFDLDBCQUFELENBQXRCOztBQUVBLE1BQU1LLFVBQVUsR0FBRyxPQUFPQyxHQUFQLEVBQVlDLEdBQVosS0FBb0I7QUFDbkMsTUFBSTtBQUNBLFVBQU1DLE1BQU0sQ0FBQ0YsR0FBRCxFQUFNQyxHQUFOLENBQVo7O0FBRUEsUUFBSUQsR0FBRyxDQUFDRyxJQUFKLElBQVlDLFNBQWhCLEVBQTJCO0FBQ3ZCLGFBQU9I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Q0FBQzhCLFVBQUosR0FBaUIsR0FBakI7QUFDQTlCLElBQUFBLEdBQUcsQ0FBQytCLFNBQUosQ0FBYyxjQUFkLEVBQThCLGtCQUE5QjtBQUNBL0IsSUFBQUEsR0FBRyxDQUFDZ0MsSUFBSixDQUFTO0FBQUVDLE1BQUFBLE9BQU8sRUFBRSxLQUFYO0FBQWtCQyxNQUFBQSxPQUFPLEVBQUU7QUFBM0IsS0FBVDtBQUNIO0FBQ0osQ0F6Q0Q7O0FBMkNBSSxPQUFPLENBQUNoQyxlQUFSLEdBQTBCQSxlQUExQjtBQUNBZ0MsT0FBTyxDQUFDeEMsVUFBUixHQUFxQkEsVUFBckIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBzaGFycCA9IHJlcXVpcmUoJ3NoYXJwJyk7XHJcbmNvbnN0IHVpZCA9IHJlcXVpcmUoJ3VpZCcpO1xyXG5jb25zdCBmcyA9IHJlcXVpcmUoJ2ZzJyk7XHJcbmNvbnN0IFVzZXJzID0gcmVxdWlyZSgnLi4vbW9kZWxzL3VzZXJzJyk7XHJcbmNvbnN0IFBsYWNlcyA9IHJlcXVpcmUoJy4uL21vZGVscy92aXNpdGluZ1BsYWNlcycpXHJcblxyXG5jb25zdCB1cGxvYWRGaWxlID0gYXN5bmMgKHJlcSwgcmVzKSA9PiB7XHJcbiAgICB0cnkge1xyXG4gICAgICAgIGF3YWl0IHVwbG9hZChyZXEsIHJlcyk7XHJcblxyXG4gICAgICAgIGlmIChyZXEuZmlsZSA9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlcy5zZW5kKGBZb3UgbXVzdCBzZWxlY3QgYSBmaWxlLmApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHJlcy5zZW5kKGBGaWxlIGhhcyBiZWVuIHVwbG9hZGVkLmApO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICByZXR1cm4gcmVzLnNlbmQoYEVycm9yIHdoZW4gdHJ5aW5nIHVwbG9hZCBpbWFnZTogJHtlcnJvcn1gKTtcclxuICAgIH1cclxufTtcclxuXHJcbmNvbnN0IFVwbG9hZFVzZXJJbWFnZSA9IGFzeW5jIChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgICBjb25zdCB1c2VyX2lkID0gcmVxLnBhcmFtcy5faWQ7XHJcbiAgICAgICAgY29uc3QgdXNlciA9IGF3YWl0IFVzZXJzLmZpbmRCeUlkKHVzZXJfaWQpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKHJlcSk7XHJcblxyXG4gICAgICAgIGxldCBpbWFnZVVybDtcclxuICAgICAgICBpZiAocmVxLmZpbGUpIHtcclxuICAgICAgICAgICAgaW1hZ2VVcmwgPSBgJHt1aWQoKX1fXyR7cmVxLmZpbGUub3JpZ2luYWxuYW1lfWA7XHJcbiAgICAgICAgICAgIGxldCBmaWxlbmFtZSA9IGBpbWFnZXMvdXNlckltYWdlcy8ke2ltYWdlVXJsfWA7XHJcbiAgICAgICAgICAgIGxldCBwcmV2aW91c0ltYWdlUGF0aCA9IGBpbWFnZXMvdXNlckltYWdlcy8ke3VzZXIuaW1hZ2V9YDtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGltYWdlRXhpc3QgPSBmcy5leGlzdHNTeW5jKHByZXZpb3VzSW1hZ2VQYXRoKTtcclxuICAgICAgICAgICAgaWYgKGltYWdlRXhpc3QpIHtcclxuICAgICAgICAgICAgICAgIGRlbGV0ZUltYWdlKHByZXZpb3VzSW1hZ2VQYXRoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBhd2FpdCBzaGFycChyZXEuZmlsZS5wYXRoKVxyXG4gICAgICAgICAgICAgICAgLnJvdGF0ZSgpXHJcbiAgICAgICAgICAgICAgICAucmVzaXplKDUwMCwgNTAwKVxyXG4gICAgICAgICAgICAgICAgLnRvRmlsZShmaWxlbmFtZSk7XHJcblxyXG4gICAgICAgICAgICBmcy51bmxpbmsocmVxLmZpbGUucGF0aCwgKGVycikgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGltYWdlVXJsID0gJ3Byb2ZpbGUucG5nJztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHVzZXIuaW1hZ2UgPSBpbWFnZVVybDtcclxuICAgICAgICBhd2FpdCB1c2VyLnNhdmUoKTtcclxuXHJcblxyXG4gICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCBtZXNzYWdlOiAnU3VjY2Vzc2Z1bGx5IHVwZGF0ZWQgcHJvZmlsZSBwaWN0dXJlJyB9KTtcclxuXHJcbiAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDUwMDtcclxuICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogZmFsc2UsIG1lc3NhZ2U6ICdFcnJvciB3aGlsZSB1cGRhdGluZyBwcm9maWxlIHBpY3R1cmUnIH0pO1xyXG4gICAgfVxyXG59O1xyXG5cclxuY29uc3QgdXBsb2FkUGxhY2VJbWFnZSA9IGFzeW5jIChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgICBjb25zdCBwbGFjZV9pZCA9IHJlcS5wYXJhbXMuX2lkO1xyXG4gICAgICAgIGNvbnN0IHBsYWNlID0gYXdhaXQgUGxhY2VzLmZpbmRCeUlkKHBsYWNlX2lkKTtcclxuXHJcbiAgICAgICAgbGV0IGltYWdlVXJsO1xyXG4gICAgICAgIGlmIChyZXEuZmlsZSkge1xyXG4gICAgICAgICAgICBpbWFnZVVybCA9IGAke3VpZCgpfV9fJHtyZXEuZmlsZS5vcmlnaW5hbG5hbWV9YDtcclxuICAgICAgICAgICAgbGV0IGZpbGVuYW1lID0gYGltYWdlcy9wbGFjZUltYWdlcy8ke2ltYWdlVXJsfWA7XHJcbiAgICAgICAgICAgIGxldCBwcmV2aW91c0ltYWdlUGF0aCA9IGBpbWFnZXMvcGxhY2VJbWFnZXMvJHtwbGFjZS5pbWFnZX1gO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgaW1hZ2VFeGlzdCA9IGZzLmV4aXN0c1N5bmMocHJldmlvdXNJbWFnZVBhdGgpO1xyXG4gICAgICAgICAgICBpZiAoaW1hZ2VFeGlzdCkge1xyXG4gICAgICAgICAgICAgICAgZGVsZXRlSW1hZ2UocHJldmlvdXNJbWFnZVBhdGgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGF3YWl0IHNoYXJwKHJlcS5maWxlLnBhdGgpXHJcbiAgICAgICAgICAgICAgICAucm90YXRlKClcclxuICAgICAgICAgICAgICAgIC5yZXNpemUoNTAwLCA1MDApXHJcbiAgICAgICAgICAgICAgICAudG9GaWxlKGZpbGVuYW1lKTtcclxuXHJcbiAgICAgICAgICAgIGZzLnVubGluayhyZXEuZmlsZS5wYXRoLCAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaW1hZ2VVcmwgPSAnaW1hZ2UucG5nJztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHBsYWNlLmltYWdlID0gaW1hZ2VVcmw7XHJcbiAgICAgICAgYXdhaXQgcGxhY2Uuc2F2ZSgpO1xyXG5cclxuXHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA1MDA7XHJcbiAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIG1lc3NhZ2U6ICdTdWNjZXNzZnVsbHkgdXBkYXRlZCBwcm9maWxlIHBpY3R1cmUnIH0pO1xyXG5cclxuICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogJ0Vycm9yIHdoaWxlIHVwZGF0aW5nIHByb2ZpbGUgcGljdHVyZScgfSk7XHJcbiAgICB9XHJcbn07XHJcblxyXG5leHBvcnRzLlVwbG9hZFVzZXJJbWFnZSA9IFVwbG9hZFVzZXJJbWFnZTtcclxuZXhwb3J0cy51cGxvYWRGaWxlID0gdXBsb2FkRmlsZTsiXX0=\",\"originalCode\":\"const sharp = require('sharp');\\r\\nconst uid = require('uid');\\r\\nconst fs = require('fs');\\r\\nconst Users = require('../models/users');\\r\\nconst Places = require('../models/visitingPlaces')\\r\\n\\r\\nconst uploadFile = async (req, res) => {\\r\\n try {\\r\\n await upload(req, res);\\r\\n\\r\\n if (req.file == undefined) {\\r\\n return res.send(`You must select a file.`);\\r\\n }\\r\\n\\r\\n return res.send(`File has been uploaded.`);\\r\\n } catch (error) {\\r\\n return res.send(`Error when trying upload image: ${error}`);\\r\\n }\\r\\n};\\r\\n\\r\\nconst UploadUserImage = async (req, res, next) => {\\r\\n try {\\r\\n const user_id = req.params._id;\\r\\n const user = await Users.findById(user_id);\\r\\n console.log(req);\\r\\n\\r\\n let imageUrl;\\r\\n if (req.file) {\\r\\n imageUrl = `${uid()}__${req.file.originalname}`;\\r\\n let filename = `images/userImages/${imageUrl}`;\\r\\n let previousImagePath = `images/userImages/${user.image}`;\\r\\n\\r\\n const imageExist = fs.existsSync(previousImagePath);\\r\\n if (imageExist) {\\r\\n deleteImage(previousImagePath);\\r\\n }\\r\\n await sharp(req.file.path)\\r\\n .rotate()\\r\\n .resize(500, 500)\\r\\n .toFile(filename);\\r\\n\\r\\n fs.unlink(req.file.path, (err) => {\\r\\n if (err) {\\r\\n }\\r\\n })\\r\\n } else {\\r\\n imageUrl = 'profile.png';\\r\\n }\\r\\n\\r\\n user.image = imageUrl;\\r\\n await user.save();\\r\\n\\r\\n\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, message: 'Successfully updated profile picture' });\\r\\n\\r\\n } catch (err) {\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Error while updating profile picture' });\\r\\n }\\r\\n};\\r\\n\\r\\nconst uploadPlaceImage = async (req, res, next) => {\\r\\n try {\\r\\n const place_id = req.params._id;\\r\\n const place = await Places.findById(place_id);\\r\\n\\r\\n let imageUrl;\\r\\n if (req.file) {\\r\\n imageUrl = `${uid()}__${req.file.originalname}`;\\r\\n let filename = `images/placeImages/${imageUrl}`;\\r\\n let previousImagePath = `images/placeImages/${place.image}`;\\r\\n\\r\\n const imageExist = fs.existsSync(previousImagePath);\\r\\n if (imageExist) {\\r\\n deleteImage(previousImagePath);\\r\\n }\\r\\n await sharp(req.file.path)\\r\\n .rotate()\\r\\n .resize(500, 500)\\r\\n .toFile(filename);\\r\\n\\r\\n fs.unlink(req.file.path, (err) => {\\r\\n if (err) {\\r\\n }\\r\\n })\\r\\n } else {\\r\\n imageUrl = 'image.png';\\r\\n }\\r\\n\\r\\n place.image = imageUrl;\\r\\n await place.save();\\r\\n\\r\\n\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, message: 'Successfully updated profile picture' });\\r\\n\\r\\n } catch (err) {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Error while updating profile picture' });\\r\\n }\\r\\n};\\r\\n\\r\\nexports.UploadUserImage = UploadUserImage;\\r\\nexports.uploadFile = uploadFile;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/7c/upload_7c4638f764653e4bdd79a0ce3f99ff41.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2378\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\upload.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":12934,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":12931,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"uploadFile\",\"ranges\":[{\"startOffset\":293,\"endOffset\":580,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"UploadUserImage\",\"ranges\":[{\"startOffset\":607,\"endOffset\":1726,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"uploadPlaceImage\",\"ranges\":[{\"startOffset\":1754,\"endOffset\":2858,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"var mongoose = require('mongoose');\\n\\nvar Schema = mongoose.Schema;\\n\\nvar passportLocalMongoose = require('passport-local-mongoose');\\n\\nvar User = new Schema({\\n firstname: {\\n type: String,\\n required: true\\n },\\n lastname: {\\n type: String,\\n required: true\\n },\\n email: {\\n type: String,\\n required: true,\\n unique: true\\n },\\n mobile: {\\n type: String\\n },\\n role: {\\n type: String,\\n default: \\\"user\\\",\\n enum: ['user', 'moderater', 'admin']\\n },\\n image: {\\n type: String\\n },\\n suite: {\\n type: String,\\n enum: ['gold', 'luxury', 'platinum']\\n },\\n rommnumber: {\\n type: String\\n },\\n userstate: {\\n type: String,\\n default: \\\"in\\\",\\n enum: ['in', 'out']\\n }\\n}, {\\n timestamps: true\\n});\\nUser.plugin(passportLocalMongoose);\\nUser.index({\\n '$**': 'text'\\n});\\nvar Users = mongoose.model('User', User);\\nmodule.exports = Users;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVzZXJzLmpzIl0sIm5hbWVzIjpbIm1vbmdvb3NlIiwicmVxdWlyZSIsIlNjaGVtYSIsInBhc3Nwb3J0TG9jYWxNb25nb29zZSIsIlVzZXIiLCJmaXJzdG5hbWUiLCJ0eXBlIiwiU3RyaW5nIiwicmVxdWlyZWQiLCJsYXN0bmFtZSIsImVtYWlsIiwidW5pcXVlIiwibW9iaWxlIiwicm9sZSIsImRlZmF1bHQiLCJlbnVtIiwiaW1hZ2UiLCJzdWl0ZSIsInJvbW1udW1iZXIiLCJ1c2Vyc3RhdGUiLCJ0aW1lc3RhbXBzIiwicGx1Z2luIiwiaW5kZXgiLCJVc2VycyIsIm1vZGVsIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsSUFBSUEsUUFBUSxHQUFHQyxPQUFPLENBQUMsVUFBRCxDQUF0Qjs7QUFDQSxJQUFJQyxNQUFNLEdBQUdGLFFBQVEsQ0FBQ0UsTUFBdEI7O0FBRUEsSUFBSUMscUJBQXFCLEdBQUdGLE9BQU8sQ0FBQyx5QkFBRCxDQUFuQzs7QUFFQSxJQUFJRyxJQUFJLEdBQUcsSUFBSUYsTUFBSixDQUFXO0FBQ2xCRyxFQUFBQSxTQUFTLEVBQUU7QUFDUEMsSUFBQUEsSUFBSSxFQUFFQyxNQURDO0FBRVBDLElBQUFBLFFBQVEsRUFBRTtBQUZILEdBRE87QUFLbEJDLEVBQUFBLFFBQVEsRUFBRTtBQUNOSCxJQUFBQSxJQUFJLEVBQUVDLE1BREE7QUFFTkMsSUFBQUEsUUFBUSxFQUFFO0FBRkosR0FMUTtBQVNsQkUsRUFBQUEsS0FBSyxFQUFFO0FBQ0hKLElBQUFBLElBQUksRUFBRUMsTUFESDtBQUVIQyxJQUFBQSxRQUFRLEVBQUUsSUFGUDtBQUdIRyxJQUFBQSxNQUFNLEVBQUU7QUFITCxHQVRXO0FBY2xCQyxFQUFBQSxNQUFNLEVBQUM7QUFDSE4sSUFBQUEsSUFBSSxFQUFFQztBQURILEdBZFc7QUFpQmxCTSxFQUFBQSxJQUFJLEVBQ0o7QUFDSVAsSUFBQUEsSUFBSSxFQUFFQyxNQURWO0FBRUlPLElBQUFBLE9BQU8sRUFBRSxNQUZiO0FBR0lDLElBQUFBLElBQUksRUFBQyxDQUFDLE1BQUQsRUFBUSxXQUFSLEVBQW9CLE9BQXBCO0FBSFQsR0FsQmtCO0FBdUJsQkMsRUFBQUEsS0FBSyxFQUFFO0FBQ0hWLElBQUFBLElBQUksRUFBRUM7QUFESCxHQXZCVztBQTBCbEJVLEVBQUFBLEtBQUssRUFBQztBQUNGWCxJQUFBQSxJQUFJLEVBQUVDLE1BREo7QUFFRlEsSUFBQUEsSUFBSSxFQUFDLENBQUMsTUFBRCxFQUFRLFFBQVIsRUFBaUIsVUFBakI7QUFGSCxHQTFCWTtBQThCbEJHLEVBQUFBLFVBQVUsRUFBQztBQUNQWixJQUFBQSxJQUFJLEVBQUVDO0FBREMsR0E5Qk87QUFpQ2xCWSxFQUFBQSxTQUFTLEVBQUM7QUFDTmIsSUFBQUEsSUFBSSxFQUFFQyxNQURBO0FBRU5PLElBQUFBLE9BQU8sRUFBRSxJQUZIO0FBR05DLElBQUFBLElBQUksRUFBQyxDQUFDLElBQUQsRUFBTSxLQUFOO0FBSEM7QUFqQ1EsQ0FBWCxFQXNDUjtBQUNDSyxFQUFBQSxVQUFVLEVBQUU7QUFEYixDQXRDUSxDQUFYO0FBMENBaEIsSUFBSSxDQUFDaUIsTUFBTCxDQUFZbEIscUJBQVo7QUFDQUMsSUFBSSxDQUFDa0IsS0FBTCxDQUFXO0FBQUMsU0FBTTtBQUFQLENBQVg7QUFDQSxJQUFJQyxLQUFLLEdBQUd2QixRQUFRLENBQUN3QixLQUFULENBQWUsTUFBZixFQUF1QnBCLElBQXZCLENBQVo7QUFFQXFCLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQkgsS0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgbW9uZ29vc2UgPSByZXF1aXJlKCdtb25nb29zZScpO1xyXG52YXIgU2NoZW1hID0gbW9uZ29vc2UuU2NoZW1hO1xyXG5cclxudmFyIHBhc3Nwb3J0TG9jYWxNb25nb29zZSA9IHJlcXVpcmUoJ3Bhc3Nwb3J0LWxvY2FsLW1vbmdvb3NlJyk7XHJcblxyXG52YXIgVXNlciA9IG5ldyBTY2hlbWEoe1xyXG4gICAgZmlyc3RuYW1lOiB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlXHJcbiAgICB9LFxyXG4gICAgbGFzdG5hbWU6IHtcclxuICAgICAgICB0eXBlOiBTdHJpbmcsXHJcbiAgICAgICAgcmVxdWlyZWQ6IHRydWVcclxuICAgIH0sXHJcbiAgICBlbWFpbDoge1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgICB1bmlxdWU6IHRydWVcclxuICAgIH0sXHJcbiAgICBtb2JpbGU6e1xyXG4gICAgICAgIHR5cGU6IFN0cmluZ1xyXG4gICAgfSxcclxuICAgIHJvbGU6XHJcbiAgICB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICAgIGRlZmF1bHQ6IFwidXNlclwiLFxyXG4gICAgICAgIGVudW06Wyd1c2VyJywnbW9kZXJhdGVyJywnYWRtaW4nXVxyXG4gICAgfSxcclxuICAgIGltYWdlOiB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nXHJcbiAgICB9LFxyXG4gICAgc3VpdGU6e1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICBlbnVtOlsnZ29sZCcsJ2x1eHVyeScsJ3BsYXRpbnVtJ11cclxuICAgIH0sXHJcbiAgICByb21tbnVtYmVyOntcclxuICAgICAgICB0eXBlOiBTdHJpbmdcclxuICAgIH0sXHJcbiAgICB1c2Vyc3RhdGU6e1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICBkZWZhdWx0OiBcImluXCIsXHJcbiAgICAgICAgZW51bTpbJ2luJywnb3V0J11cclxuICAgIH1cclxufSwge1xyXG4gICAgdGltZXN0YW1wczogdHJ1ZVxyXG59KTtcclxuXHJcblVzZXIucGx1Z2luKHBhc3Nwb3J0TG9jYWxNb25nb29zZSk7XHJcblVzZXIuaW5kZXgoeyckKionOid0ZXh0J30pO1xyXG52YXIgVXNlcnMgPSBtb25nb29zZS5tb2RlbCgnVXNlcicsIFVzZXIpO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBVc2VyczsiXX0=\",\"originalCode\":\"var mongoose = require('mongoose');\\r\\nvar Schema = mongoose.Schema;\\r\\n\\r\\nvar passportLocalMongoose = require('passport-local-mongoose');\\r\\n\\r\\nvar User = new Schema({\\r\\n firstname: {\\r\\n type: String,\\r\\n required: true\\r\\n },\\r\\n lastname: {\\r\\n type: String,\\r\\n required: true\\r\\n },\\r\\n email: {\\r\\n type: String,\\r\\n required: true,\\r\\n unique: true\\r\\n },\\r\\n mobile:{\\r\\n type: String\\r\\n },\\r\\n role:\\r\\n {\\r\\n type: String,\\r\\n default: \\\"user\\\",\\r\\n enum:['user','moderater','admin']\\r\\n },\\r\\n image: {\\r\\n type: String\\r\\n },\\r\\n suite:{\\r\\n type: String,\\r\\n enum:['gold','luxury','platinum']\\r\\n },\\r\\n rommnumber:{\\r\\n type: String\\r\\n },\\r\\n userstate:{\\r\\n type: String,\\r\\n default: \\\"in\\\",\\r\\n enum:['in','out']\\r\\n }\\r\\n}, {\\r\\n timestamps: true\\r\\n});\\r\\n\\r\\nUser.plugin(passportLocalMongoose);\\r\\nUser.index({'$**':'text'});\\r\\nvar Users = mongoose.model('User', User);\\r\\n\\r\\nmodule.exports = Users;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/fa/users_fa250a82bd410ffb1909f920e93eed19.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2448\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\models\\\\users.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":4633,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":4630,\"count\":1}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const mongoose = require('mongoose');\\n\\nconst Schema = mongoose.Schema;\\nconst pointSchema = new Schema({\\n type: {\\n type: String,\\n enum: ['Point'],\\n required: true,\\n default: 'Point'\\n },\\n coordinates: {\\n type: [Number],\\n required: true\\n }\\n});\\nconst placeSchema = new Schema({\\n name: {\\n type: String,\\n required: true,\\n unique: true\\n },\\n description: {\\n type: String,\\n required: true\\n },\\n location: {\\n type: pointSchema,\\n index: '2dsphere',\\n required: true\\n },\\n distance: {\\n type: String,\\n required: true\\n },\\n timeToReach: {\\n type: String,\\n required: true\\n },\\n image: {\\n type: String\\n },\\n travellingMethods: [{\\n type: String,\\n enum: ['Bus', 'Car', 'Train', 'Threewheeler', 'Foot']\\n }]\\n}, {\\n timestamps: true\\n});\\nplaceSchema.index({\\n '$**': 'text'\\n});\\nvar Places = mongoose.model('Place', placeSchema);\\nmodule.exports = Places;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInZpc2l0aW5nUGxhY2VzLmpzIl0sIm5hbWVzIjpbIm1vbmdvb3NlIiwicmVxdWlyZSIsIlNjaGVtYSIsInBvaW50U2NoZW1hIiwidHlwZSIsIlN0cmluZyIsImVudW0iLCJyZXF1aXJlZCIsImRlZmF1bHQiLCJjb29yZGluYXRlcyIsIk51bWJlciIsInBsYWNlU2NoZW1hIiwibmFtZSIsInVuaXF1ZSIsImRlc2NyaXB0aW9uIiwibG9jYXRpb24iLCJpbmRleCIsImRpc3RhbmNlIiwidGltZVRvUmVhY2giLCJpbWFnZSIsInRyYXZlbGxpbmdNZXRob2RzIiwidGltZXN0YW1wcyIsIlBsYWNlcyIsIm1vZGVsIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsUUFBUSxHQUFHQyxPQUFPLENBQUMsVUFBRCxDQUF4Qjs7QUFDQSxNQUFNQyxNQUFNLEdBQUdGLFFBQVEsQ0FBQ0UsTUFBeEI7QUFFQSxNQUFNQyxXQUFXLEdBQUcsSUFBSUQsTUFBSixDQUFXO0FBQzNCRSxFQUFBQSxJQUFJLEVBQUU7QUFDRkEsSUFBQUEsSUFBSSxFQUFFQyxNQURKO0FBRUZDLElBQUFBLElBQUksRUFBRSxDQUFDLE9BQUQsQ0FGSjtBQUdGQyxJQUFBQSxRQUFRLEVBQUUsSUFIUjtBQUlGQyxJQUFBQSxPQUFPLEVBQUU7QUFKUCxHQURxQjtBQU8zQkMsRUFBQUEsV0FBVyxFQUFFO0FBQ1RMLElBQUFBLElBQUksRUFBRSxDQUFDTSxNQUFELENBREc7QUFFVEgsSUFBQUEsUUFBUSxFQUFFO0FBRkQ7QUFQYyxDQUFYLENBQXBCO0FBYUEsTUFBTUksV0FBVyxHQUFHLElBQUlULE1BQUosQ0FBVztBQUMzQlUsRUFBQUEsSUFBSSxFQUFFO0FBQ0ZSLElBQUFBLElBQUksRUFBRUMsTUFESjtBQUVGRSxJQUFBQSxRQUFRLEVBQUUsSUFGUjtBQUdGTSxJQUFBQSxNQUFNLEVBQUU7QUFITixHQURxQjtBQU0zQkMsRUFBQUEsV0FBVyxFQUFFO0FBQ1RWLElBQUFBLElBQUksRUFBRUMsTUFERztBQUVURSxJQUFBQSxRQUFRLEVBQUU7QUFGRCxHQU5jO0FBVTNCUSxFQUFBQSxRQUFRLEVBQUU7QUFDTlgsSUFBQUEsSUFBSSxFQUFFRCxXQURBO0FBRU5hLElBQUFBLEtBQUssRUFBRSxVQUZEO0FBR05ULElBQUFBLFFBQVEsRUFBRTtBQUhKLEdBVmlCO0FBZTNCVSxFQUFBQSxRQUFRLEVBQUU7QUFDTmIsSUFBQUEsSUFBSSxFQUFFQyxNQURBO0FBRU5FLElBQUFBLFFBQVEsRUFBRTtBQUZKLEdBZmlCO0FBbUIzQlcsRUFBQUEsV0FBVyxFQUFFO0FBQ1RkLElBQUFBLElBQUksRUFBRUMsTUFERztBQUVURSxJQUFBQSxRQUFRLEVBQUU7QUFGRCxHQW5CYztBQXVCM0JZLEVBQUFBLEtBQUssRUFDTDtBQUNJZixJQUFBQSxJQUFJLEVBQUVDO0FBRFYsR0F4QjJCO0FBMkIzQmUsRUFBQUEsaUJBQWlCLEVBQUUsQ0FDZjtBQUNJaEIsSUFBQUEsSUFBSSxFQUFFQyxNQURWO0FBRUlDLElBQUFBLElBQUksRUFBRSxDQUFDLEtBQUQsRUFBUSxLQUFSLEVBQWUsT0FBZixFQUF3QixjQUF4QixFQUF3QyxNQUF4QztBQUZWLEdBRGU7QUEzQlEsQ0FBWCxFQWlDakI7QUFDQ2UsRUFBQUEsVUFBVSxFQUFFO0FBRGIsQ0FqQ2lCLENBQXBCO0FBcUNBVixXQUFXLENBQUNLLEtBQVosQ0FBa0I7QUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJTSxNQUFNLEdBQUd0QixRQUFRLENBQUN1QixLQUFULENBQWUsT0FBZixFQUF3QlosV0FBeEIsQ0FBYjtBQUVBYSxNQUFNLENBQUNDLE9BQVAsR0FBaUJILE1BQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgbW9uZ29vc2UgPSByZXF1aXJlKCdtb25nb29zZScpO1xyXG5jb25zdCBTY2hlbWEgPSBtb25nb29zZS5TY2hlbWE7XHJcblxyXG5jb25zdCBwb2ludFNjaGVtYSA9IG5ldyBTY2hlbWEoe1xyXG4gICAgdHlwZToge1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICBlbnVtOiBbJ1BvaW50J10sXHJcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXHJcbiAgICAgICAgZGVmYXVsdDogJ1BvaW50J1xyXG4gICAgfSxcclxuICAgIGNvb3JkaW5hdGVzOiB7XHJcbiAgICAgICAgdHlwZTogW051bWJlcl0sXHJcbiAgICAgICAgcmVxdWlyZWQ6IHRydWVcclxuICAgIH1cclxufSk7XHJcblxyXG5jb25zdCBwbGFjZVNjaGVtYSA9IG5ldyBTY2hlbWEoe1xyXG4gICAgbmFtZToge1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgICB1bmlxdWU6IHRydWVcclxuICAgIH0sXHJcbiAgICBkZXNjcmlwdGlvbjoge1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICByZXF1aXJlZDogdHJ1ZVxyXG4gICAgfSxcclxuICAgIGxvY2F0aW9uOiB7XHJcbiAgICAgICAgdHlwZTogcG9pbnRTY2hlbWEsXHJcbiAgICAgICAgaW5kZXg6ICcyZHNwaGVyZScsXHJcbiAgICAgICAgcmVxdWlyZWQ6IHRydWVcclxuICAgIH0sXHJcbiAgICBkaXN0YW5jZToge1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICByZXF1aXJlZDogdHJ1ZVxyXG4gICAgfSxcclxuICAgIHRpbWVUb1JlYWNoOiB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlXHJcbiAgICB9LFxyXG4gICAgaW1hZ2U6XHJcbiAgICB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgfSxcclxuICAgIHRyYXZlbGxpbmdNZXRob2RzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXHJcbiAgICAgICAgICAgIGVudW06IFsnQnVzJywgJ0NhcicsICdUcmFpbicsICdUaHJlZXdoZWVsZXInLCAnRm9vdCddXHJcbiAgICAgICAgfVxyXG4gICAgXVxyXG59LCB7XHJcbiAgICB0aW1lc3RhbXBzOiB0cnVlXHJcbn0pO1xyXG5cclxucGxhY2VTY2hlbWEuaW5kZXgoeyAnJCoqJzogJ3RleHQnIH0pO1xyXG52YXIgUGxhY2VzID0gbW9uZ29vc2UubW9kZWwoJ1BsYWNlJywgcGxhY2VTY2hlbWEpO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBQbGFjZXM7Il19\",\"originalCode\":\"const mongoose = require('mongoose');\\r\\nconst Schema = mongoose.Schema;\\r\\n\\r\\nconst pointSchema = new Schema({\\r\\n type: {\\r\\n type: String,\\r\\n enum: ['Point'],\\r\\n required: true,\\r\\n default: 'Point'\\r\\n },\\r\\n coordinates: {\\r\\n type: [Number],\\r\\n required: true\\r\\n }\\r\\n});\\r\\n\\r\\nconst placeSchema = new Schema({\\r\\n name: {\\r\\n type: String,\\r\\n required: true,\\r\\n unique: true\\r\\n },\\r\\n description: {\\r\\n type: String,\\r\\n required: true\\r\\n },\\r\\n location: {\\r\\n type: pointSchema,\\r\\n index: '2dsphere',\\r\\n required: true\\r\\n },\\r\\n distance: {\\r\\n type: String,\\r\\n required: true\\r\\n },\\r\\n timeToReach: {\\r\\n type: String,\\r\\n required: true\\r\\n },\\r\\n image:\\r\\n {\\r\\n type: String,\\r\\n },\\r\\n travellingMethods: [\\r\\n {\\r\\n type: String,\\r\\n enum: ['Bus', 'Car', 'Train', 'Threewheeler', 'Foot']\\r\\n }\\r\\n ]\\r\\n}, {\\r\\n timestamps: true\\r\\n});\\r\\n\\r\\nplaceSchema.index({ '$**': 'text' });\\r\\nvar Places = mongoose.model('Place', placeSchema);\\r\\n\\r\\nmodule.exports = Places;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/c4/visitingPlaces_c4ccc91c117df8c4aeada72a82534688.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2459\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\models\\\\visitingPlaces.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":4920,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":4917,\"count\":1}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"var passport = require('passport');\\n\\nvar LocalStrategy = require('passport-local').Strategy;\\n\\nvar User = require('../models/users');\\n\\nvar JwtStrategy = require('passport-jwt').Strategy;\\n\\nvar ExtractJwt = require('passport-jwt').ExtractJwt;\\n\\nvar jwt = require('jsonwebtoken');\\n\\npassport.use(new LocalStrategy(User.authenticate()));\\npassport.serializeUser(User.serializeUser());\\npassport.deserializeUser(User.deserializeUser());\\n\\nexports.getToken = user => {\\n return jwt.sign(user, process.env.secretKey, {\\n expiresIn: 3600\\n });\\n};\\n\\nvar opts = {};\\nopts.jwtFromRequest = ExtractJwt.fromAuthHeaderAsBearerToken();\\nopts.secretOrKey = process.env.secretKey;\\nexports.jwtPassport = passport.use(new JwtStrategy(opts, (jwt_payload, done) => {\\n User.findOne({\\n _id: jwt_payload._id\\n }, (err, user) => {\\n if (err) {\\n return done(err, false);\\n } else if (user) {\\n return done(null, user);\\n } else {\\n return done(null, false);\\n }\\n });\\n}));\\nexports.verifyUser = passport.authenticate('jwt', {\\n session: false\\n});\\n\\nexports.verifyAdmin = (req, res, next) => {\\n if (req.user.role == 'admin') {\\n return next();\\n } else if (req.user.role != 'admin') {\\n err = new Error('You are not authorized to perform this operation!');\\n err.status = 403;\\n return next(err);\\n } else {\\n err = new Error('Admin Verification Failed!');\\n err.status = 500;\\n return next(err);\\n }\\n};\\n\\nexports.verifyModerater = (req, res, next) => {\\n if (req.user.role != 'user') {\\n return next();\\n } else if (req.user.role == 'user') {\\n err = new Error('You are not authorized to perform this operation!');\\n err.status = 403;\\n return next(err);\\n }\\n};\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF1dGhlbnRpY2F0ZS5qcyJdLCJuYW1lcyI6WyJwYXNzcG9ydCIsInJlcXVpcmUiLCJMb2NhbFN0cmF0ZWd5IiwiU3RyYXRlZ3kiLCJVc2VyIiwiSnd0U3RyYXRlZ3kiLCJFeHRyYWN0Snd0Iiwiand0IiwidXNlIiwiYXV0aGVudGljYXRlIiwic2VyaWFsaXplVXNlciIsImRlc2VyaWFsaXplVXNlciIsImV4cG9ydHMiLCJnZXRUb2tlbiIsInVzZXIiLCJzaWduIiwicHJvY2VzcyIsImVudiIsInNlY3JldEtleSIsImV4cGlyZXNJbiIsIm9wdHMiLCJqd3RGcm9tUmVxdWVzdCIsImZyb21BdXRoSGVhZGVyQXNCZWFyZXJUb2tlbiIsInNlY3JldE9yS2V5Iiwiand0UGFzc3BvcnQiLCJqd3RfcGF5bG9hZCIsImRvbmUiLCJmaW5kT25lIiwiX2lkIiwiZXJyIiwidmVyaWZ5VXNlciIsInNlc3Npb24iLCJ2ZXJpZnlBZG1pbiIsInJlcSIsInJlcyIsIm5leHQiLCJyb2xlIiwiRXJyb3IiLCJzdGF0dXMiLCJ2ZXJpZnlNb2RlcmF0ZXIiXSwibWFwcGluZ3MiOiJBQUFBLElBQUlBLFFBQVEsR0FBR0MsT0FBTyxDQUFDLFVBQUQsQ0FBdEI7O0FBQ0EsSUFBSUMsYUFBYSxHQUFHRCxPQUFPLENBQUMsZ0JBQUQsQ0FBUCxDQUEwQkUsUUFBOUM7O0FBQ0EsSUFBSUMsSUFBSSxHQUFHSCxPQUFPLENBQUMsaUJBQUQsQ0FBbEI7O0FBRUEsSUFBSUksV0FBVyxHQUFHSixPQUFPLENBQUMsY0FBRCxDQUFQLENBQXdCRSxRQUExQzs7QUFDQSxJQUFJRyxVQUFVLEdBQUdMLE9BQU8sQ0FBQyxjQUFELENBQVAsQ0FBd0JLLFVBQXpDOztBQUNBLElBQUlDLEdBQUcsR0FBR04sT0FBTyxDQUFDLGNBQUQsQ0FBakI7O0FBR0FELFFBQVEsQ0FBQ1EsR0FBVCxDQUFhLElBQUlOLGFBQUosQ0FBa0JFLElBQUksQ0FBQ0ssWUFBTCxFQUFsQixDQUFiO0FBQ0FULFFBQVEsQ0FBQ1UsYUFB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dCI6WyJ2YXIgcGFzc3BvcnQgPSByZXF1aXJlKCdwYXNzcG9ydCcpO1xyXG52YXIgTG9jYWxTdHJhdGVneSA9IHJlcXVpcmUoJ3Bhc3Nwb3J0LWxvY2FsJykuU3RyYXRlZ3k7XHJcbnZhciBVc2VyID0gcmVxdWlyZSgnLi4vbW9kZWxzL3VzZXJzJyk7XHJcblxyXG52YXIgSnd0U3RyYXRlZ3kgPSByZXF1aXJlKCdwYXNzcG9ydC1qd3QnKS5TdHJhdGVneTtcclxudmFyIEV4dHJhY3RKd3QgPSByZXF1aXJlKCdwYXNzcG9ydC1qd3QnKS5FeHRyYWN0Snd0O1xyXG52YXIgand0ID0gcmVxdWlyZSgnanNvbndlYnRva2VuJyk7XHJcblxyXG5cclxucGFzc3BvcnQudXNlKG5ldyBMb2NhbFN0cmF0ZWd5KFVzZXIuYXV0aGVudGljYXRlKCkpKTtcclxucGFzc3BvcnQuc2VyaWFsaXplVXNlcihVc2VyLnNlcmlhbGl6ZVVzZXIoKSk7XHJcbnBhc3Nwb3J0LmRlc2VyaWFsaXplVXNlcihVc2VyLmRlc2VyaWFsaXplVXNlcigpKTtcclxuXHJcbmV4cG9ydHMuZ2V0VG9rZW4gPSAodXNlcikgPT4ge1xyXG4gICAgcmV0dXJuIGp3dC5zaWduKHVzZXIsIHByb2Nlc3MuZW52LnNlY3JldEtleSxcclxuICAgICAgICB7IGV4cGlyZXNJbjogMzYwMCB9KTtcclxufTtcclxuXHJcbnZhciBvcHRzID0ge307XHJcbm9wdHMuand0RnJvbVJlcXVlc3QgPSBFeHRyYWN0Snd0LmZyb21BdXRoSGVhZGVyQXNCZWFyZXJUb2tlbigpO1xyXG5vcHRzLnNlY3JldE9yS2V5ID0gcHJvY2Vzcy5lbnYuc2VjcmV0S2V5O1xyXG5cclxuZXhwb3J0cy5qd3RQYXNzcG9ydCA9IHBhc3Nwb3J0LnVzZShuZXcgSnd0U3RyYXRlZ3kob3B0cyxcclxuICAgIChqd3RfcGF5bG9hZCwgZG9uZSkgPT4ge1xyXG4gICAgICAgIFVzZXIuZmluZE9uZSh7IF9pZDogand0X3BheWxvYWQuX2lkIH0sIChlcnIsIHVzZXIpID0+IHtcclxuICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRvbmUoZXJyLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAodXNlcikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRvbmUobnVsbCwgdXNlcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZG9uZShudWxsLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH0pKTtcclxuXHJcbmV4cG9ydHMudmVyaWZ5VXNlciA9IHBhc3Nwb3J0LmF1dGhlbnRpY2F0ZSgnand0JywgeyBzZXNzaW9uOiBmYWxzZSB9KTtcclxuXHJcbmV4cG9ydHMudmVyaWZ5QWRtaW4gPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIGlmIChyZXEudXNlci5yb2xlID09ICdhZG1pbicpIHtcclxuICAgICAgICByZXR1cm4gbmV4dCgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAocmVxLnVzZXIucm9sZSAhPSAnYWRtaW4nKSB7XHJcbiAgICAgICAgZXJyID0gbmV3IEVycm9yKCdZb3UgYXJlIG5vdCBhdXRob3JpemVkIHRvIHBlcmZvcm0gdGhpcyBvcGVyYXRpb24hJyk7XHJcbiAgICAgICAgZXJyLnN0YXR1cyA9IDQwMztcclxuICAgICAgICByZXR1cm4gbmV4dChlcnIpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgZXJyID0gbmV3IEVycm9yKCdBZG1pbiBWZXJpZmljYXRpb24gRmFpbGVkIScpO1xyXG4gICAgICAgIGVyci5zdGF0dXMgPSA1MDA7XHJcbiAgICAgICAgcmV0dXJuIG5leHQoZXJyKTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0cy52ZXJpZnlNb2RlcmF0ZXIgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIGlmIChyZXEudXNlci5yb2xlICE9ICd1c2VyJykge1xyXG4gICAgICAgIHJldHVybiBuZXh0KCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChyZXEudXNlci5yb2xlID09ICd1c2VyJykge1xyXG4gICAgICAgIGVyciA9IG5ldyBFcnJvcignWW91IGFyZSBub3QgYXV0aG9yaXplZCB0byBwZXJmb3JtIHRoaXMgb3BlcmF0aW9uIScpO1xyXG4gICAgICAgIGVyci5zdGF0dXMgPSA0MDM7XHJcbiAgICAgICAgcmV0dXJuIG5leHQoZXJyKTtcclxuICAgIH1cclxufVxyXG4iXX0=\",\"originalCode\":\"var passport = require('passport');\\r\\nvar LocalStrategy = require('passport-local').Strategy;\\r\\nvar User = require('../models/users');\\r\\n\\r\\nvar JwtStrategy = require('passport-jwt').Strategy;\\r\\nvar ExtractJwt = require('passport-jwt').ExtractJwt;\\r\\nvar jwt = require('jsonwebtoken');\\r\\n\\r\\n\\r\\npassport.use(new LocalStrategy(User.authenticate()));\\r\\npassport.serializeUser(User.serializeUser());\\r\\npassport.deserializeUser(User.deserializeUser());\\r\\n\\r\\nexports.getToken = (user) => {\\r\\n return jwt.sign(user, process.env.secretKey,\\r\\n { expiresIn: 3600 });\\r\\n};\\r\\n\\r\\nvar opts = {};\\r\\nopts.jwtFromRequest = ExtractJwt.fromAuthHeaderAsBearerToken();\\r\\nopts.secretOrKey = process.env.secretKey;\\r\\n\\r\\nexports.jwtPassport = passport.use(new JwtStrategy(opts,\\r\\n (jwt_payload, done) => {\\r\\n User.findOne({ _id: jwt_payload._id }, (err, user) => {\\r\\n if (err) {\\r\\n return done(err, false);\\r\\n }\\r\\n else if (user) {\\r\\n return done(null, user);\\r\\n }\\r\\n else {\\r\\n return done(null, false);\\r\\n }\\r\\n });\\r\\n }));\\r\\n\\r\\nexports.verifyUser = passport.authenticate('jwt', { session: false });\\r\\n\\r\\nexports.verifyAdmin = (req, res, next) => {\\r\\n if (req.user.role == 'admin') {\\r\\n return next();\\r\\n }\\r\\n else if (req.user.role != 'admin') {\\r\\n err = new Error('You are not authorized to perform this operation!');\\r\\n err.status = 403;\\r\\n return next(err);\\r\\n }\\r\\n else {\\r\\n err = new Error('Admin Verification Failed!');\\r\\n err.status = 500;\\r\\n return next(err);\\r\\n }\\r\\n}\\r\\n\\r\\nexports.verifyModerater = (req, res, next) => {\\r\\n if (req.user.role != 'user') {\\r\\n return next();\\r\\n }\\r\\n else if (req.user.role == 'user') {\\r\\n err = new Error('You are not authorized to perform this operation!');\\r\\n err.status = 403;\\r\\n return next(err);\\r\\n }\\r\\n}\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/17/authenticate_1749ed24acd3b9174e3e8d9c003de68d.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2460\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\middleware\\\\authenticate.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":8164,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":8161,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
.exports.getToken\",\"ranges\":[{\"startOffset\":536,\"endOffset\":622,\"count\":3}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":803,\"endOffset\":1050,\"count\":8}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":875,\"endOffset\":1046,\"count\":8}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
.exports.verifyAdmin\",\"ranges\":[{\"startOffset\":1150,\"endOffset\":1495,\"count\":2}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
.exports.verifyModerater\",\"ranges\":[{\"startOffset\":1524,\"endOffset\":1761,\"count\":2}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"var validationRules = {\\n id: {\\n in: ['params', 'query'],\\n errorMessage: 'ID is wrong',\\n isInt: true,\\n toInt: true\\n },\\n name: {\\n errorMessage: 'Name should be at least 2 chars long and maximum of 50 chars',\\n isLength: {\\n options: {\\n min: 2,\\n max: 50\\n }\\n },\\n trim: true\\n },\\n description: {\\n errorMessage: 'Description should be at least 2 chars long and maximum of 200 chars',\\n isLength: {\\n options: {\\n min: 2,\\n max: 200\\n }\\n },\\n trim: true\\n },\\n distance: {\\n errorMessage: 'Distance should be at least 1 chars long and maximum of 200 chars',\\n isLength: {\\n options: {\\n min: 1,\\n max: 200\\n }\\n },\\n trim: true\\n },\\n timeToReach: {\\n errorMessage: 'Time To Reach should be at least 2 chars long and maximum of 200 chars',\\n isLength: {\\n options: {\\n min: 2,\\n max: 200\\n }\\n },\\n trim: true\\n },\\n firstname: {\\n errorMessage: 'First Name should be at least 3 chars long and maximum of 50 chars',\\n isLength: {\\n options: {\\n min: 3,\\n max: 50\\n }\\n },\\n trim: true\\n },\\n lastname: {\\n errorMessage: 'Last Name should be at least 3 chars long and maximum of 50 chars',\\n isLength: {\\n options: {\\n min: 3,\\n max: 50\\n }\\n },\\n trim: true\\n },\\n email: {\\n errorMessage: 'Please enter a valid email address',\\n isEmail: true,\\n trim: true\\n },\\n mobile: {\\n errorMessage: 'Please enter Phone Number in 10 digits',\\n isLength: {\\n options: {\\n min: 10,\\n max: 10\\n }\\n },\\n matches: {\\n options: [/^\\\\d{10}$/],\\n errorMessage: \\\"Please enter digits\\\"\\n },\\n trim: true\\n },\\n password: {\\n isLength: {\\n errorMessage: 'Password should be at least 6 chars long',\\n options: {\\n min: 6\\n }\\n }\\n },\\n confirm_password: {\\n errorMessage: 'Must have the same value as the password field',\\n custom: {\\n options: (value, {\\n req\\n }) => value === req.body.password\\n }\\n },\\n suite: {\\n errorMessage: 'Please select suite type',\\n isIn: {\\n options: [['gold', 'luxury', 'platinum']]\\n }\\n },\\n roomnumber: {\\n errorMessage: 'Room Number should be at least 3 chars long and maximum of 50 chars',\\n isLength: {\\n options: {\\n min: 3,\\n max: 50\\n }\\n },\\n trim: true\\n },\\n state: {\\n errorMessage: 'Please select correct state',\\n isIn: {\\n options: [[\\\"new\\\", \\\"not-completed\\\", \\\"canceled\\\", \\\"completed\\\"]]\\n }\\n },\\n method: {\\n errorMessage: 'Please select correct travelling method',\\n isIn: {\\n options: [['Bus', 'Car', 'Train', 'Threewheeler', 'Foot']]\\n }\\n }\\n};\\nexports.validationRules = validationRules;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInZhbGlkYXRpb24uanMiXSwibmFtZXMiOlsidmFsaWRhdGlvblJ1bGVzIiwiaWQiLCJpbiIsImVycm9yTWVzc2FnZSIsImlzSW50IiwidG9JbnQiLCJuYW1lIiwiaXNMZW5ndGgiLCJvcHRpb25zIiwibWluIiwibWF4IiwidHJpbSIsImRlc2NyaXB0aW9uIiwiZGlzdGFuY2UiLCJ0aW1lVG9SZWFjaCIsImZpcnN0bmFtZSIsImxhc3RuYW1lIiwiZW1haWwiLCJpc0VtYWlsIiwibW9iaWxlIiwibWF0Y2hlcyIsInBhc3N3b3JkIiwiY29uZmlybV9wYXNzd29yZCIsImN1c3RvbSIsInZhbHVlIiwicmVxIiwiYm9keSIsInN1aXRlIiwiaXNJbiIsInJvb21udW1iZXIiLCJzdGF0ZSIsIm1ldGhvZCIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLElBQUlBLGVBQWUsR0FBRztBQUNsQkMsRUFBQUEsRUFBRSxFQUFFO0FBQ0FDLElBQUFBLEVBQUUsRUFBRSxDQUFDLFFBQUQsRUFBVyxPQUFYLENBREo7QUFFQUMsSUFBQUEsWUFBWSxFQUFFLGFBRmQ7QUFHQUMsSUFBQUEsS0FBSyxFQUFFLElBSFA7QUFJQUMsSUFBQUEsS0FBSyxFQUFFO0FBSlAsR0FEYztBQU9sQkMsRUFBQUEsSUFBSSxFQUFFO0FBQ0ZILElBQUFBLFlBQVksRUFBRSw4REFEWjtBQUVGSSxJQUFBQSxRQUFRLEVBQUU7QUFDTkMsTUFBQUEsT0FBTyxFQUFFO0FBQUVDLFFBQUFBLEdBQUcsRUFBRSxDQUFQO0FBQVVDLFFBQUFBLEdBQUcsRUFBRTtBQUFmO0FBREgsS0FGUjtBQUtGQyxJQUFBQSxJQUFJLEVBQUU7QUFMSixHQVBZO0FBY2xCQyxFQUFBQSxXQUFXLEVBQUU7QUFDVFQsSUFBQUEsWUFBWSxFQUFFLHNFQURMO0FBRVRJLElBQUFBLFFBQVEsRUFBRTtBQUNOQyxNQUFBQSxPQUFPLEVBQUU7QUFBRUMsUUFBQUEsR0FBRyxFQUFFLENBQVA7QUFBVUMsUUFBQUEsR0FBRyxFQUFFO0FBQWY7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RTtBQUFFQyxRQUFBQSxHQUFHLEVBQUUsQ0FBUDtBQUFVQyxRQUFBQSxHQUFHLEVBQUU7QUFBZjtBQURILEtBRkY7QUFLUkMsSUFBQUEsSUFBSSxFQUFFO0FBTEUsR0FuRk07QUEwRmxCbUIsRUFBQUEsS0FBSyxFQUFFO0FBQ0gzQixJQUFBQSxZQUFZLEVBQUUsNkJBRFg7QUFFSHlCLElBQUFBLElBQUksRUFBRTtBQUNGcEIsTUFBQUEsT0FBTyxFQUFFLENBQUMsQ0FBQyxLQUFELEVBQVEsZUFBUixFQUF5QixVQUF6QixFQUFxQyxXQUFyQyxDQUFEO0FBRFA7QUFGSCxHQTFGVztBQWdHbEJ1QixFQUFBQSxNQUFNLEVBQUU7QUFDSjVCLElBQUFBLFlBQVksRUFBRSx5Q0FEVjtBQUVKeUIsSUFBQUEsSUFBSSxFQUFFO0FBQ0ZwQixNQUFBQSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEtBQUQsRUFBUSxLQUFSLEVBQWUsT0FBZixFQUF3QixjQUF4QixFQUF3QyxNQUF4QyxDQUFEO0FBRFA7QUFGRjtBQWhHVSxDQUF0QjtBQXdHQXdCLE9BQU8sQ0FBQ2hDLGVBQVIsR0FBMEJBLGVBQTFCIiwic291cmNlc0NvbnRlbnQiOlsidmFyIHZhbGlkYXRpb25SdWxlcyA9IHtcclxuICAgIGlkOiB7XHJcbiAgICAgICAgaW46IFsncGFyYW1zJywgJ3F1ZXJ5J10sXHJcbiAgICAgICAgZXJyb3JNZXNzYWdlOiAnSUQgaXMgd3JvbmcnLFxyXG4gICAgICAgIGlzSW50OiB0cnVlLFxyXG4gICAgICAgIHRvSW50OiB0cnVlLFxyXG4gICAgfSxcclxuICAgIG5hbWU6IHtcclxuICAgICAgICBlcnJvck1lc3NhZ2U6ICdOYW1lIHNob3VsZCBiZSBhdCBsZWFzdCAyIGNoYXJzIGxvbmcgYW5kIG1heGltdW0gb2YgNTAgY2hhcnMnLFxyXG4gICAgICAgIGlzTGVuZ3RoOiB7XHJcbiAgICAgICAgICAgIG9wdGlvbnM6IHsgbWluOiAyLCBtYXg6IDUwIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHRyaW06IHRydWVcclxuICAgIH0sXHJcbiAgICBkZXNjcmlwdGlvbjoge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ0Rlc2NyaXB0aW9uIHNob3VsZCBiZSBhdCBsZWFzdCAyIGNoYXJzIGxvbmcgYW5kIG1heGltdW0gb2YgMjAwIGNoYXJzJyxcclxuICAgICAgICBpc0xlbmd0aDoge1xyXG4gICAgICAgICAgICBvcHRpb25zOiB7IG1pbjogMiwgbWF4OiAyMDAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHJpbTogdHJ1ZVxyXG4gICAgfSxcclxuICAgIGRpc3RhbmNlOiB7XHJcbiAgICAgICAgZXJyb3JNZXNzYWdlOiAnRGlzdGFuY2Ugc2hvdWxkIGJlIGF0IGxlYXN0IDEgY2hhcnMgbG9uZyBhbmQgbWF4aW11bSBvZiAyMDAgY2hhcnMnLFxyXG4gICAgICAgIGlzTGVuZ3RoOiB7XHJcbiAgICAgICAgICAgIG9wdGlvbnM6IHsgbWluOiAxLCBtYXg6IDIwMCB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICB0cmltOiB0cnVlXHJcbiAgICB9LFxyXG4gICAgdGltZVRvUmVhY2g6IHtcclxuICAgICAgICBlcnJvck1lc3NhZ2U6ICdUaW1lIFRvIFJlYWNoIHNob3VsZCBiZSBhdCBsZWFzdCAyIGNoYXJzIGxvbmcgYW5kIG1heGltdW0gb2YgMjAwIGNoYXJzJyxcclxuICAgICAgICBpc0xlbmd0aDoge1xyXG4gICAgICAgICAgICBvcHRpb25zOiB7IG1pbjogMiwgbWF4OiAyMDAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHJpbTogdHJ1ZVxyXG4gICAgfSxcclxuICAgIGZpcnN0bmFtZToge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ0ZpcnN0IE5hbWUgc2hvdWxkIGJlIGF0IGxlYXN0IDMgY2hhcnMgbG9uZyBhbmQgbWF4aW11bSBvZiA1MCBjaGFycycsXHJcbiAgICAgICAgaXNMZW5ndGg6IHtcclxuICAgICAgICAgICAgb3B0aW9uczogeyBtaW46IDMsIG1heDogNTAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHJpbTogdHJ1ZVxyXG4gICAgfSxcclxuICAgIGxhc3RuYW1lOiB7XHJcbiAgICAgICAgZXJyb3JNZXNzYWdlOiAnTGFzdCBOYW1lIHNob3VsZCBiZSBhdCBsZWFzdCAzIGNoYXJzIGxvbmcgYW5kIG1heGltdW0gb2YgNTAgY2hhcnMnLFxyXG4gICAgICAgIGlzTGVuZ3RoOiB7XHJcbiAgICAgICAgICAgIG9wdGlvbnM6IHsgbWluOiAzLCBtYXg6IDUwIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHRyaW06IHRydWVcclxuICAgIH0sXHJcbiAgICBlbWFpbDoge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ1BsZWFzZSBlbnRlciBhIHZhbGlkIGVtYWlsIGFkZHJlc3MnLFxyXG4gICAgICAgIGlzRW1haWw6IHRydWUsXHJcbiAgICAgICAgdHJpbTogdHJ1ZSxcclxuICAgIH0sXHJcbiAgICBtb2JpbGU6IHtcclxuICAgICAgICBlcnJvck1lc3NhZ2U6ICdQbGVhc2UgZW50ZXIgUGhvbmUgTnVtYmVyIGluIDEwIGRpZ2l0cycsXHJcbiAgICAgICAgaXNMZW5ndGg6IHtcclxuICAgICAgICAgICAgb3B0aW9uczogeyBtaW46IDEwLCBtYXg6IDEwIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIG1hdGNoZXM6IHtcclxuICAgICAgICAgICAgb3B0aW9uczogWy9eXFxkezEwfSQvXSxcclxuICAgICAgICAgICAgZXJyb3JNZXNzYWdlOiBcIlBsZWFzZSBlbnRlciBkaWdpdHNcIlxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHJpbTogdHJ1ZVxyXG4gICAgfSxcclxuICAgIHBhc3N3b3JkOiB7XHJcbiAgICAgICAgaXNMZW5ndGg6IHtcclxuICAgICAgICAgICAgZXJyb3JNZXNzYWdlOiAnUGFzc3dvcmQgc2hvdWxkIGJlIGF0IGxlYXN0IDYgY2hhcnMgbG9uZycsXHJcbiAgICAgICAgICAgIG9wdGlvbnM6IHsgbWluOiA2IH1cclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgY29uZmlybV9wYXNzd29yZDoge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ011c3QgaGF2ZSB0aGUgc2FtZSB2YWx1ZSBhcyB0aGUgcGFzc3dvcmQgZmllbGQnLFxyXG4gICAgICAgIGN1c3RvbToge1xyXG4gICAgICAgICAgICBvcHRpb25zOiAodmFsdWUsIHsgcmVxIH0pID0+IHZhbHVlID09PSByZXEuYm9keS5wYXNzd29yZFxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICBzdWl0ZToge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ1BsZWFzZSBzZWxlY3Qgc3VpdGUgdHlwZScsXHJcbiAgICAgICAgaXNJbjoge1xyXG4gICAgICAgICAgICBvcHRpb25zOiBbWydnb2xkJywgJ2x1eHVyeScsICdwbGF0aW51bSddXSxcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgcm9vbW51bWJlcjoge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ1Jvb20gTnVtYmVyIHNob3VsZCBiZSBhdCBsZWFzdCAzIGNoYXJzIGxvbmcgYW5kIG1heGltdW0gb2YgNTAgY2hhcnMnLFxyXG4gICAgICAgIGlzTGVuZ3RoOiB7XHJcbiAgICAgICAgICAgIG9wdGlvbnM6IHsgbWluOiAzLCBtYXg6IDUwIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHRyaW06IHRydWVcclxuICAgIH0sXHJcbiAgICBzdGF0ZToge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ1BsZWFzZSBzZWxlY3QgY29ycmVjdCBzdGF0ZScsXHJcbiAgICAgICAgaXNJbjoge1xyXG4gICAgICAgICAgICBvcHRpb25zOiBbW1wibmV3XCIsIFwibm90LWNvbXBsZXRlZFwiLCBcImNhbmNlbGVkXCIsIFwiY29tcGxldGVkXCJdXSxcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgbWV0aG9kOiB7XHJcbiAgICAgICAgZXJyb3JNZXNzYWdlOiAnUGxlYXNlIHNlbGVjdCBjb3JyZWN0IHRyYXZlbGxpbmcgbWV0aG9kJyxcclxuICAgICAgICBpc0luOiB7XHJcbiAgICAgICAgICAgIG9wdGlvbnM6IFtbJ0J1cycsICdDYXInLCAnVHJhaW4nLCAnVGhyZWV3aGVlbGVyJywgJ0Zvb3QnXV0sXHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxufVxyXG5cclxuZXhwb3J0cy52YWxpZGF0aW9uUnVsZXMgPSB2YWxpZGF0aW9uUnVsZXM7Il19\",\"originalCode\":\"var validationRules = {\\r\\n id: {\\r\\n in: ['params', 'query'],\\r\\n errorMessage: 'ID is wrong',\\r\\n isInt: true,\\r\\n toInt: true,\\r\\n },\\r\\n name: {\\r\\n errorMessage: 'Name should be at least 2 chars long and maximum of 50 chars',\\r\\n isLength: {\\r\\n options: { min: 2, max: 50 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n description: {\\r\\n errorMessage: 'Description should be at least 2 chars long and maximum of 200 chars',\\r\\n isLength: {\\r\\n options: { min: 2, max: 200 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n distance: {\\r\\n errorMessage: 'Distance should be at least 1 chars long and maximum of 200 chars',\\r\\n isLength: {\\r\\n options: { min: 1, max: 200 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n timeToReach: {\\r\\n errorMessage: 'Time To Reach should be at least 2 chars long and maximum of 200 chars',\\r\\n isLength: {\\r\\n options: { min: 2, max: 200 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n firstname: {\\r\\n errorMessage: 'First Name should be at least 3 chars long and maximum of 50 chars',\\r\\n isLength: {\\r\\n options: { min: 3, max: 50 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n lastname: {\\r\\n errorMessage: 'Last Name should be at least 3 chars long and maximum of 50 chars',\\r\\n isLength: {\\r\\n options: { min: 3, max: 50 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n email: {\\r\\n errorMessage: 'Please enter a valid email address',\\r\\n isEmail: true,\\r\\n trim: true,\\r\\n },\\r\\n mobile: {\\r\\n errorMessage: 'Please enter Phone Number in 10 digits',\\r\\n isLength: {\\r\\n options: { min: 10, max: 10 }\\r\\n },\\r\\n matches: {\\r\\n options: [/^\\\\d{10}$/],\\r\\n errorMessage: \\\"Please enter digits\\\"\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n password: {\\r\\n isLength: {\\r\\n errorMessage: 'Password should be at least 6 chars long',\\r\\n options: { min: 6 }\\r\\n }\\r\\n },\\r\\n confirm_password: {\\r\\n errorMessage: 'Must have the same value as the password field',\\r\\n custom: {\\r\\n options: (value, { req }) => value === req.body.password\\r\\n }\\r\\n },\\r\\n suite: {\\r\\n errorMessage: 'Please select suite type',\\r\\n isIn: {\\r\\n options: [['gold', 'luxury', 'platinum']],\\r\\n }\\r\\n },\\r\\n roomnumber: {\\r\\n errorMessage: 'Room Number should be at least 3 chars long and maximum of 50 chars',\\r\\n isLength: {\\r\\n options: { min: 3, max: 50 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n state: {\\r\\n errorMessage: 'Please select correct state',\\r\\n isIn: {\\r\\n options: [[\\\"new\\\", \\\"not-completed\\\", \\\"canceled\\\", \\\"completed\\\"]],\\r\\n }\\r\\n },\\r\\n method: {\\r\\n errorMessage: 'Please select correct travelling method',\\r\\n isIn: {\\r\\n options: [['Bus', 'Car', 'Train', 'Threewheeler', 'Foot']],\\r\\n }\\r\\n },\\r\\n}\\r\\n\\r\\nexports.validationRules = validationRules;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/4b/validation_4b7a8ff68e044daa8c6daa8312a761dc.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2493\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\middleware\\\\validation.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":11520,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":11517,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"options\",\"ranges\":[{\"startOffset\":2073,\"endOffset\":2134,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"var express = require('express');\\n\\nvar router = express.Router();\\n\\nvar Users = require('../models/users');\\n\\nvar passport = require('passport');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nconst signupAdmin = (req, res, next) => {\\n var admin = {\\n username: req.body.email,\\n firstname: req.body.firstname,\\n lastname: req.body.lastname,\\n email: req.body.email,\\n role: 'admin'\\n };\\n Users.register(new Users(admin), req.body.password, (err, user) => {\\n if (err) {\\n res.statusCode = 403;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n status: 'Registration Unsuccessful!'\\n });\\n } else {\\n if (req.body.firstname) user.firstname = req.body.firstname;\\n if (req.body.lastname) user.lastname = req.body.lastname;\\n user.save((err, user) => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n status: 'Registration Successful!'\\n });\\n });\\n }\\n });\\n};\\n\\nconst login = (req, res, next) => {\\n passport.authenticate('local', (err, user, info) => {\\n if (!user) {\\n res.statusCode = 401;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n status: 'Login Unsuccessful!',\\n err: info\\n });\\n return next(err);\\n }\\n\\n req.logIn(user, err => {\\n var token = authenticate.getToken({\\n _id: req.user._id,\\n role: user.role\\n });\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n status: 'Login Successful!',\\n token: token\\n });\\n });\\n })(req, res, next);\\n};\\n\\nconst changePassoword = (req, res, next) => {\\n var userId = req.params.id;\\n var newPasswordString = req.body.password;\\n Users.findById(userId).then(function (sanitizedUser) {\\n if (sanitizedUser) {\\n sanitizedUser.setPassword(newPasswordString, function () {\\n sanitizedUser.save();\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n message: 'password reset successful'\\n });\\n });\\n } else {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'This user does not exist'\\n });\\n }\\n }, function (err) {\\n next(err);\\n });\\n};\\n\\nconst logout = (req, res) => {\\n if (req.session) {\\n req.session.destroy();\\n res.clearCookie('session-id');\\n } else {\\n var err = new Error('You are not logged in!');\\n err.status = 403;\\n }\\n};\\n\\nexports.signupAdmin = signupAdmin;\\nexports.login = login;\\nexports.logout = logout;\\nexports.changePassoword = changePassoword;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVzZXJDb250cm9sbGVyLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwicm91dGVyIiwiUm91dGVyIiwiVXNlcnMiLCJwYXNzcG9ydCIsImF1dGhlbnRpY2F0ZSIsInNpZ251cEFkbWluIiwicmVxIiwicmVzIiwibmV4dCIsImFkbWluIiwidXNlcm5hbWUiLCJib2R5IiwiZW1haWwiLCJmaXJzdG5hbWUiLCJsYXN0bmFtZSIsInJvbGUiLCJyZWdpc3RlciIsInBhc3N3b3JkIiwiZXJyIiwidXNlciIsInN0YXR1c0NvZGUiLCJzZXRIZWFkZXIiLCJqc29uIiwic3VjY2VzcyIsInN0YXR1cyIsInNhdmUiLCJsb2dpbiIsImluZm8iLCJsb2dJbiIsInRva2VuIiwiZ2V0VG9rZW4iLCJfaWQiLCJjaGFuZ2VQYXNzb3dvcmQiLCJ1c2VySWQiLCJwYXJhbXMiLCJpZCIsIm5ld1Bhc3N3b3JkU3RyaW5nIiwiZmluZEJ5SWQiLCJ0aGVuIiwic2FuaXRpemVkVXNlciIsInNldFBhc3N3b3JkIiwibWVzc2FnZSIsImxvZ291dCIsInNlc3Npb24iLCJkZXN0cm95IiwiY2xlYXJDb29raWUiLCJFcnJvciIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLElBQUlBLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBckI7O0FBQ0EsSUFBSUMsTUFBTSxHQUFHRixPQUFPLENBQUNHLE1BQVIsRUFBYjs7QUFFQSxJQUFJQyxLQUFLLEdBQUdILE9BQU8sQ0FBQyxpQkFBRCxDQUFuQjs7QUFDQSxJQUFJSSxRQUFRLEdBQUdKLE9BQU8sQ0FBQyxVQUFELENBQXRCOztBQUNBLElBQUlLLFlBQVksR0FBR0wsT0FBTyxDQUFDLDRCQUFELENBQTFCOztBQUdBLE1BQU1NLFdBQVcsR0FBRyxDQUFDQyxHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUNwQyxNQUFJQyxLQUFLLEdBQUc7QUFDUkMsSUFBQUEsUUFBUSxFQUFFSixHQUFHLENBQUNLLElBQUos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YkQsRUFhRyxVQUFVdkIsR0FBVixFQUFlO0FBQ2RWLElBQUFBLElBQUksQ0FBQ1UsR0FBRCxDQUFKO0FBQ0gsR0FmRDtBQWdCSCxDQW5CRDs7QUFxQkEsTUFBTXdCLE1BQU0sR0FBRyxDQUFDcEMsR0FBRCxFQUFNQyxHQUFOLEtBQWM7QUFDekIsTUFBSUQsR0FBRyxDQUFDcUMsT0FBUixFQUFpQjtBQUNickMsSUFBQUEsR0FBRyxDQUFDcUMsT0FBSixDQUFZQyxPQUFaO0FBQ0FyQyxJQUFBQSxHQUFHLENBQUNzQyxXQUFKLENBQWdCLFlBQWhCO0FBQ0gsR0FIRCxNQUlLO0FBQ0QsUUFBSTNCLEdBQUcsR0FBRyxJQUFJNEIsS0FBSixDQUFVLHdCQUFWLENBQVY7QUFDQTVCLElBQUFBLEdBQUcsQ0FBQ00sTUFBSixHQUFhLEdBQWI7QUFDSDtBQUNKLENBVEQ7O0FBV0F1QixPQUFPLENBQUMxQyxXQUFSLEdBQXNCQSxXQUF0QjtBQUNBMEMsT0FBTyxDQUFDckIsS0FBUixHQUFnQkEsS0FBaEI7QUFDQXFCLE9BQU8sQ0FBQ0wsTUFBUixHQUFpQkEsTUFBakI7QUFDQUssT0FBTyxDQUFDZixlQUFSLEdBQTBCQSxlQUExQiIsInNvdXJjZXNDb250ZW50IjpbInZhciBleHByZXNzID0gcmVxdWlyZSgnZXhwcmVzcycpO1xyXG52YXIgcm91dGVyID0gZXhwcmVzcy5Sb3V0ZXIoKTtcclxuXHJcbnZhciBVc2VycyA9IHJlcXVpcmUoJy4uL21vZGVscy91c2VycycpO1xyXG52YXIgcGFzc3BvcnQgPSByZXF1aXJlKCdwYXNzcG9ydCcpO1xyXG52YXIgYXV0aGVudGljYXRlID0gcmVxdWlyZSgnLi4vbWlkZGxld2FyZS9hdXRoZW50aWNhdGUnKTtcclxuXHJcblxyXG5jb25zdCBzaWdudXBBZG1pbiA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgdmFyIGFkbWluID0ge1xyXG4gICAgICAgIHVzZXJuYW1lOiByZXEuYm9keS5lbWFpbCxcclxuICAgICAgICBmaXJzdG5hbWU6IHJlcS5ib2R5LmZpcnN0bmFtZSxcclxuICAgICAgICBsYXN0bmFtZTogcmVxLmJvZHkubGFzdG5hbWUsXHJcbiAgICAgICAgZW1haWw6IHJlcS5ib2R5LmVtYWlsLFxyXG4gICAgICAgIHJvbGU6ICdhZG1pbidcclxuICAgIH1cclxuICAgIFVzZXJzLnJlZ2lzdGVyKG5ldyBVc2VycyhhZG1pbiksXHJcbiAgICAgICAgcmVxLmJvZHkucGFzc3dvcmQsIChlcnIsIHVzZXIpID0+IHtcclxuICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgc3RhdHVzOiAnUmVnaXN0cmF0aW9uIFVuc3VjY2Vzc2Z1bCEnIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlcS5ib2R5LmZpcnN0bmFtZSlcclxuICAgICAgICAgICAgICAgICAgICB1c2VyLmZpcnN0bmFtZSA9IHJlcS5ib2R5LmZpcnN0bmFtZTtcclxuICAgICAgICAgICAgICAgIGlmIChyZXEuYm9keS5sYXN0bmFtZSlcclxuICAgICAgICAgICAgICAgICAgICB1c2VyLmxhc3RuYW1lID0gcmVxLmJvZHkubGFzdG5hbWU7XHJcbiAgICAgICAgICAgICAgICB1c2VyLnNhdmUoKGVyciwgdXNlcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCBzdGF0dXM6ICdSZWdpc3RyYXRpb24gU3VjY2Vzc2Z1bCEnIH0pO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxufVxyXG5cclxuY29uc3QgbG9naW4gPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHBhc3Nwb3J0LmF1dGhlbnRpY2F0ZSgnbG9jYWwnLCAoZXJyLCB1c2VyLCBpbmZvKSA9PiB7XHJcblxyXG4gICAgICAgIGlmICghdXNlcikge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwMTtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgc3RhdHVzOiAnTG9naW4gVW5zdWNjZXNzZnVsIScsIGVycjogaW5mbyB9KTtcclxuICAgICAgICAgICAgcmV0dXJuIG5leHQoZXJyKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmVxLmxvZ0luKHVzZXIsIChlcnIpID0+IHtcclxuICAgICAgICAgICAgdmFyIHRva2VuID0gYXV0aGVudGljYXRlLmdldFRva2VuKHsgX2lkOiByZXEudXNlci5faWQsIHJvbGU6IHVzZXIucm9sZSB9KTtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgc3RhdHVzOiAnTG9naW4gU3VjY2Vzc2Z1bCEnLCB0b2tlbjogdG9rZW4sIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSkocmVxLCByZXMsIG5leHQpO1xyXG59XHJcblxyXG5jb25zdCBjaGFuZ2VQYXNzb3dvcmQgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHZhciB1c2VySWQgPSByZXEucGFyYW1zLmlkO1xyXG4gICAgdmFyIG5ld1Bhc3N3b3JkU3RyaW5nID0gcmVxLmJvZHkucGFzc3dvcmQ7XHJcbiAgICBVc2Vycy5maW5kQnlJZCh1c2VySWQpLnRoZW4oZnVuY3Rpb24gKHNhbml0aXplZFVzZXIpIHtcclxuICAgICAgICBpZiAoc2FuaXRpemVkVXNlcikge1xyXG4gICAgICAgICAgICBzYW5pdGl6ZWRVc2VyLnNldFBhc3N3b3JkKG5ld1Bhc3N3b3JkU3RyaW5nLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICBzYW5pdGl6ZWRVc2VyLnNhdmUoKTtcclxuICAgICAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgbWVzc2FnZTogJ3Bhc3N3b3JkIHJlc2V0IHN1Y2Nlc3NmdWwnIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwNDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogJ1RoaXMgdXNlciBkb2VzIG5vdCBleGlzdCcgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSwgZnVuY3Rpb24gKGVycikge1xyXG4gICAgICAgIG5leHQoZXJyKTtcclxuICAgIH0pO1xyXG59XHJcblxyXG5jb25zdCBsb2dvdXQgPSAocmVxLCByZXMpID0+IHtcclxuICAgIGlmIChyZXEuc2Vzc2lvbikge1xyXG4gICAgICAgIHJlcS5zZXNzaW9uLmRlc3Ryb3koKTtcclxuICAgICAgICByZXMuY2xlYXJDb29raWUoJ3Nlc3Npb24taWQnKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoJ1lvdSBhcmUgbm90IGxvZ2dlZCBpbiEnKTtcclxuICAgICAgICBlcnIuc3RhdHVzID0gNDAzO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnRzLnNpZ251cEFkbWluID0gc2lnbnVwQWRtaW47XHJcbmV4cG9ydHMubG9naW4gPSBsb2dpbjtcclxuZXhwb3J0cy5sb2dvdXQgPSBsb2dvdXQ7XHJcbmV4cG9ydHMuY2hhbmdlUGFzc293b3JkID0gY2hhbmdlUGFzc293b3JkOyJdfQ==\",\"originalCode\":\"var express = require('express');\\r\\nvar router = express.Router();\\r\\n\\r\\nvar Users = require('../models/users');\\r\\nvar passport = require('passport');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\n\\r\\n\\r\\nconst signupAdmin = (req, res, next) => {\\r\\n var admin = {\\r\\n username: req.body.email,\\r\\n firstname: req.body.firstname,\\r\\n lastname: req.body.lastname,\\r\\n email: req.body.email,\\r\\n role: 'admin'\\r\\n }\\r\\n Users.register(new Users(admin),\\r\\n req.body.password, (err, user) => {\\r\\n if (err) {\\r\\n res.statusCode = 403;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, status: 'Registration Unsuccessful!' });\\r\\n }\\r\\n else {\\r\\n if (req.body.firstname)\\r\\n user.firstname = req.body.firstname;\\r\\n if (req.body.lastname)\\r\\n user.lastname = req.body.lastname;\\r\\n user.save((err, user) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, status: 'Registration Successful!' });\\r\\n });\\r\\n }\\r\\n });\\r\\n}\\r\\n\\r\\nconst login = (req, res, next) => {\\r\\n passport.authenticate('local', (err, user, info) => {\\r\\n\\r\\n if (!user) {\\r\\n res.statusCode = 401;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, status: 'Login Unsuccessful!', err: info });\\r\\n return next(err);\\r\\n }\\r\\n req.logIn(user, (err) => {\\r\\n var token = authenticate.getToken({ _id: req.user._id, role: user.role });\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, status: 'Login Successful!', token: token, });\\r\\n });\\r\\n })(req, res, next);\\r\\n}\\r\\n\\r\\nconst changePassoword = (req, res, next) => {\\r\\n var userId = req.params.id;\\r\\n var newPasswordString = req.body.password;\\r\\n Users.findById(userId).then(function (sanitizedUser) {\\r\\n if (sanitizedUser) {\\r\\n sanitizedUser.setPassword(newPasswordString, function () {\\r\\n sanitizedUser.save();\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, message: 'password reset successful' });\\r\\n });\\r\\n } else {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'This user does not exist' });\\r\\n }\\r\\n }, function (err) {\\r\\n next(err);\\r\\n });\\r\\n}\\r\\n\\r\\nconst logout = (req, res) => {\\r\\n if (req.session) {\\r\\n req.session.destroy();\\r\\n res.clearCookie('session-id');\\r\\n }\\r\\n else {\\r\\n var err = new Error('You are not logged in!');\\r\\n err.status = 403;\\r\\n }\\r\\n}\\r\\n\\r\\nexports.signupAdmin = signupAdmin;\\r\\nexports.login = login;\\r\\nexports.logout = logout;\\r\\nexports.changePassoword = changePassoword;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/df/userController_dfcc3c245d97ff3aba4c4e3eb1674b0e.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2494\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\userController.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":12954,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":12951,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"signupAdmin\",\"ranges\":[{\"startOffset\":313,\"endOffset\":1156,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":553,\"endOffset\":1152,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":926,\"endOffset\":1140,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"login\",\"ranges\":[{\"startOffset\":1173,\"endOffset\":1848,\"count\":3}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1228,\"endOffset\":1828,\"count\":3}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1512,\"endOffset\":1822,\"count\":3}],\"isBlockCoverage\":false},{\"functionName\":\"changePassoword\",\"ranges\":[{\"startOffset\":1875,\"endOffset\":2594,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"logout\",\"ranges\":[{\"startOffset\":2612,\"endOffset\":2800,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const express = require('express');\\n\\nconst cors = require('cors');\\n\\nconst app = express();\\n\\nconst util = require('util');\\n\\nconst whitelist = ['http://localhost:3000', 'http://localhost:3001', 'https://localhost:5000'];\\n\\nvar corsOptionsDelegate = (req, callback) => {\\n var corsOptions;\\n\\n if (whitelist.indexOf(req.header('Origin')) !== -1) {\\n corsOptions = {\\n origin: true\\n };\\n } else {\\n corsOptions = {\\n origin: false\\n };\\n }\\n\\n callback(null, corsOptions);\\n}; // if we want to allow all origins\\n\\n\\nexports.cors = cors(); // if we want to allow only the whitelisted origins\\n\\nexports.corsWithOptions = cors(corsOptionsDelegate);\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvcnMuanMiXSwibmFtZXMiOlsiZXhwcmVzcyIsInJlcXVpcmUiLCJjb3JzIiwiYXBwIiwidXRpbCIsIndoaXRlbGlzdCIsImNvcnNPcHRpb25zRGVsZWdhdGUiLCJyZXEiLCJjYWxsYmFjayIsImNvcnNPcHRpb25zIiwiaW5kZXhPZiIsImhlYWRlciIsIm9yaWdpbiIsImV4cG9ydHMiLCJjb3JzV2l0aE9wdGlvbnMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBdkI7O0FBQ0EsTUFBTUMsSUFBSSxHQUFHRCxPQUFPLENBQUMsTUFBRCxDQUFwQjs7QUFDQSxNQUFNRSxHQUFHLEdBQUdILE9BQU8sRUFBbkI7O0FBQ0EsTUFBTUksSUFBSSxHQUFHSCxPQUFPLENBQUMsTUFBRCxDQUFwQjs7QUFFQSxNQUFNSSxTQUFTLEdBQUcsQ0FBQyx1QkFBRCxFQUEwQix1QkFBMUIsRUFBbUQsd0JBQW5ELENBQWxCOztBQUNBLElBQUlDLG1CQUFtQixHQUFHLENBQUNDLEdBQUQsRUFBTUMsUUFBTixLQUFtQjtBQUN6QyxNQUFJQyxXQUFKOztBQUNBLE1BQUdKLFNBQVMsQ0FBQ0ssT0FBVixDQUFrQkgsR0FBRyxDQUFDSSxNQUFKLENBQVcsUUFBWCxDQUFsQixNQUE0QyxDQUFDLENBQWhELEVBQW1EO0FBQy9DRixJQUFBQSxXQUFXLEdBQUc7QUFBRUcsTUFBQUEsTUFBTSxFQUFFO0FBQVYsS0FBZDtBQUNILEdBRkQsTUFHSztBQUNESCxJQUFBQSxXQUFXLEdBQUc7QUFBRUcsTUFBQUEsTUFBTSxFQUFFO0FBQVYsS0FBZDtBQUNIOztBQUNESixFQUFBQSxRQUFRLENBQUMsSUFBRCxFQUFPQyxXQUFQLENBQVI7QUFDSCxDQVRELEMsQ0FXQTs7O0FBQ0FJLE9BQU8sQ0FBQ1gsSUFBUixHQUFlQSxJQUFJLEVBQW5CLEMsQ0FFQTs7QUFDQVcsT0FBTyxDQUFDQyxlQUFSLEdBQTBCWixJQUFJLENBQUNJLG1CQUFELENBQTlCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZXhwcmVzcyA9IHJlcXVpcmUoJ2V4cHJlc3MnKTtcclxuY29uc3QgY29ycyA9IHJlcXVpcmUoJ2NvcnMnKTtcclxuY29uc3QgYXBwID0gZXhwcmVzcygpO1xyXG5jb25zdCB1dGlsID0gcmVxdWlyZSgndXRpbCcpO1xyXG5cclxuY29uc3Qgd2hpdGVsaXN0ID0gWydodHRwOi8vbG9jYWxob3N0OjMwMDAnLCAnaHR0cDovL2xvY2FsaG9zdDozMDAxJywgJ2h0dHBzOi8vbG9jYWxob3N0OjUwMDAnXTtcclxudmFyIGNvcnNPcHRpb25zRGVsZWdhdGUgPSAocmVxLCBjYWxsYmFjaykgPT4ge1xyXG4gICAgdmFyIGNvcnNPcHRpb25zO1xyXG4gICAgaWYod2hpdGVsaXN0LmluZGV4T2YocmVxLmhlYWRlcignT3JpZ2luJykpICE9PSAtMSkge1xyXG4gICAgICAgIGNvcnNPcHRpb25zID0geyBvcmlnaW46IHRydWUgfTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGNvcnNPcHRpb25zID0geyBvcmlnaW46IGZhbHNlIH07XHJcbiAgICB9XHJcbiAgICBjYWxsYmFjayhudWxsLCBjb3JzT3B0aW9ucyk7XHJcbn07XHJcblxyXG4vLyBpZiB3ZSB3YW50IHRvIGFsbG93IGFsbCBvcmlnaW5zXHJcbmV4cG9ydHMuY29ycyA9IGNvcnMoKTtcclxuXHJcbi8vIGlmIHdlIHdhbnQgdG8gYWxsb3cgb25seSB0aGUgd2hpdGVsaXN0ZWQgb3JpZ2luc1xyXG5leHBvcnRzLmNvcnNXaXRoT3B0aW9ucyA9IGNvcnMoY29yc09wdGlvbnNEZWxlZ2F0ZSk7Il19\",\"originalCode\":\"const express = require('express');\\r\\nconst cors = require('cors');\\r\\nconst app = express();\\r\\nconst util = require('util');\\r\\n\\r\\nconst whitelist = ['http://localhost:3000', 'http://localhost:3001', 'https://localhost:5000'];\\r\\nvar corsOptionsDelegate = (req, callback) => {\\r\\n var corsOptions;\\r\\n if(whitelist.indexOf(req.header('Origin')) !== -1) {\\r\\n corsOptions = { origin: true };\\r\\n }\\r\\n else {\\r\\n corsOptions = { origin: false };\\r\\n }\\r\\n callback(null, corsOptions);\\r\\n};\\r\\n\\r\\n// if we want to allow all origins\\r\\nexports.cors = cors();\\r\\n\\r\\n// if we want to allow only the whitelisted origins\\r\\nexports.corsWithOptions = cors(corsOptionsDelegate);\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/34/cors_34beef0e65d7cfb3f2bb7a05fb9de802.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2495\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\cors.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":2982,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":2979,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"corsOptionsDelegate\",\"ranges\":[{\"startOffset\":335,\"endOffset\":573,\"count\":12}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const express = require('express');\\n\\nconst bodyParser = require('body-parser');\\n\\nconst {\\n checkSchema\\n} = require('express-validator');\\n\\nconst cors = require('./cors');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nvar validationRules = require('../middleware/validation');\\n\\nconst employeeController = require('../controllers/employeeController');\\n\\nconst employeeRouter = express.Router();\\nemployeeRouter.use(bodyParser.json()); // **********************************************************************************\\n// \\n// Employee Routes\\n// \\n// **********************************************************************************\\n\\nemployeeRouter.route('/').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.getAllEmployees).post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.addEmployee).put(cors.corsWithOptions, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('PUT operation not supported on /employees');\\n}).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.deleteAllEmployees);\\nemployeeRouter.route('/search').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.getAllEmployeesByName); // **********************************************************************************\\n// \\n// Employee Routes Specified by ID\\n// \\n// **********************************************************************************\\n\\nemployeeRouter.route('/:employeeId').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.getEmployeeDetailsById).post(cors.corsWithOptions, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('POST operation not supported on /employees/' + req.params.employeeId);\\n}).put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.updateEmployeeDetailsById).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.deleteAEmployeeById);\\nmodule.exports = employeeRouter;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImVtcGxveWVlUm91dGVyLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwiYm9keVBhcnNlciIsImNoZWNrU2NoZW1hIiwiY29ycyIsImF1dGhlbnRpY2F0ZSIsInZhbGlkYXRpb25SdWxlcyIsImVtcGxveWVlQ29udHJvbGxlciIsImVtcGxveWVlUm91dGVyIiwiUm91dGVyIiwidXNlIiwianNvbiIsInJvdXRlIiwib3B0aW9ucyIsImNvcnNXaXRoT3B0aW9ucyIsInJlcSIsInJlcyIsInNlbmRTdGF0dXMiLCJnZXQiLCJ2ZXJpZnlVc2VyIiwidmVyaWZ5QWRtaW4iLCJnZXRBbGxFbXBsb3llZXMiLCJwb3N0IiwiYWRkRW1wbG95ZWUiLCJwdXQiLCJuZXh0Iiwic3RhdHVzQ29kZSIsImVuZCIsImRlbGV0ZSIsImRlbGV0ZUFsbEVtcGxveWVlcyIsImdldEFsbEVtcGxveWVlc0J5TmFtZSIsImdldEVtcGxveWVlRGV0YWlsc0J5SWQiLCJwYXJhbXMiLCJlbXBsb3llZUlkIiwidXBkYXRlRW1wbG95ZWVEZXRhaWxzQnlJZCIsImRlbGV0ZUFFbXBsb3llZUJ5SWQiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxPQUFPLEdBQUdDLE9BQU8sQ0FBQyxTQUFELENBQXZCOztBQUNBLE1BQU1DLFVBQVUsR0FBR0QsT0FBTyxDQUFDLGFBQUQsQ0FBMUI7O0FBQ0EsTUFBTTtBQUFFRSxFQUFBQTtBQUFGLElBQWtCRixPQUFPLENBQUMsbUJBQUQsQ0FBL0I7O0FBQ0EsTUFBTUcsSUFBSSxHQUFHSCxPQUFPLENBQUMsUUFBRCxDQUFwQjs7QUFDQSxJQUFJSSxZQUFZLEdBQUdKLE9BQU8sQ0FBQyw0QkFBRCxDQUExQjs7QUFDQSxJQUFJSyxlQUFlLEdBQUdMLE9BQU8sQ0FBQywwQkFBRCxDQUE3Qjs7QUFDQSxNQUFNTSxrQkFBa0IsR0FBR04sT0FBTyxDQUFDLG1DQUFELENBQWxDOztBQUVBLE1BQU1PLGNBQWMsR0FBR1IsT0FB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cHJlc3MnKTtcclxuY29uc3QgYm9keVBhcnNlciA9IHJlcXVpcmUoJ2JvZHktcGFyc2VyJyk7XHJcbmNvbnN0IHsgY2hlY2tTY2hlbWEgfSA9IHJlcXVpcmUoJ2V4cHJlc3MtdmFsaWRhdG9yJyk7XHJcbmNvbnN0IGNvcnMgPSByZXF1aXJlKCcuL2NvcnMnKTtcclxudmFyIGF1dGhlbnRpY2F0ZSA9IHJlcXVpcmUoJy4uL21pZGRsZXdhcmUvYXV0aGVudGljYXRlJyk7XHJcbnZhciB2YWxpZGF0aW9uUnVsZXMgPSByZXF1aXJlKCcuLi9taWRkbGV3YXJlL3ZhbGlkYXRpb24nKTtcclxuY29uc3QgZW1wbG95ZWVDb250cm9sbGVyID0gcmVxdWlyZSgnLi4vY29udHJvbGxlcnMvZW1wbG95ZWVDb250cm9sbGVyJyk7XHJcblxyXG5jb25zdCBlbXBsb3llZVJvdXRlciA9IGV4cHJlc3MuUm91dGVyKCk7XHJcblxyXG5lbXBsb3llZVJvdXRlci51c2UoYm9keVBhcnNlci5qc29uKCkpO1xyXG5cclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyBcclxuLy8gICAgICAgICAgICAgIEVtcGxveWVlIFJvdXRlc1xyXG4vLyBcclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuZW1wbG95ZWVSb3V0ZXIucm91dGUoJy8nKVxyXG4gICAgLm9wdGlvbnMoY29ycy5jb3JzV2l0aE9wdGlvbnMsIChyZXEsIHJlcykgPT4geyByZXMuc2VuZFN0YXR1cygyMDApOyB9KVxyXG4gICAgLmdldChjb3JzLmNvcnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCBhdXRoZW50aWNhdGUudmVyaWZ5QWRtaW4sICBlbXBsb3llZUNvbnRyb2xsZXIuZ2V0QWxsRW1wbG95ZWVzKVxyXG4gICAgLnBvc3QoY29ycy5jb3JzV2l0aE9wdGlvbnMsYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgZW1wbG95ZWVDb250cm9sbGVyLmFkZEVtcGxveWVlKVxyXG4gICAgLnB1dChjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgcmVzLmVuZCgnUFVUIG9wZXJhdGlvbiBub3Qgc3VwcG9ydGVkIG9uIC9lbXBsb3llZXMnKTtcclxuICAgIH0pXHJcbiAgICAuZGVsZXRlKGNvcnMuY29yc1dpdGhPcHRpb25zLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeUFkbWluLCAgZW1wbG95ZWVDb250cm9sbGVyLmRlbGV0ZUFsbEVtcGxveWVlcyk7XHJcbmVtcGxveWVlUm91dGVyLnJvdXRlKCcvc2VhcmNoJylcclxuICAgIC5vcHRpb25zKGNvcnMuY29yc1dpdGhPcHRpb25zLCAocmVxLCByZXMpID0+IHsgcmVzLnNlbmRTdGF0dXMoMjAwKTsgfSlcclxuICAgIC5wb3N0KGNvcnMuY29yc1dpdGhPcHRpb25zLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeUFkbWluLCBlbXBsb3llZUNvbnRyb2xsZXIuZ2V0QWxsRW1wbG95ZWVzQnlOYW1lKTtcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuLy8gXHJcbi8vICAgICAgICAgICAgICBFbXBsb3llZSBSb3V0ZXMgU3BlY2lmaWVkIGJ5IElEXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG5lbXBsb3llZVJvdXRlci5yb3V0ZSgnLzplbXBsb3llZUlkJylcclxuICAgIC5vcHRpb25zKGNvcnMuY29yc1dpdGhPcHRpb25zLCAocmVxLCByZXMpID0+IHsgcmVzLnNlbmRTdGF0dXMoMjAwKTsgfSlcclxuICAgIC5nZXQoY29ycy5jb3JzLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeUFkbWluLCAgZW1wbG95ZWVDb250cm9sbGVyLmdldEVtcGxveWVlRGV0YWlsc0J5SWQpXHJcbiAgICAucG9zdChjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgcmVzLmVuZCgnUE9TVCBvcGVyYXRpb24gbm90IHN1cHBvcnRlZCBvbiAvZW1wbG95ZWVzLycgKyByZXEucGFyYW1zLmVtcGxveWVlSWQpO1xyXG4gICAgfSlcclxuICAgIC5wdXQoY29ycy5jb3JzV2l0aE9wdGlvbnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCBhdXRoZW50aWNhdGUudmVyaWZ5QWRtaW4sICBlbXBsb3llZUNvbnRyb2xsZXIudXBkYXRlRW1wbG95ZWVEZXRhaWxzQnlJZClcclxuICAgIC5kZWxldGUoY29ycy5jb3JzV2l0aE9wdGlvbnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCBhdXRoZW50aWNhdGUudmVyaWZ5QWRtaW4sICBlbXBsb3llZUNvbnRyb2xsZXIuZGVsZXRlQUVtcGxveWVlQnlJZCk7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IGVtcGxveWVlUm91dGVyOyJdfQ==\",\"originalCode\":\"const express = require('express');\\r\\nconst bodyParser = require('body-parser');\\r\\nconst { checkSchema } = require('express-validator');\\r\\nconst cors = require('./cors');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\nvar validationRules = require('../middleware/validation');\\r\\nconst employeeController = require('../controllers/employeeController');\\r\\n\\r\\nconst employeeRouter = express.Router();\\r\\n\\r\\nemployeeRouter.use(bodyParser.json());\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Employee Routes\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nemployeeRouter.route('/')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.getAllEmployees)\\r\\n .post(cors.corsWithOptions,authenticate.verifyUser, authenticate.verifyAdmin, employeeController.addEmployee)\\r\\n .put(cors.corsWithOptions, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('PUT operation not supported on /employees');\\r\\n })\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.deleteAllEmployees);\\r\\nemployeeRouter.route('/search')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.getAllEmployeesByName);\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Employee Routes Specified by ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nemployeeRouter.route('/:employeeId')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.getEmployeeDetailsById)\\r\\n .post(cors.corsWithOptions, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('POST operation not supported on /employees/' + req.params.employeeId);\\r\\n })\\r\\n .put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.updateEmployeeDetailsById)\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.deleteAEmployeeById);\\r\\n\\r\\nmodule.exports = employeeRouter;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/3b/employeeRouter_3bb83cd3174a28ed34e0f44c133b9b42.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2496\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\employeeRouter.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":9455,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":9452,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":802,\"endOffset\":842,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1082,\"endOffset\":1185,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1369,\"endOffset\":1409,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1828,\"endOffset\":1868,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":2006,\"endOffset\":2135,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const Employees = require('../models/users');\\n\\nconst utils = require('../utils/utils'); // **********************************************************************************\\n// \\n// Employee Operations \\n// \\n// **********************************************************************************\\n\\n/**\\r\\n * @description get details of the assistants\\r\\n * @param {*} req \\r\\n * @param {*} res \\r\\n * @param {*} next \\r\\n * @returns {array} list of employees\\r\\n */\\n\\n\\nconst getAllEmployees = (req, res, next) => {\\n var query = {\\n \\\"role\\\": \\\"moderater\\\"\\n };\\n Employees.find(query).then(employees => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n employees: employees\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst getAllEmployeesByName = (req, res, next) => {\\n var query = {\\n \\\"role\\\": \\\"moderater\\\"\\n }; // if (req.body.similarTo) {\\n // var searchBy = req.body.similarTo || {}\\n // query = { \\\"role\\\": \\\"moderater\\\", $text: { $search: searchBy } }\\n // }\\n\\n if (req.body.similarTo) {\\n var searchBy = req.body.similarTo || {};\\n query = {\\n \\\"role\\\": \\\"moderater\\\",\\n firstname: {\\n $regex: `${searchBy}`,\\n $options: \\\"i\\\"\\n }\\n };\\n }\\n\\n var sortby = req.body.sortBy || {};\\n Employees.find(query).sort(sortby).then(employees => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n employees: employees\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst addEmployee = async (req, res, next) => {\\n const randomPassword = utils.password_generator(10);\\n var employee = {\\n username: req.body.email,\\n firstname: req.body.firstname,\\n lastname: req.body.lastname,\\n email: req.body.email,\\n role: 'moderater'\\n };\\n\\n try {\\n Employees.register(new Employees(employee), randomPassword, (err, employee) => {\\n if (err) {\\n res.statusCode = 403;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: err.message\\n });\\n } else {\\n employee.save((err, employee) => {\\n if (err) {\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Error while Saving new user.'\\n });\\n }\\n\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n email: employee.email,\\n password: randomPassword\\n });\\n });\\n }\\n });\\n } catch (error) {\\n var err = new Error(\\\"Error while registering new user.\\\");\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: err.message\\n });\\n }\\n};\\n\\nconst deleteAllEmployees = (req, res, next) => {\\n Employees.remove({\\n \\\"role\\\": \\\"moderater\\\"\\n }).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json(resp);\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nexports.getAllEmployees = getAllEmployees;\\nexports.getAllEmployeesByName = getAllEmployeesByName;\\nexports.addEmployee = addEmployee;\\nexports.deleteAllEmployees = deleteAllEmployees; // **********************************************************************************\\n// \\n// Employee Operations Specified by ID\\n// \\n// **********************************************************************************\\n\\nconst getEmployeeDetailsById = (req, res, next) => {\\n Employees.findById(req.params.employeeId).then(employee => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n employee: employee\\n });\\n }, err => {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Could not find employee with given ID'\\n });\\n }).catch(err => next(err));\\n};\\n\\nconst updateEmployeeDetailsById = (req, res, next) => {\\n var employee = {\\n username: req.body.email,\\n firstname: req.body.firstname,\\n lastname: req.body.lastname,\\n email: req.body.email,\\n role: 'moderater'\\n };\\n Employees.findByIdAndUpdate(req.params.employeeId, {\\n $set: employee\\n }, {\\n new: true\\n }).then(employee => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n employee: employee\\n });\\n }, err => next(err)).catch(err => {\\n var err = new Error(\\\"Error while updating.\\\");\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: err.message\\n });\\n });\\n};\\n\\nconst deleteAEmployeeById = (req, res, next) => {\\n Employees.findByIdAndRemove(req.params.employeeId).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json(resp);\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nexports.getEmployeeDetailsById = getEmployeeDetailsById;\\nexports.updateEmployeeDetailsById = updateEmployeeDetailsById;\\nexports.deleteAEmployeeById = deleteAEmployeeById;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImVtcGxveWVlQ29udHJvbGxlci5qcyJdLCJuYW1lcyI6WyJFbXBsb3llZXMiLCJyZXF1aXJlIiwidXRpbHMiLCJnZXRBbGxFbXBsb3llZXMiLCJyZXEiLCJyZXMiLCJuZXh0IiwicXVlcnkiLCJmaW5kIiwidGhlbiIsImVtcGxveWVlcyIsInN0YXR1c0NvZGUiLCJzZXRIZWFkZXIiLCJqc29uIiwic3VjY2VzcyIsImVyciIsImNhdGNoIiwiZ2V0QWxsRW1wbG95ZWVzQnlOYW1lIiwiYm9keSIsInNpbWlsYXJUbyIsInNlYXJjaEJ5IiwiZmlyc3RuYW1lIiwiJHJlZ2V4IiwiJG9wdGlvbnMiLCJzb3J0YnkiLCJzb3J0QnkiLCJzb3J0IiwiYWRkRW1wbG95ZWUiLCJyYW5kb21QYXNzd29yZCIsInBhc3N3b3JkX2dlbmVyYXRvciIsImVtcGxveWVlIiwidXNlcm5hbWUiLCJlbWFpbCIsImxhc3RuYW1lIiwicm9sZSIsInJlZ2lzdGVyIiwibWVzc2FnZSIsInNhdmUiLCJwYXNzd29yZCIsImVycm9yIiwiRXJyb3IiLCJkZWxldGVBbGxFbXBsb3llZXMiLCJyZW1vdmUiLCJyZXNwIiwiZXhwb3J0cyIsImdldEVtcGxveWVlRGV0YWlsc0J5SWQiLCJmaW5kQnlJZCIsInBhcmFtcyIsImVtcGxveWVlSWQiLCJ1cGRhdGVFbXBsb3llZURldGFpbHNCeUlkIiwiZmluZEJ5SWRBbmRVcGRhdGUiLCIkc2V0IiwibmV3IiwiZGVsZXRlQUVtcGxveWVlQnlJZCIsImZpbmRCeUlkQW5kUmVtb3ZlIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxTQUFTLEdBQUdDLE9BQU8sQ0FBQyxpQkFBRCxDQUF6Qjs7QUFDQSxNQUFNQyxLQUFLLEdBQUdELE9BQU8sQ0FBQyxnQkFBRCxDQUFyQixDLENBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0EsTUFBTUUsZUFBZSxHQUFHLENBQUNDLEdBQUQsRUFBTUMsR0FBTixF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SSxDQUFDUyxHQUFELENBTHBCLEVBTUtDLEtBTkwsQ0FNWUQsR0FBRCxJQUFTVCxJQUFJLENBQUNTLEdBQUQsQ0FOeEI7QUFPSCxDQVJEOztBQVVBNkIsT0FBTyxDQUFDQyxzQkFBUixHQUFpQ0Esc0JBQWpDO0FBQ0FELE9BQU8sQ0FBQ0sseUJBQVIsR0FBb0NBLHlCQUFwQztBQUNBTCxPQUFPLENBQUNTLG1CQUFSLEdBQThCQSxtQkFBOUIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBFbXBsb3llZXMgPSByZXF1aXJlKCcuLi9tb2RlbHMvdXNlcnMnKTtcclxuY29uc3QgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscy91dGlscycpO1xyXG5cclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyBcclxuLy8gICAgICAgICAgICAgIEVtcGxveWVlIE9wZXJhdGlvbnMgXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG4vKipcclxuICogQGRlc2NyaXB0aW9uIGdldCBkZXRhaWxzIG9mIHRoZSBhc3Npc3RhbnRzXHJcbiAqIEBwYXJhbSB7Kn0gcmVxIFxyXG4gKiBAcGFyYW0geyp9IHJlcyBcclxuICogQHBhcmFtIHsqfSBuZXh0IFxyXG4gKiBAcmV0dXJucyB7YXJyYXl9IGxpc3Qgb2YgZW1wbG95ZWVzXHJcbiAqL1xyXG5jb25zdCBnZXRBbGxFbXBsb3llZXMgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHZhciBxdWVyeSA9IHsgXCJyb2xlXCI6IFwibW9kZXJhdGVyXCIgfTtcclxuICAgIEVtcGxveWVlcy5maW5kKHF1ZXJ5KVxyXG4gICAgICAgIC50aGVuKChlbXBsb3llZXMpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgZW1wbG95ZWVzOiBlbXBsb3llZXMgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpO1xyXG59XHJcblxyXG5jb25zdCBnZXRBbGxFbXBsb3llZXNCeU5hbWUgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHZhciBxdWVyeSA9IHsgXCJyb2xlXCI6IFwibW9kZXJhdGVyXCIgfTtcclxuICAgIC8vIGlmIChyZXEuYm9keS5zaW1pbGFyVG8pIHtcclxuICAgIC8vICAgICB2YXIgc2VhcmNoQnkgPSByZXEuYm9keS5zaW1pbGFyVG8gfHwge31cclxuICAgIC8vICAgICBxdWVyeSA9IHsgXCJyb2xlXCI6IFwibW9kZXJhdGVyXCIsICR0ZXh0OiB7ICRzZWFyY2g6IHNlYXJjaEJ5IH0gfVxyXG4gICAgLy8gfVxyXG4gICAgaWYgKHJlcS5ib2R5LnNpbWlsYXJUbykge1xyXG4gICAgICAgIHZhciBzZWFyY2hCeSA9IHJlcS5ib2R5LnNpbWlsYXJUbyB8fCB7fVxyXG4gICAgICAgIHF1ZXJ5ID0geyBcInJvbGVcIjogXCJtb2RlcmF0ZXJcIiwgZmlyc3RuYW1lOiB7ICRyZWdleDogYCR7c2VhcmNoQnl9YCwgJG9wdGlvbnM6IFwiaVwiIH0gfVxyXG4gICAgfVxyXG4gICAgdmFyIHNvcnRieSA9IHJlcS5ib2R5LnNvcnRCeSB8fCB7fTtcclxuICAgIEVtcGxveWVlcy5maW5kKHF1ZXJ5KS5zb3J0KHNvcnRieSlcclxuICAgICAgICAudGhlbigoZW1wbG95ZWVzKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIGVtcGxveWVlczogZW1wbG95ZWVzIH0pO1xyXG4gICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuY29uc3QgYWRkRW1wbG95ZWUgPSBhc3luYyAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIGNvbnN0IHJhbmRvbVBhc3N3b3JkID0gdXRpbHMucGFzc3dvcmRfZ2VuZXJhdG9yKDEwKTtcclxuICAgIHZhciBlbXBsb3llZSA9IHtcclxuICAgICAgICB1c2VybmFtZTogcmVxLmJvZHkuZW1haWwsXHJcbiAgICAgICAgZmlyc3RuYW1lOiByZXEuYm9keS5maXJzdG5hbWUsXHJcbiAgICAgICAgbGFzdG5hbWU6IHJlcS5ib2R5Lmxhc3RuYW1lLFxyXG4gICAgICAgIGVtYWlsOiByZXEuYm9keS5lbWFpbCxcclxuICAgICAgICByb2xlOiAnbW9kZXJhdGVyJ1xyXG4gICAgfVxyXG4gICAgdHJ5IHtcclxuICAgICAgICBFbXBsb3llZXMucmVnaXN0ZXIobmV3IEVtcGxveWVlcyhlbXBsb3llZSksXHJcbiAgICAgICAgICAgIHJhbmRvbVBhc3N3b3JkLCAoZXJyLCBlbXBsb3llZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNDAzO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogZXJyLm1lc3NhZ2UgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBlbXBsb3llZS5zYXZlKChlcnIsIGVtcGxveWVlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNTAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IGZhbHNlLCBtZXNzYWdlOiAnRXJyb3Igd2hpbGUgU2F2aW5nIG5ldyB1c2VyLicgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgZW1haWw6IGVtcGxveWVlLmVtYWlsLCBwYXNzd29yZDogcmFuZG9tUGFzc3dvcmQgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICB2YXIgZXJyID0gbmV3IEVycm9yKFwiRXJyb3Igd2hpbGUgcmVnaXN0ZXJpbmcgbmV3IHVzZXIuXCIpO1xyXG4gICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNTAwO1xyXG4gICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogZXJyLm1lc3NhZ2UgfSk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmNvbnN0IGRlbGV0ZUFsbEVtcGxveWVlcyA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgRW1wbG95ZWVzLnJlbW92ZSh7IFwicm9sZVwiOiBcIm1vZGVyYXRlclwiIH0pXHJcbiAgICAgICAgLnRoZW4oKHJlc3ApID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHJlc3ApO1xyXG4gICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuZXhwb3J0cy5nZXRBbGxFbXBsb3llZXMgPSBnZXRBbGxFbXBsb3llZXM7XHJcbmV4cG9ydHMuZ2V0QWxsRW1wbG95ZWVzQnlOYW1lID0gZ2V0QWxsRW1wbG95ZWVzQnlOYW1lO1xyXG5leHBvcnRzLmFkZEVtcGxveWVlID0gYWRkRW1wbG95ZWU7XHJcbmV4cG9ydHMuZGVsZXRlQWxsRW1wbG95ZWVzID0gZGVsZXRlQWxsRW1wbG95ZWVzO1xyXG5cclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyBcclxuLy8gICAgICAgICAgICAgIEVtcGxveWVlIE9wZXJhdGlvbnMgU3BlY2lmaWVkIGJ5IElEXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG5jb25zdCBnZXRFbXBsb3llZURldGFpbHNCeUlkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICBFbXBsb3llZXMuZmluZEJ5SWQocmVxLnBhcmFtcy5lbXBsb3llZUlkKVxyXG4gICAgICAgIC50aGVuKChlbXBsb3llZSkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCBlbXBsb3llZTogZW1wbG95ZWUgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwNDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogJ0NvdWxkIG5vdCBmaW5kIGVtcGxveWVlIHdpdGggZ2l2ZW4gSUQnIH0pO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IG5leHQoZXJyKSk7XHJcbn1cclxuXHJcbmNvbnN0IHVwZGF0ZUVtcGxveWVlRGV0YWlsc0J5SWQgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHZhciBlbXBsb3llZSA9IHtcclxuICAgICAgICB1c2VybmFtZTogcmVxLmJvZHkuZW1haWwsXHJcbiAgICAgICAgZmlyc3RuYW1lOiByZXEuYm9keS5maXJzdG5hbWUsXHJcbiAgICAgICAgbGFzdG5hbWU6IHJlcS5ib2R5Lmxhc3RuYW1lLFxyXG4gICAgICAgIGVtYWlsOiByZXEuYm9keS5lbWFpbCxcclxuICAgICAgICByb2xlOiAnbW9kZXJhdGVyJ1xyXG4gICAgfVxyXG4gICAgRW1wbG95ZWVzLmZpbmRCeUlkQW5kVXBkYXRlKHJlcS5wYXJhbXMuZW1wbG95ZWVJZCwge1xyXG4gICAgICAgICRzZXQ6IGVtcGxveWVlXHJcbiAgICB9LCB7IG5ldzogdHJ1ZSB9KVxyXG4gICAgICAgIC50aGVuKChlbXBsb3llZSkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCBlbXBsb3llZTogZW1wbG95ZWUgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoXCJFcnJvciB3aGlsZSB1cGRhdGluZy5cIik7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNTAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IGZhbHNlLCBtZXNzYWdlOiBlcnIubWVzc2FnZSB9KTtcclxuICAgICAgICB9KTtcclxufVxyXG5cclxuY29uc3QgZGVsZXRlQUVtcGxveWVlQnlJZCA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgRW1wbG95ZWVzLmZpbmRCeUlkQW5kUmVtb3ZlKHJlcS5wYXJhbXMuZW1wbG95ZWVJZClcclxuICAgICAgICAudGhlbigocmVzcCkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24ocmVzcCk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpO1xyXG59XHJcblxyXG5leHBvcnRzLmdldEVtcGxveWVlRGV0YWlsc0J5SWQgPSBnZXRFbXBsb3llZURldGFpbHNCeUlkO1xyXG5leHBvcnRzLnVwZGF0ZUVtcGxveWVlRGV0YWlsc0J5SWQgPSB1cGRhdGVFbXBsb3llZURldGFpbHNCeUlkO1xyXG5leHBvcnRzLmRlbGV0ZUFFbXBsb3llZUJ5SWQgPSBkZWxldGVBRW1wbG95ZWVCeUlkOyJdfQ==\",\"originalCode\":\"const Employees = require('../models/users');\\r\\nconst utils = require('../utils/utils');\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Employee Operations \\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\n/**\\r\\n * @description get details of the assistants\\r\\n * @param {*} req \\r\\n * @param {*} res \\r\\n * @param {*} next \\r\\n * @returns {array} list of employees\\r\\n */\\r\\nconst getAllEmployees = (req, res, next) => {\\r\\n var query = { \\\"role\\\": \\\"moderater\\\" };\\r\\n Employees.find(query)\\r\\n .then((employees) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, employees: employees });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst getAllEmployeesByName = (req, res, next) => {\\r\\n var query = { \\\"role\\\": \\\"moderater\\\" };\\r\\n // if (req.body.similarTo) {\\r\\n // var searchBy = req.body.similarTo || {}\\r\\n // query = { \\\"role\\\": \\\"moderater\\\", $text: { $search: searchBy } }\\r\\n // }\\r\\n if (req.body.similarTo) {\\r\\n var searchBy = req.body.similarTo || {}\\r\\n query = { \\\"role\\\": \\\"moderater\\\", firstname: { $regex: `${searchBy}`, $options: \\\"i\\\" } }\\r\\n }\\r\\n var sortby = req.body.sortBy || {};\\r\\n Employees.find(query).sort(sortby)\\r\\n .then((employees) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, employees: employees });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst addEmployee = async (req, res, next) => {\\r\\n const randomPassword = utils.password_generator(10);\\r\\n var employee = {\\r\\n username: req.body.email,\\r\\n firstname: req.body.firstname,\\r\\n lastname: req.body.lastname,\\r\\n email: req.body.email,\\r\\n role: 'moderater'\\r\\n }\\r\\n try {\\r\\n Employees.register(new Employees(employee),\\r\\n randomPassword, (err, employee) => {\\r\\n if (err) {\\r\\n res.statusCode = 403;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: err.message });\\r\\n }\\r\\n else {\\r\\n employee.save((err, employee) => {\\r\\n if (err) {\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Error while Saving new user.' });\\r\\n }\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, email: employee.email, password: randomPassword });\\r\\n });\\r\\n }\\r\\n });\\r\\n } catch (error) {\\r\\n var err = new Error(\\\"Error while registering new user.\\\");\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: err.message });\\r\\n }\\r\\n}\\r\\n\\r\\nconst deleteAllEmployees = (req, res, next) => {\\r\\n Employees.remove({ \\\"role\\\": \\\"moderater\\\" })\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json(resp);\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nexports.getAllEmployees = getAllEmployees;\\r\\nexports.getAllEmployeesByName = getAllEmployeesByName;\\r\\nexports.addEmployee = addEmployee;\\r\\nexports.deleteAllEmployees = deleteAllEmployees;\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Employee Operations Specified by ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nconst getEmployeeDetailsById = (req, res, next) => {\\r\\n Employees.findById(req.params.employeeId)\\r\\n .then((employee) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, employee: employee });\\r\\n }, (err) => {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Could not find employee with given ID' });\\r\\n })\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst updateEmployeeDetailsById = (req, res, next) => {\\r\\n var employee = {\\r\\n username: req.body.email,\\r\\n firstname: req.body.firstname,\\r\\n lastname: req.body.lastname,\\r\\n email: req.body.email,\\r\\n role: 'moderater'\\r\\n }\\r\\n Employees.findByIdAndUpdate(req.params.employeeId, {\\r\\n $set: employee\\r\\n }, { new: true })\\r\\n .then((employee) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, employee: employee });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => {\\r\\n var err = new Error(\\\"Error while updating.\\\");\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: err.message });\\r\\n });\\r\\n}\\r\\n\\r\\nconst deleteAEmployeeById = (req, res, next) => {\\r\\n Employees.findByIdAndRemove(req.params.employeeId)\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json(resp);\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nexports.getEmployeeDetailsById = getEmployeeDetailsById;\\r\\nexports.updateEmployeeDetailsById = updateEmployeeDetailsById;\\r\\nexports.deleteAEmployeeById = deleteAEmployeeById;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/6e/employeeController_6ee2f5b4e4eea073cb5625109f63cb82.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2497\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\employeeController.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":22470,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":22467,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"getAllEmployees\",\"ranges\":[{\"startOffset\":577,\"endOffset\":889,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getAllEmployeesByName\",\"ranges\":[{\"startOffset\":922,\"endOffset\":1648,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"addEmployee\",\"ranges\":[{\"startOffset\":1671,\"endOffset\":3020,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1998,\"endOffset\":2777,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":2250,\"endOffset\":2761,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"deleteAllEmployees\",\"ranges\":[{\"startOffset\":3050,\"endOffset\":3287,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getEmployeeDetailsById\",\"ranges\":[{\"startOffset\":3736,\"endOffset\":4197,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"updateEmployeeDetailsById\",\"ranges\":[{\"startOffset\":4234,\"endOffset\":4944,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"deleteAEmployeeById\",\"ranges\":[{\"startOffset\":4975,\"endOffset\":5215,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const multer = require('multer');\\n\\nconst {\\n v4: uuidv4\\n} = require('uuid');\\n\\nlet path = require('path');\\n\\nconst password_generator = len => {\\n var length = len ? len : 10;\\n var string = \\\"abcdefghijklmnopqrstuvwxyz\\\"; //to upper \\n\\n var numeric = '0123456789';\\n var punctuation = '!@#$%^&*()_+~`|}{[]\\\\:;?><,./-=';\\n var password = \\\"\\\";\\n var character = \\\"\\\";\\n var crunch = true;\\n\\n while (password.length < length) {\\n entity1 = Math.ceil(string.length * Math.random() * Math.random());\\n entity2 = Math.ceil(numeric.length * Math.random() * Math.random());\\n entity3 = Math.ceil(punctuation.length * Math.random() * Math.random());\\n hold = string.charAt(entity1);\\n hold = password.length % 2 == 0 ? hold.toUpperCase() : hold;\\n character += hold;\\n character += numeric.charAt(entity2);\\n character += punctuation.charAt(entity3);\\n password = character;\\n }\\n\\n password = password.split('').sort(function () {\\n return 0.5 - Math.random();\\n }).join('');\\n return password.substr(0, length);\\n};\\n\\nexports.password_generator = password_generator;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInV0aWxzLmpzIl0sIm5hbWVzIjpbIm11bHRlciIsInJlcXVpcmUiLCJ2NCIsInV1aWR2NCIsInBhdGgiLCJwYXNzd29yZF9nZW5lcmF0b3IiLCJsZW4iLCJsZW5ndGgiLCJzdHJpbmciLCJudW1lcmljIiwicHVuY3R1YXRpb24iLCJwYXNzd29yZCIsImNoYXJhY3RlciIsImNydW5jaCIsImVudGl0eTEiLCJNYXRoIiwiY2VpbCIsInJhbmRvbSIsImVudGl0eTIiLCJlbnRpdHkzIiwiaG9sZCIsImNoYXJBdCIsInRvVXBwZXJDYXNlIiwic3BsaXQiLCJzb3J0Iiwiam9pbiIsInN1YnN0ciIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE1BQU0sR0FBR0MsT0FBTyxDQUFDLFFBQUQsQ0FBdEI7O0FBQ0EsTUFBTTtBQUFFQyxFQUFBQSxFQUFFLEVBQUVDO0FBQU4sSUFBaUJGLE9BQU8sQ0FBQyxNQUFELENBQTlCOztBQUNBLElBQUlHLElBQUksR0FBR0gsT0FBTyxDQUFDLE1BQUQsQ0FBbEI7O0FBRUEsTUFBTUksa0JBQWtCLEdBQUlDLEdBQUQsSUFBUztBQUNoQyxNQUFJQyxNQUFNLEdBQUlELEdBQUQsR0FBU0EsR0FBVCxHQUFpQixFQUE5QjtBQUNBLE1BQUlFLE1BQU0sR0FBRyw0QkFBYixDQUZnQyxDQUVXOztBQUMzQyxNQUFJQyxPQUFPLEdBQUcsWUFBZDtBQUNBLE1BQUlDLFdBQVcsR0FBRyxnQ0FBbEI7QUFDQSxNQUFJQyxRQUFRLEdBQUcsRUFBZjtBQUNBLE1BQUlDLFNBQVMsR0FBRyxFQUFoQjtBQUNBLE1BQUlDLE1BQU0sR0FBRyxJQUFiOztBQUNBLFNBQU9GLFFBQVEsQ0FBQ0osTUFBVCxHQUFrQkEsTUFBekIsRUFBaUM7QUFDN0JPLElBQUFBLE9BQU8sR0FBR0MsSUFBSSxDQUFDQyxJQUFMLENBQVVSLE1BQU0sQ0FBQ0QsTUFBUCxHQUFnQlEsSUFBSSxDQUFDRSxNQUFMLEVBQWhCLEdBQWdDRixJQUFJLENBQUNFLE1BQUwsRUFBMUMsQ0FBVjtBQUNBQyxJQUFBQSxPQUFPLEdBQUdILElBQUksQ0FBQ0MsSUFBTCxDQUFVUCxPQUFPLENBQUNGLE1BQVIsR0FBaUJRLElBQUksQ0FBQ0UsTUFBTCxFQUFqQixHQUFpQ0YsSUFBSSxDQUFDRSxNQUFMLEVBQTNDLENBQVY7QUFDQUUsSUFBQUEsT0FBTyxHQUFHSixJQUFJLENBQUNDLElBQUwsQ0FBVU4sV0FBVyxDQUFDSCxNQUFaLEdBQXFCUSxJQUFJLENBQUNFLE1BQUwsRUFBckIsR0FBcUNGLElBQUksQ0FBQ0UsTUFBTCxFQUEvQyxDQUFWO0FBQ0FHLElBQUFBLElBQUksR0FBR1osTUFBTSxDQUFDYSxNQUFQLENBQWNQLE9BQWQsQ0FBUDtBQUNBTSxJQUFBQSxJQUFJLEdBQUlULFFBQVEsQ0FBQ0osTUFBVCxHQUFrQixDQUFsQixJQUF1QixDQUF4QixHQUE4QmEsSUFBSSxDQUFDRSxXQUFMLEVBQTlCLEdBQXFERixJQUE1RDtBQUNBUixJQUFBQSxTQUFTLElBQUlRLElBQWI7QUFDQVIsSUFBQUEsU0FBUyxJQUFJSCxPQUFPLENBQUNZLE1BQVIsQ0FBZUgsT0FBZixDQUFiO0FBQ0FOLElBQUFBLFNBQVMsSUFBSUYsV0FBVyxDQUFDVyxNQUFaLENBQW1CRixPQUFuQixDQUFiO0FBQ0FSLElBQUFBLFFBQVEsR0FBR0MsU0FBWDtBQUNIOztBQUNERCxFQUFBQSxRQUFRLEdBQUdBLFFBQVEsQ0FBQ1ksS0FBVCxDQUFlLEVBQWYsRUFBbUJDLElBQW5CLENBQXdCLFlBQVk7QUFBRSxXQUFPLE1BQU1ULElBQUksQ0FBQ0UsTUFBTCxFQUFiO0FBQTRCLEdBQWxFLEVBQW9FUSxJQUFwRSxDQUF5RSxFQUF6RSxDQUFYO0FBQ0EsU0FBT2QsUUFBUSxDQUFDZSxNQUFULENBQWdCLENBQWhCLEVBQW1CbkIsTUFBbkIsQ0FBUDtBQUNILENBckJEOztBQXVCQW9CLE9BQU8sQ0FBQ3RCLGtCQUFSLEdBQTZCQSxrQkFBN0IiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBtdWx0ZXIgPSByZXF1aXJlKCdtdWx0ZXInKTtcclxuY29uc3QgeyB2NDogdXVpZHY0IH0gPSByZXF1aXJlKCd1dWlkJyk7XHJcbmxldCBwYXRoID0gcmVxdWlyZSgncGF0aCcpO1xyXG5cclxuY29uc3QgcGFzc3dvcmRfZ2VuZXJhdG9yID0gKGxlbikgPT4ge1xyXG4gICAgdmFyIGxlbmd0aCA9IChsZW4pID8gKGxlbikgOiAoMTApO1xyXG4gICAgdmFyIHN0cmluZyA9IFwiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpcIjsgLy90byB1cHBlciBcclxuICAgIHZhciBudW1lcmljID0gJzAxMjM0NTY3ODknO1xyXG4gICAgdmFyIHB1bmN0dWF0aW9uID0gJyFAIyQlXiYqKClfK35gfH17W11cXDo7Pz48LC4vLT0nO1xyXG4gICAgdmFyIHBhc3N3b3JkID0gXCJcIjtcclxuICAgIHZhciBjaGFyYWN0ZXIgPSBcIlwiO1xyXG4gICAgdmFyIGNydW5jaCA9IHRydWU7XHJcbiAgICB3aGlsZSAocGFzc3dvcmQubGVuZ3RoIDwgbGVuZ3RoKSB7XHJcbiAgICAgICAgZW50aXR5MSA9IE1hdGguY2VpbChzdHJpbmcubGVuZ3RoICogTWF0aC5yYW5kb20oKSAqIE1hdGgucmFuZG9tKCkpO1xyXG4gICAgICAgIGVudGl0eTIgPSBNYXRoLmNlaWwobnVtZXJpYy5sZW5ndGggKiBNYXRoLnJhbmRvbSgpICogTWF0aC5yYW5kb20oKSk7XHJcbiAgICAgICAgZW50aXR5MyA9IE1hdGguY2VpbChwdW5jdHVhdGlvbi5sZW5ndGggKiBNYXRoLnJhbmRvbSgpICogTWF0aC5yYW5kb20oKSk7XHJcbiAgICAgICAgaG9sZCA9IHN0cmluZy5jaGFyQXQoZW50aXR5MSk7XHJcbiAgICAgICAgaG9sZCA9IChwYXNzd29yZC5sZW5ndGggJSAyID09IDApID8gKGhvbGQudG9VcHBlckNhc2UoKSkgOiAoaG9sZCk7XHJcbiAgICAgICAgY2hhcmFjdGVyICs9IGhvbGQ7XHJcbiAgICAgICAgY2hhcmFjdGVyICs9IG51bWVyaWMuY2hhckF0KGVudGl0eTIpO1xyXG4gICAgICAgIGNoYXJhY3RlciArPSBwdW5jdHVhdGlvbi5jaGFyQXQoZW50aXR5Myk7XHJcbiAgICAgICAgcGFzc3dvcmQgPSBjaGFyYWN0ZXI7XHJcbiAgICB9XHJcbiAgICBwYXNzd29yZCA9IHBhc3N3b3JkLnNwbGl0KCcnKS5zb3J0KGZ1bmN0aW9uICgpIHsgcmV0dXJuIDAuNSAtIE1hdGgucmFuZG9tKCkgfSkuam9pbignJyk7XHJcbiAgICByZXR1cm4gcGFzc3dvcmQuc3Vic3RyKDAsIGxlbmd0aCk7XHJcbn1cclxuXHJcbmV4cG9ydHMucGFzc3dvcmRfZ2VuZXJhdG9yID0gcGFzc3dvcmRfZ2VuZXJhdG9yOyJdfQ==\",\"originalCode\":\"const multer = require('multer');\\r\\nconst { v4: uuidv4 } = require('uuid');\\r\\nlet path = require('path');\\r\\n\\r\\nconst password_generator = (len) => {\\r\\n var length = (len) ? (len) : (10);\\r\\n var string = \\\"abcdefghijklmnopqrstuvwxyz\\\"; //to upper \\r\\n var numeric = '0123456789';\\r\\n var punctuation = '!@#$%^&*()_+~`|}{[]\\\\:;?><,./-=';\\r\\n var password = \\\"\\\";\\r\\n var character = \\\"\\\";\\r\\n var crunch = true;\\r\\n while (password.length < length) {\\r\\n entity1 = Math.ceil(string.length * Math.random() * Math.random());\\r\\n entity2 = Math.ceil(numeric.length * Math.random() * Math.random());\\r\\n entity3 = Math.ceil(punctuation.length * Math.random() * Math.random());\\r\\n hold = string.charAt(entity1);\\r\\n hold = (password.length % 2 == 0) ? (hold.toUpperCase()) : (hold);\\r\\n character += hold;\\r\\n character += numeric.charAt(entity2);\\r\\n character += punctuation.charAt(entity3);\\r\\n password = character;\\r\\n }\\r\\n password = password.split('').sort(function () { return 0.5 - Math.random() }).join('');\\r\\n return password.substr(0, length);\\r\\n}\\r\\n\\r\\nexports.password_generator = password_generator;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/12/utils_12501e91058955e05c348a4b2ab3e6a2.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2498\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\utils\\\\utils.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":5216,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":5213,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"password_generator\",\"ranges\":[{\"startOffset\":223,\"endOffset\":1107,\"count\":2}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1008,\"endOffset\":1057,\"count\":58}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const express = require('express');\\n\\nconst bodyParser = require('body-parser');\\n\\nconst cors = require('./cors');\\n\\nconst {\\n checkSchema\\n} = require('express-validator');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nvar validationRules = require('../middleware/validation');\\n\\nconst placeController = require('../controllers/placeController');\\n\\nconst visitingPlaceRouter = express.Router();\\nvisitingPlaceRouter.use(bodyParser.json()); // **********************************************************************************\\n// Visiting Place Routes\\n// **********************************************************************************\\n\\nvisitingPlaceRouter.route('/').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, placeController.getAllVisitingPlaces).post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.addVisitingPlace).put(cors.corsWithOptions, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('PUT operation not supported on /visitingPlaces');\\n}).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.deleteAllVisitingPlaces);\\nvisitingPlaceRouter.route('/search').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).post(cors.corsWithOptions, authenticate.verifyUser, placeController.getAllVisitingPlacesByName); // **********************************************************************************\\n// \\n// Visiting Place Routes On ID\\n// \\n// **********************************************************************************\\n\\nvisitingPlaceRouter.route('/:visitingPlaceId').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, placeController.getVisitingPlaceDetailsById).post(cors.corsWithOptions, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('POST operation not supported on /visitingPlaces/' + req.params.visitingPlaceId);\\n}).put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.updateVisitingPlaceDetailsById).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.deleteAVisitingPlaceById);\\nmodule.exports = visitingPlaceRouter;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBsYWNlUm91dGVyLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwiYm9keVBhcnNlciIsImNvcnMiLCJjaGVja1NjaGVtYSIsImF1dGhlbnRpY2F0ZSIsInZhbGlkYXRpb25SdWxlcyIsInBsYWNlQ29udHJvbGxlciIsInZpc2l0aW5nUGxhY2VSb3V0ZXIiLCJSb3V0ZXIiLCJ1c2UiLCJqc29uIiwicm91dGUiLCJvcHRpb25zIiwiY29yc1dpdGhPcHRpb25zIiwicmVxIiwicmVzIiwic2VuZFN0YXR1cyIsImdldCIsInZlcmlmeVVzZXIiLCJnZXRBbGxWaXNpdGluZ1BsYWNlcyIsInBvc3QiLCJ2ZXJpZnlBZG1pbiIsImFkZFZpc2l0aW5nUGxhY2UiLCJwdXQiLCJuZXh0Iiwic3RhdHVzQ29kZSIsImVuZCIsImRlbGV0ZSIsImRlbGV0ZUFsbFZpc2l0aW5nUGxhY2VzIiwiZ2V0QWxsVmlzaXRpbmdQbGFjZXNCeU5hbWUiLCJnZXRWaXNpdGluZ1BsYWNlRGV0YWlsc0J5SWQiLCJwYXJhbXMiLCJ2aXNpdGluZ1BsYWNlSWQiLCJ1cGRhdGVWaXNpdGluZ1BsYWNlRGV0YWlsc0J5SWQiLCJkZWxldGVBVmlzaXRpbmdQbGFjZUJ5SWQiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxPQUFPLEdBQUdDLE9BQU8sQ0FBQyxTQUFELENBQXZCOztBQUNBLE1BQU1DLFVBQVUsR0FBR0QsT0FBTyxDQUFDLGFBQUQsQ0FBMUI7O0FBRUEsTUFBTUUsSUFBSSxHQUFHRixPQUFPLENBQUMsUUFBRCxDQUFwQjs7QUFDQSxNQUFNO0FBQUVHLEVBQUFBO0FBQUYsSUFBa0JILE9BQU8sQ0FBQyxtQkFBRCxDQUEvQjs7QUFDQSxJQUFJSSxZQUFZLEdBQUdKLE9BQU8sQ0FBQyw0QkFBRCxDQUExQjs7QUFDQSxJQUFJSyxlQUFlLEdBQUdMLE9BQU8sQ0FBQywwQkFBRCxDQUE3Qjs7QUFDQSxNQUFNTSxlQUFlLEdBQUdOLE9BQU8sQ0FBQyxnQ0FBRCxDQUEvQjs7QUFFQSxNQUFNTyxtQkFBbUIsR0FBR1IsT0FBTyxDQUFDUyxNQUFSLEVBQTVCO0FBRUFELG1CQUFtQixDQUFDRSxHQUFwQixDQUF3QlIsVUFBVSxDQUFDUyxJQUFYLEVBQXhCLEUsQ0FFQTtBQUVBO0FBRUE7O0FBRUFILG1CQUFtQixDQUFDSSxLQUFwQixDQUEwQixHQUExQixFQUNLQyxPQURMLENBQ2FWLElBQUksQ0FBQ1csZUFEbEIsRUFDbUMsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEtBQWM7QUFBRUEsRUFBQUEsR0FBRyxDQUFDQyxVQUFKLENBQWUsR0FBZjtBQUFzQixDQUR6RSxFQUVLQyxHQUZMLENBRVNmLElBQUksQ0FBQ0EsSUFGZCxFQUVvQkUsWUFBWSxDQUFDYyxVQUZqQyxFQUU2Q1osZUFBZSxDQUFDYSxvQkFGN0QsRUFHS0MsSUFITCxDQUdVbEIsSUFBSSxDQUFDVyxlQUhmLEVBR2dDVCxZQUFZLENBQUNjLFVBSDdDLEVBR3lEZCxZQUFZLENBQUNpQixXQUh0RSxFQUdtRmYsZUFBZSxDQUFDZ0IsZ0JBSG5HLEVBSUtDLEdBSkwsQ0FJU3JCLElBQUksQ0FBQ1csZUFKZCxFQUkrQixDQUFDQyxHQUFELEVBQU1DLEdBQU4sRUFBV1MsSUFBWCxLQUFvQjtBQUMzQ1QsRUFBQUEsR0FBRyxDQUFDVSxVQUFKLEdBQWlCLEdBQWpCO0FBQ0FWLEVBQUFBLEdBQUcsQ0FBQ1csR0FBSixDQUFRLGdEQUFSO0FBQ0gsQ0FQTCxFQVFLQyxNQVJMLENBUVl6QixJQUFJLENBQUNXLGVBUmpCLEVBUWtDVCxZQUFZLENBQUNjLFVBUi9DLEVBUTJEZCxZQUFZLENBQUNpQixXQVJ4RSxFQVFxRmYsZUFBZSxDQUFDc0IsdUJBUnJHO0FBU0FyQixtQkFBbUIsQ0FBQ0ksS0FBcEIsQ0FBMEIsU0FBMUIsRUFDS0MsT0FETCxDQUNhVixJQUFJLENBQUNXLGVBRGxCLEVBQ21DLENBQUNDLEdBQUQsRUFBTUMsR0FBTixLQUFjO0FBQUVBLEVBQUFBLEdBQUcsQ0FBQ0MsVUFBSixDQUFlLEdBQWY7QUFBc0IsQ0FEekUsRUFFS0ksSUFGTCxDQUVVbEIsSUFBSSxDQUFDVyxlQUZmLEVBRWdDVCxZQUFZLENBQUNjLFVBRjdDLEVBRXlEWixlQUFlLENBQUN1QiwwQkFGekUsRSxDQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUF0QixtQkFBbUIsQ0FBQ0ksS0FBcEIsQ0FBMEIsbUJBQTFCLEVBQ0tDLE9BREwsQ0FDYVYsSUFBSSxDQUFDVyxlQURsQixFQUNtQyxDQUFDQyxHQUFELEVBQU1DLEdBQU4sS0FBYztBQUFFQSxFQUFBQSxHQUFHLENBQUNDLFVBQUosQ0FBZSxHQUFmO0FBQXNCLENBRHpFLEVBRUtDLEdBRkwsQ0FFU2YsSUFBSSxDQUFDQSxJQUZkLEVBRW9CRSxZQUFZLENBQUNjLFVBRmpDLEVBRTZDWixlQUFlLENBQUN3QiwyQkFGN0QsRUFHS1YsSUFITCxDQUdVbEIsSUFBSSxDQUFDVyxlQUhmLEVBR2dDLENBQUNDLEdBQUQsRUFBTUMsR0FBTixFQUFXUyxJQUFYLEtBQW9CO0FBQzVDVCxFQUFBQSxHQUFHLENBQUNVLFVBQUosR0FBaUIsR0FBakI7QUFDQVYsRUFBQUEsR0FBRyxDQUFDVyxHQUFKLENBQVEscURBQXFEWixHQUFHLENBQUNpQixNQUFKLENBQVdDLGVBQXhFO0FBQ0gsQ0FOTCxFQU9LVCxHQVBMLENBT1NyQixJQUFJLENBQUNXLGVBUGQsRUFPK0JULFlBQVksQ0FBQ2MsVUFQNUMsRUFPd0RkLFlBQVksQ0FBQ2lCLFdBUHJFLEVBT2tGZixlQUFlLENBQUMyQiw4QkFQbEcsRUFRS04sTUFSTCxDQVFZekIsSUFBSSxDQUFDVyxlQVJqQixFQVFrQ1QsWUFBWSxDQUFDYyxVQVIvQyxFQVEyRGQsWUFBWSxDQUFDaUIsV0FSeEUsRUFRcUZmLGVBQWUsQ0FBQzRCLHdCQVJyRztBQVVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUI3QixtQkFBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBleHByZXNzID0gcmVxdWlyZSgnZXhwcmVzcycpO1xyXG5jb25zdCBib2R5UGFyc2VyID0gcmVxdWlyZSgnYm9keS1wYXJzZXInKTtcclxuXHJcbmNvbnN0IGNvcnMgPSByZXF1aXJlKCcuL2NvcnMnKTtcclxuY29uc3QgeyBjaGVja1NjaGVtYSB9ID0gcmVxdWlyZSgnZXhwcmVzcy12YWxpZGF0b3InKTtcclxudmFyIGF1dGhlbnRpY2F0ZSA9IHJlcXVpcmUoJy4uL21pZGRsZXdhcmUvYXV0aGVudGljYXRlJyk7XHJcbnZhciB2YWxpZGF0aW9uUnVsZXMgPSByZXF1aXJlKCcuLi9taWRkbGV3YXJlL3ZhbGlkYXRpb24nKTtcclxuY29uc3QgcGxhY2VDb250cm9sbGVyID0gcmVxdWlyZSgnLi4vY29udHJvbGxlcnMvcGxhY2VDb250cm9sbGVyJyk7XHJcblxyXG5jb25zdCB2aXNpdGluZ1BsYWNlUm91dGVyID0gZXhwcmVzcy5Sb3V0ZXIoKTtcclxuXHJcbnZpc2l0aW5nUGxhY2VSb3V0ZXIudXNlKGJvZHlQYXJzZXIuanNvbigpKTtcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbi8vICAgICAgICAgICAgICBWaXNpdGluZyBQbGFjZSBSb3V0ZXNcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbnZpc2l0aW5nUGxhY2VSb3V0ZXIucm91dGUoJy8nKVxyXG4gICAgLm9wdGlvbnMoY29ycy5jb3JzV2l0aE9wdGlvbnMsIChyZXEsIHJlcykgPT4geyByZXMuc2VuZFN0YXR1cygyMDApOyB9KVxyXG4gICAgLmdldChjb3JzLmNvcnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCBwbGFjZUNvbnRyb2xsZXIuZ2V0QWxsVmlzaXRpbmdQbGFjZXMpXHJcbiAgICAucG9zdChjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgcGxhY2VDb250cm9sbGVyLmFkZFZpc2l0aW5nUGxhY2UpXHJcbiAgICAucHV0KGNvcnMuY29yc1dpdGhPcHRpb25zLCAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwMztcclxuICAgICAgICByZXMuZW5kKCdQVVQgb3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQgb24gL3Zpc2l0aW5nUGxhY2VzJyk7XHJcbiAgICB9KVxyXG4gICAgLmRlbGV0ZShjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgcGxhY2VDb250cm9sbGVyLmRlbGV0ZUFsbFZpc2l0aW5nUGxhY2VzKTtcclxudmlzaXRpbmdQbGFjZVJvdXRlci5yb3V0ZSgnL3NlYXJjaCcpXHJcbiAgICAub3B0aW9ucyhjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcbiAgICAucG9zdChjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIHBsYWNlQ29udHJvbGxlci5nZXRBbGxWaXNpdGluZ1BsYWNlc0J5TmFtZSk7XHJcblxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbi8vIFxyXG4vLyAgICAgICAgICAgICAgVmlzaXRpbmcgUGxhY2UgUm91dGVzIE9uIElEXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG52aXNpdGluZ1BsYWNlUm91dGVyLnJvdXRlKCcvOnZpc2l0aW5nUGxhY2VJZCcpXHJcbiAgICAub3B0aW9ucyhjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcbiAgICAuZ2V0KGNvcnMuY29ycywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIHBsYWNlQ29udHJvbGxlci5nZXRWaXNpdGluZ1BsYWNlRGV0YWlsc0J5SWQpXHJcbiAgICAucG9zdChjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgcmVzLmVuZCgnUE9TVCBvcGVyYXRpb24gbm90IHN1cHBvcnRlZCBvbiAvdmlzaXRpbmdQbGFjZXMvJyArIHJlcS5wYXJhbXMudmlzaXRpbmdQbGFjZUlkKTtcclxuICAgIH0pXHJcbiAgICAucHV0KGNvcnMuY29yc1dpdGhPcHRpb25zLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeUFkbWluLCBwbGFjZUNvbnRyb2xsZXIudXBkYXRlVmlzaXRpbmdQbGFjZURldGFpbHNCeUlkKVxyXG4gICAgLmRlbGV0ZShjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgcGxhY2VDb250cm9sbGVyLmRlbGV0ZUFWaXNpdGluZ1BsYWNlQnlJZCk7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IHZpc2l0aW5nUGxhY2VSb3V0ZXI7XHJcbiJdfQ==\",\"originalCode\":\"const express = require('express');\\r\\nconst bodyParser = require('body-parser');\\r\\n\\r\\nconst cors = require('./cors');\\r\\nconst { checkSchema } = require('express-validator');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\nvar validationRules = require('../middleware/validation');\\r\\nconst placeController = require('../controllers/placeController');\\r\\n\\r\\nconst visitingPlaceRouter = express.Router();\\r\\n\\r\\nvisitingPlaceRouter.use(bodyParser.json());\\r\\n\\r\\n// **********************************************************************************\\r\\n\\r\\n// Visiting Place Routes\\r\\n\\r\\n// **********************************************************************************\\r\\n\\r\\nvisitingPlaceRouter.route('/')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, placeController.getAllVisitingPlaces)\\r\\n .post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.addVisitingPlace)\\r\\n .put(cors.corsWithOptions, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('PUT operation not supported on /visitingPlaces');\\r\\n })\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.deleteAllVisitingPlaces);\\r\\nvisitingPlaceRouter.route('/search')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .post(cors.corsWithOptions, authenticate.verifyUser, placeController.getAllVisitingPlacesByName);\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Visiting Place Routes On ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nvisitingPlaceRouter.route('/:visitingPlaceId')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, placeController.getVisitingPlaceDetailsById)\\r\\n .post(cors.corsWithOptions, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('POST operation not supported on /visitingPlaces/' + req.params.visitingPlaceId);\\r\\n })\\r\\n .put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.updateVisitingPlaceDetailsById)\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.deleteAVisitingPlaceById);\\r\\n\\r\\nmodule.exports = visitingPlaceRouter;\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/9d/placeRouter_9d9aca2c41f2c1b6283bdacdd67537b2.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2539\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\placeRouter.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":9353,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":9350,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":809,\"endOffset\":849,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1067,\"endOffset\":1175,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1366,\"endOffset\":1406,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1807,\"endOffset\":1847,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1961,\"endOffset\":2100,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const VisitingPlaces = require('../models/visitingPlaces'); // **********************************************************************************\\n// \\n// Visiting Place Operations \\n// \\n// **********************************************************************************\\n\\n\\nconst getAllVisitingPlaces = (req, res, next) => {\\n var query = {};\\n VisitingPlaces.find(query, 'name description distance location timeToReach image travellingMethods').then(visitingPlaces => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n visitingPlaces: visitingPlaces\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst getAllVisitingPlacesByName = (req, res, next) => {\\n var query = {};\\n\\n if (req.body.similarTo) {\\n query = {\\n name: {\\n $regex: `${req.body.similarTo}`,\\n $options: \\\"i\\\"\\n }\\n };\\n }\\n\\n VisitingPlaces.find(query, 'name description distance location timeToReach image travellingMethods').then(visitingPlaces => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n visitingPlaces: visitingPlaces\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst addVisitingPlace = (req, res, next) => {\\n var imagesArray = []; // files = req.files;\\n // files.forEach(file => {\\n // imagesArray.push(file.filename);\\n // });\\n\\n var place = {\\n name: req.body.name,\\n description: req.body.description,\\n location: {\\n coordinates: req.body.location.coordinates\\n },\\n distance: req.body.distance,\\n timeToReach: req.body.timeToReach,\\n images: imagesArray,\\n travellingMethods: req.body.methods\\n };\\n VisitingPlaces.create(place).then(visitingPlace => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n visitingPlace: visitingPlace\\n });\\n }, err => {\\n res.statusCode = 403;\\n res.setHeader('Content-Type', 'application/json');\\n const msg = err.driver ? \\\"Duplicate Key\\\" : err._message;\\n res.json({\\n success: false,\\n message: msg\\n });\\n }).catch(err => next(err));\\n};\\n\\nconst deleteAllVisitingPlaces = (req, res, next) => {\\n VisitingPlaces.remove({}).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json(resp);\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nexports.getAllVisitingPlaces = getAllVisitingPlaces;\\nexports.getAllVisitingPlacesByName = getAllVisitingPlacesByName;\\nexports.addVisitingPlace = addVisitingPlace;\\nexports.deleteAllVisitingPlaces = deleteAllVisitingPlaces; // **********************************************************************************\\n// \\n// Visiting Place Operations Specified by ID\\n// \\n// **********************************************************************************\\n\\nconst getVisitingPlaceDetailsById = (req, res, next) => {\\n VisitingPlaces.findById(req.params.visitingPlaceId).then(visitingPlace => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n visitingPlace: visitingPlace\\n });\\n }, err => {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: \\\"Could not find the place\\\"\\n });\\n }).catch(err => next(err));\\n};\\n\\nconst updateVisitingPlaceDetailsById = (req, res, next) => {\\n VisitingPlaces.findByIdAndUpdate(req.params.visitingPlaceId, {\\n $set: req.body\\n }, {\\n new: true\\n }).then(visitingPlace => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n visitingPlace: visitingPlace\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst deleteAVisitingPlaceById = (req, res, next) => {\\n VisitingPlaces.findByIdAndRemove(req.params.visitingPlaceId).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n response: resp\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nexports.getVisitingPlaceDetailsById = getVisitingPlaceDetailsById;\\nexports.updateVisitingPlaceDetailsById = updateVisitingPlaceDetailsById;\\nexports.deleteAVisitingPlaceById = deleteAVisitingPlaceById;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBsYWNlQ29udHJvbGxlci5qcyJdLCJuYW1lcyI6WyJWaXNpdGluZ1BsYWNlcyIsInJlcXVpcmUiLCJnZXRBbGxWaXNpdGluZ1BsYWNlcyIsInJlcSIsInJlcyIsIm5leHQiLCJxdWVyeSIsImZpbmQiLCJ0aGVuIiwidmlzaXRpbmdQbGFjZXMiLCJzdGF0dXNDb2RlIiwic2V0SGVhZGVyIiwianNvbiIsInN1Y2Nlc3MiLCJlcnIiLCJjYXRjaCIsImdldEFsbFZpc2l0aW5nUGxhY2VzQnlOYW1lIiwiYm9keSIsInNpbWlsYXJUbyIsIm5hbWUiLCIkcmVnZXgiLCIkb3B0aW9ucyIsImFkZFZpc2l0aW5nUGxhY2UiLCJpbWFnZXNBcnJheSIsInBsYWNlIiwiZGVzY3JpcHRpb24iLCJsb2NhdGlvbiIsImNvb3JkaW5hdGVzIiwiZGlzdGFuY2UiLCJ0aW1lVG9SZWFjaCIsImltYWdlcyIsInRyYXZlbGxpbmdNZXRob2RzIiwibWV0aG9kcyIsImNyZWF0ZSIsInZpc2l0aW5nUGxhY2UiLCJtc2ciLCJkcml2ZXIiLCJfbWVzc2FnZSIsIm1lc3NhZ2UiLCJkZWxldGVBbGxWaXNpdGluZ1BsYWNlcyIsInJlbW92ZSIsInJlc3AiLCJleHBvcnRzIiwiZ2V0VmlzaXRpbmdQbGFjZURldGFpbHNCeUlkIiwiZmluZEJ5SWQiLCJwYXJhbXMiLCJ2aXNpdGluZ1BsYWNlSWQiLCJ1cGRhdGVWaXNpdGluZ1BsYWNlRGV0YWlsc0J5SWQiLCJmaW5kQnlJZEFuZFVwZGF0ZSIsIiRzZXQiLCJuZXciLCJkZWxldGVBVmlzaXRpbmdQbGFjZUJ5SWQiLCJmaW5kQnlJZEFuZFJlbW92ZSIsInJlc3BvbnNlIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxjQUFjLEdBQUdDLE9BQU8sQ0FBQywwQkFBRCxDQUE5QixDLENBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUEsTUFBTUMsb0JBQW9CLEdBQUcsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDN0MsTUFB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QztBQUNBTCxPQUFPLENBQUNTLHdCQUFSLEdBQW1DQSx3QkFBbkMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBWaXNpdGluZ1BsYWNlcyA9IHJlcXVpcmUoJy4uL21vZGVscy92aXNpdGluZ1BsYWNlcycpO1xyXG5cclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyBcclxuLy8gICAgICAgICAgICAgIFZpc2l0aW5nIFBsYWNlIE9wZXJhdGlvbnMgXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG5jb25zdCBnZXRBbGxWaXNpdGluZ1BsYWNlcyA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgdmFyIHF1ZXJ5ID0ge307XHJcbiAgICBWaXNpdGluZ1BsYWNlcy5maW5kKHF1ZXJ5LCAnbmFtZSBkZXNjcmlwdGlvbiBkaXN0YW5jZSBsb2NhdGlvbiB0aW1lVG9SZWFjaCBpbWFnZSB0cmF2ZWxsaW5nTWV0aG9kcycpXHJcbiAgICAgICAgLnRoZW4oKHZpc2l0aW5nUGxhY2VzKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHZpc2l0aW5nUGxhY2VzOiB2aXNpdGluZ1BsYWNlcyB9KTtcclxuICAgICAgICB9LCAoZXJyKSA9PiBuZXh0KGVycikpXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IG5leHQoZXJyKSk7XHJcbn1cclxuXHJcbmNvbnN0IGdldEFsbFZpc2l0aW5nUGxhY2VzQnlOYW1lID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICB2YXIgcXVlcnkgPSB7fTtcclxuICAgIGlmIChyZXEuYm9keS5zaW1pbGFyVG8pIHtcclxuICAgICAgICBxdWVyeSA9IHsgbmFtZTogeyAkcmVnZXg6IGAke3JlcS5ib2R5LnNpbWlsYXJUb31gLCAkb3B0aW9uczogXCJpXCIgfSB9XHJcbiAgICB9XHJcbiAgICBWaXNpdGluZ1BsYWNlcy5maW5kKHF1ZXJ5LCAnbmFtZSBkZXNjcmlwdGlvbiBkaXN0YW5jZSBsb2NhdGlvbiB0aW1lVG9SZWFjaCBpbWFnZSB0cmF2ZWxsaW5nTWV0aG9kcycpXHJcbiAgICAgICAgLnRoZW4oKHZpc2l0aW5nUGxhY2VzKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHZpc2l0aW5nUGxhY2VzOiB2aXNpdGluZ1BsYWNlcyB9KTtcclxuICAgICAgICB9LCAoZXJyKSA9PiBuZXh0KGVycikpXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IG5leHQoZXJyKSk7XHJcbn1cclxuXHJcbmNvbnN0IGFkZFZpc2l0aW5nUGxhY2UgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHZhciBpbWFnZXNBcnJheSA9IFtdO1xyXG4gICAgLy8gZmlsZXMgPSByZXEuZmlsZXM7XHJcbiAgICAvLyBmaWxlcy5mb3JFYWNoKGZpbGUgPT4ge1xyXG4gICAgLy8gICAgIGltYWdlc0FycmF5LnB1c2goZmlsZS5maWxlbmFtZSk7XHJcbiAgICAvLyB9KTtcclxuICAgIHZhciBwbGFjZSA9XHJcbiAgICB7XHJcbiAgICAgICAgbmFtZTogcmVxLmJvZHkubmFtZSxcclxuICAgICAgICBkZXNjcmlwdGlvbjogcmVxLmJvZHkuZGVzY3JpcHRpb24sXHJcbiAgICAgICAgbG9jYXRpb246IHtcclxuICAgICAgICAgICAgY29vcmRpbmF0ZXM6IHJlcS5ib2R5LmxvY2F0aW9uLmNvb3JkaW5hdGVzXHJcbiAgICAgICAgfSxcclxuICAgICAgICBkaXN0YW5jZTogcmVxLmJvZHkuZGlzdGFuY2UsXHJcbiAgICAgICAgdGltZVRvUmVhY2g6IHJlcS5ib2R5LnRpbWVUb1JlYWNoLFxyXG4gICAgICAgIGltYWdlczogaW1hZ2VzQXJyYXksXHJcbiAgICAgICAgdHJhdmVsbGluZ01ldGhvZHM6IHJlcS5ib2R5Lm1ldGhvZHNcclxuICAgIH1cclxuICAgIFZpc2l0aW5nUGxhY2VzLmNyZWF0ZShwbGFjZSlcclxuICAgICAgICAudGhlbigodmlzaXRpbmdQbGFjZSkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCB2aXNpdGluZ1BsYWNlOiB2aXNpdGluZ1BsYWNlIH0pO1xyXG4gICAgICAgIH0sIChlcnIpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIGNvbnN0IG1zZyA9IGVyci5kcml2ZXIgPyBcIkR1cGxpY2F0ZSBLZXlcIiA6IGVyci5fbWVzc2FnZTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogbXNnIH0pO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IG5leHQoZXJyKSk7XHJcbn1cclxuXHJcbmNvbnN0IGRlbGV0ZUFsbFZpc2l0aW5nUGxhY2VzID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICBWaXNpdGluZ1BsYWNlcy5yZW1vdmUoe30pXHJcbiAgICAgICAgLnRoZW4oKHJlc3ApID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHJlc3ApO1xyXG4gICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuZXhwb3J0cy5nZXRBbGxWaXNpdGluZ1BsYWNlcyA9IGdldEFsbFZpc2l0aW5nUGxhY2VzO1xyXG5leHBvcnRzLmdldEFsbFZpc2l0aW5nUGxhY2VzQnlOYW1lID0gZ2V0QWxsVmlzaXRpbmdQbGFjZXNCeU5hbWU7XHJcbmV4cG9ydHMuYWRkVmlzaXRpbmdQbGFjZSA9IGFkZFZpc2l0aW5nUGxhY2U7XHJcbmV4cG9ydHMuZGVsZXRlQWxsVmlzaXRpbmdQbGFjZXMgPSBkZWxldGVBbGxWaXNpdGluZ1BsYWNlcztcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuLy8gXHJcbi8vICAgICAgICAgICAgICBWaXNpdGluZyBQbGFjZSBPcGVyYXRpb25zIFNwZWNpZmllZCBieSBJRFxyXG4vLyBcclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuY29uc3QgZ2V0VmlzaXRpbmdQbGFjZURldGFpbHNCeUlkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICBWaXNpdGluZ1BsYWNlcy5maW5kQnlJZChyZXEucGFyYW1zLnZpc2l0aW5nUGxhY2VJZClcclxuICAgICAgICAudGhlbigodmlzaXRpbmdQbGFjZSkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCB2aXNpdGluZ1BsYWNlOiB2aXNpdGluZ1BsYWNlIH0pO1xyXG4gICAgICAgIH0sIChlcnIpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDQ7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogZmFsc2UsIG1lc3NhZ2U6IFwiQ291bGQgbm90IGZpbmQgdGhlIHBsYWNlXCIgfSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuY29uc3QgdXBkYXRlVmlzaXRpbmdQbGFjZURldGFpbHNCeUlkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICBWaXNpdGluZ1BsYWNlcy5maW5kQnlJZEFuZFVwZGF0ZShyZXEucGFyYW1zLnZpc2l0aW5nUGxhY2VJZCwge1xyXG4gICAgICAgICRzZXQ6IHJlcS5ib2R5XHJcbiAgICB9LCB7IG5ldzogdHJ1ZSB9KVxyXG4gICAgICAgIC50aGVuKCh2aXNpdGluZ1BsYWNlKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHZpc2l0aW5nUGxhY2U6IHZpc2l0aW5nUGxhY2UgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpO1xyXG59XHJcblxyXG5jb25zdCBkZWxldGVBVmlzaXRpbmdQbGFjZUJ5SWQgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIFZpc2l0aW5nUGxhY2VzLmZpbmRCeUlkQW5kUmVtb3ZlKHJlcS5wYXJhbXMudmlzaXRpbmdQbGFjZUlkKVxyXG4gICAgICAgIC50aGVuKChyZXNwKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHJlc3BvbnNlOiByZXNwIH0pO1xyXG4gICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuZXhwb3J0cy5nZXRWaXNpdGluZ1BsYWNlRGV0YWlsc0J5SWQgPSBnZXRWaXNpdGluZ1BsYWNlRGV0YWlsc0J5SWQ7XHJcbmV4cG9ydHMudXBkYXRlVmlzaXRpbmdQbGFjZURldGFpbHNCeUlkID0gdXBkYXRlVmlzaXRpbmdQbGFjZURldGFpbHNCeUlkO1xyXG5leHBvcnRzLmRlbGV0ZUFWaXNpdGluZ1BsYWNlQnlJZCA9IGRlbGV0ZUFWaXNpdGluZ1BsYWNlQnlJZDsiXX0=\",\"originalCode\":\"const VisitingPlaces = require('../models/visitingPlaces');\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Visiting Place Operations \\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nconst getAllVisitingPlaces = (req, res, next) => {\\r\\n var query = {};\\r\\n VisitingPlaces.find(query, 'name description distance location timeToReach image travellingMethods')\\r\\n .then((visitingPlaces) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, visitingPlaces: visitingPlaces });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst getAllVisitingPlacesByName = (req, res, next) => {\\r\\n var query = {};\\r\\n if (req.body.similarTo) {\\r\\n query = { name: { $regex: `${req.body.similarTo}`, $options: \\\"i\\\" } }\\r\\n }\\r\\n VisitingPlaces.find(query, 'name description distance location timeToReach image travellingMethods')\\r\\n .then((visitingPlaces) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, visitingPlaces: visitingPlaces });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst addVisitingPlace = (req, res, next) => {\\r\\n var imagesArray = [];\\r\\n // files = req.files;\\r\\n // files.forEach(file => {\\r\\n // imagesArray.push(file.filename);\\r\\n // });\\r\\n var place =\\r\\n {\\r\\n name: req.body.name,\\r\\n description: req.body.description,\\r\\n location: {\\r\\n coordinates: req.body.location.coordinates\\r\\n },\\r\\n distance: req.body.distance,\\r\\n timeToReach: req.body.timeToReach,\\r\\n images: imagesArray,\\r\\n travellingMethods: req.body.methods\\r\\n }\\r\\n VisitingPlaces.create(place)\\r\\n .then((visitingPlace) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, visitingPlace: visitingPlace });\\r\\n }, (err) => {\\r\\n res.statusCode = 403;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n const msg = err.driver ? \\\"Duplicate Key\\\" : err._message;\\r\\n res.json({ success: false, message: msg });\\r\\n })\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst deleteAllVisitingPlaces = (req, res, next) => {\\r\\n VisitingPlaces.remove({})\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json(resp);\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nexports.getAllVisitingPlaces = getAllVisitingPlaces;\\r\\nexports.getAllVisitingPlacesByName = getAllVisitingPlacesByName;\\r\\nexports.addVisitingPlace = addVisitingPlace;\\r\\nexports.deleteAllVisitingPlaces = deleteAllVisitingPlaces;\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Visiting Place Operations Specified by ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nconst getVisitingPlaceDetailsById = (req, res, next) => {\\r\\n VisitingPlaces.findById(req.params.visitingPlaceId)\\r\\n .then((visitingPlace) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, visitingPlace: visitingPlace });\\r\\n }, (err) => {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: \\\"Could not find the place\\\" });\\r\\n })\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst updateVisitingPlaceDetailsById = (req, res, next) => {\\r\\n VisitingPlaces.findByIdAndUpdate(req.params.visitingPlaceId, {\\r\\n $set: req.body\\r\\n }, { new: true })\\r\\n .then((visitingPlace) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, visitingPlace: visitingPlace });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst deleteAVisitingPlaceById = (req, res, next) => {\\r\\n VisitingPlaces.findByIdAndRemove(req.params.visitingPlaceId)\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, response: resp });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nexports.getVisitingPlaceDetailsById = getVisitingPlaceDetailsById;\\r\\nexports.updateVisitingPlaceDetailsById = updateVisitingPlaceDetailsById;\\r\\nexports.deleteAVisitingPlaceById = deleteAVisitingPlaceById;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/ee/placeController_ee3a20e34d4d356553af723b6f7f6a6e.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2540\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\placeController.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":18578,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":18575,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"getAllVisitingPlaces\",\"ranges\":[{\"startOffset\":403,\"endOffset\":782,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getAllVisitingPlacesByName\",\"ranges\":[{\"startOffset\":820,\"endOffset\":1339,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"addVisitingPlace\",\"ranges\":[{\"startOffset\":1367,\"endOffset\":2276,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"deleteAllVisitingPlaces\",\"ranges\":[{\"startOffset\":2311,\"endOffset\":2526,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getVisitingPlaceDetailsById\",\"ranges\":[{\"startOffset\":3026,\"endOffset\":3499,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"updateVisitingPlaceDetailsById\",\"ranges\":[{\"startOffset\":3541,\"endOffset\":3906,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"deleteAVisitingPlaceById\",\"ranges\":[{\"startOffset\":3942,\"endOffset\":4237,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const express = require('express');\\n\\nconst bodyParser = require('body-parser');\\n\\nconst cors = require('./cors');\\n\\nconst {\\n checkSchema\\n} = require('express-validator');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nvar validationRules = require('../middleware/validation');\\n\\nconst scheduleController = require('../controllers/scheduleController');\\n\\nconst scheduleRouter = express.Router();\\nscheduleRouter.use(bodyParser.json()); // **********************************************************************************\\n// \\n// Schedule Routes\\n// \\n// **********************************************************************************\\n\\nscheduleRouter.route('/').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, scheduleController.getAllSchedules).post(cors.corsWithOptions, authenticate.verifyUser, scheduleController.addSchedule).put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('PUT operation not supported on /schedules');\\n}).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, scheduleController.deleteAllSchedules); // **********************************************************************************\\n// \\n// Schedule Routes On ID\\n// \\n// **********************************************************************************\\n\\nscheduleRouter.route('/:scheduleId').options(cors.corsWithOptions, authenticate.verifyUser, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, scheduleController.getScheduleDetailsById).post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('POST operation not supported on /schedules/' + req.params.scheduleId);\\n}).put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, scheduleController.updateScheduleById).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, scheduleController.deleteScheduleById);\\nscheduleRouter.route('/user/:userId').options(cors.corsWithOptions, authenticate.verifyUser, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, scheduleController.getAllSchedulesForAUser);\\nmodule.exports = scheduleRouter;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNjaGVkdWxlUm91dGVyLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwiYm9keVBhcnNlciIsImNvcnMiLCJjaGVja1NjaGVtYSIsImF1dGhlbnRpY2F0ZSIsInZhbGlkYXRpb25SdWxlcyIsInNjaGVkdWxlQ29udHJvbGxlciIsInNjaGVkdWxlUm91dGVyIiwiUm91dGVyIiwidXNlIiwianNvbiIsInJvdXRlIiwib3B0aW9ucyIsImNvcnNXaXRoT3B0aW9ucyIsInJlcSIsInJlcyIsInNlbmRTdGF0dXMiLCJnZXQiLCJ2ZXJpZnlVc2VyIiwiZ2V0QWxsU2NoZWR1bGVzIiwicG9zdCIsImFkZFNjaGVkdWxlIiwicHV0IiwidmVyaWZ5TW9kZXJhdGVyIiwibmV4dCIsInN0YXR1c0NvZGUiLCJlbmQiLCJkZWxldGUiLCJ2ZXJpZnlBZG1pbiIsImRlbGV0ZUFsbFNjaGVkdWxlcyIsImdldFNjaGVkdWxlRGV0YWlsc0J5SWQiLCJwYXJhbXMiLCJzY2hlZHVsZUlkIiwidXBkYXRlU2NoZWR1bGVCeUlkIiwiZGVsZXRlU2NoZWR1bGVCeUlkIiwiZ2V0QWxsU2NoZWR1bGVzRm9yQVVzZXIiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxPQUFPLEdBQUdDLE9BQU8sQ0FBQyxTQUFELENBQXZCOztBQUNBLE1BQU1DLFVBQVUsR0FBR0QsT0FBTyxDQUFDLGFBQUQsQ0FBMUI7O0FBRUEsTUFBTUUsSUFBSSxHQUFHRixPQUFPLENBQUMsUUFBRCxDQUFwQjs7QUFDQSxNQUFNO0FBQUVHLEVBQUFBO0FBQUYsSUFBa0JILE9BQU8sQ0FBQyxtQkFBRCxDQUEvQjs7QUFDQSxJQUFJSSxZQUFZLEdBQUdKLE9BQU8sQ0FBQyw0QkFBRCxDQUExQjs7QUFDQSxJQUFJSyxlQUFlLEdBQUdMLE9BQU8sQ0FBQywwQkFBRCxDQUE3Qjs7QUFDQSxNQUFNTSxrQkFBa0IsR0FBR04sT0FBTyxDQUFDLG1DQUFELENBQWxDOztBQUVBLE1BQU1PLGNB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T0FBUCxHQUFpQjlCLGNBQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZXhwcmVzcyA9IHJlcXVpcmUoJ2V4cHJlc3MnKTtcclxuY29uc3QgYm9keVBhcnNlciA9IHJlcXVpcmUoJ2JvZHktcGFyc2VyJyk7XHJcblxyXG5jb25zdCBjb3JzID0gcmVxdWlyZSgnLi9jb3JzJyk7XHJcbmNvbnN0IHsgY2hlY2tTY2hlbWEgfSA9IHJlcXVpcmUoJ2V4cHJlc3MtdmFsaWRhdG9yJyk7XHJcbnZhciBhdXRoZW50aWNhdGUgPSByZXF1aXJlKCcuLi9taWRkbGV3YXJlL2F1dGhlbnRpY2F0ZScpO1xyXG52YXIgdmFsaWRhdGlvblJ1bGVzID0gcmVxdWlyZSgnLi4vbWlkZGxld2FyZS92YWxpZGF0aW9uJyk7XHJcbmNvbnN0IHNjaGVkdWxlQ29udHJvbGxlciA9IHJlcXVpcmUoJy4uL2NvbnRyb2xsZXJzL3NjaGVkdWxlQ29udHJvbGxlcicpXHJcblxyXG5jb25zdCBzY2hlZHVsZVJvdXRlciA9IGV4cHJlc3MuUm91dGVyKCk7XHJcblxyXG5zY2hlZHVsZVJvdXRlci51c2UoYm9keVBhcnNlci5qc29uKCkpO1xyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbi8vIFxyXG4vLyAgICAgICAgICAgICAgU2NoZWR1bGUgUm91dGVzXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG5zY2hlZHVsZVJvdXRlci5yb3V0ZSgnLycpXHJcbiAgICAub3B0aW9ucyhjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcbiAgICAuZ2V0KGNvcnMuY29ycywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsICBzY2hlZHVsZUNvbnRyb2xsZXIuZ2V0QWxsU2NoZWR1bGVzKVxyXG4gICAgLnBvc3QoY29ycy5jb3JzV2l0aE9wdGlvbnMsYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsICBzY2hlZHVsZUNvbnRyb2xsZXIuYWRkU2NoZWR1bGUpXHJcbiAgICAucHV0KGNvcnMuY29yc1dpdGhPcHRpb25zLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeU1vZGVyYXRlciwgKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgcmVzLmVuZCgnUFVUIG9wZXJhdGlvbiBub3Qgc3VwcG9ydGVkIG9uIC9zY2hlZHVsZXMnKTtcclxuICAgIH0pXHJcbiAgICAuZGVsZXRlKGNvcnMuY29yc1dpdGhPcHRpb25zLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeUFkbWluLCBzY2hlZHVsZUNvbnRyb2xsZXIuZGVsZXRlQWxsU2NoZWR1bGVzKTtcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuLy8gXHJcbi8vICAgICAgICAgICAgICBTY2hlZHVsZSBSb3V0ZXMgT24gSURcclxuLy8gXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbnNjaGVkdWxlUm91dGVyLnJvdXRlKCcvOnNjaGVkdWxlSWQnKVxyXG4gICAgLm9wdGlvbnMoY29ycy5jb3JzV2l0aE9wdGlvbnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCAocmVxLCByZXMpID0+IHsgcmVzLnNlbmRTdGF0dXMoMjAwKTsgfSlcclxuICAgIC5nZXQoY29ycy5jb3JzLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgc2NoZWR1bGVDb250cm9sbGVyLmdldFNjaGVkdWxlRGV0YWlsc0J5SWQpXHJcbiAgICAucG9zdChjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgcmVzLmVuZCgnUE9TVCBvcGVyYXRpb24gbm90IHN1cHBvcnRlZCBvbiAvc2NoZWR1bGVzLycgKyByZXEucGFyYW1zLnNjaGVkdWxlSWQpO1xyXG4gICAgfSlcclxuICAgIC5wdXQoY29ycy5jb3JzV2l0aE9wdGlvbnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCBhdXRoZW50aWNhdGUudmVyaWZ5TW9kZXJhdGVyLCBzY2hlZHVsZUNvbnRyb2xsZXIudXBkYXRlU2NoZWR1bGVCeUlkKVxyXG4gICAgLmRlbGV0ZShjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgc2NoZWR1bGVDb250cm9sbGVyLmRlbGV0ZVNjaGVkdWxlQnlJZCk7XHJcblxyXG5zY2hlZHVsZVJvdXRlci5yb3V0ZSgnL3VzZXIvOnVzZXJJZCcpXHJcbiAgICAub3B0aW9ucyhjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIChyZXEsIHJlcykgPT4geyByZXMuc2VuZFN0YXR1cygyMDApOyB9KVxyXG4gICAgLmdldChjb3JzLmNvcnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCAgc2NoZWR1bGVDb250cm9sbGVyLmdldEFsbFNjaGVkdWxlc0ZvckFVc2VyKTtcclxuXHJcbm1vZHVsZS5leHBvcnRzID0gc2NoZWR1bGVSb3V0ZXI7Il19\",\"originalCode\":\"const express = require('express');\\r\\nconst bodyParser = require('body-parser');\\r\\n\\r\\nconst cors = require('./cors');\\r\\nconst { checkSchema } = require('express-validator');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\nvar validationRules = require('../middleware/validation');\\r\\nconst scheduleController = require('../controllers/scheduleController')\\r\\n\\r\\nconst scheduleRouter = express.Router();\\r\\n\\r\\nscheduleRouter.use(bodyParser.json());\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Schedule Routes\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nscheduleRouter.route('/')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, scheduleController.getAllSchedules)\\r\\n .post(cors.corsWithOptions,authenticate.verifyUser, scheduleController.addSchedule)\\r\\n .put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('PUT operation not supported on /schedules');\\r\\n })\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, scheduleController.deleteAllSchedules);\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Schedule Routes On ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nscheduleRouter.route('/:scheduleId')\\r\\n .options(cors.corsWithOptions, authenticate.verifyUser, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, scheduleController.getScheduleDetailsById)\\r\\n .post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('POST operation not supported on /schedules/' + req.params.scheduleId);\\r\\n })\\r\\n .put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, scheduleController.updateScheduleById)\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, scheduleController.deleteScheduleById);\\r\\n\\r\\nscheduleRouter.route('/user/:userId')\\r\\n .options(cors.corsWithOptions, authenticate.verifyUser, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, scheduleController.getAllSchedulesForAUser);\\r\\n\\r\\nmodule.exports = scheduleRouter;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/9b/scheduleRouter_9b57edc7078385d142c957dea9d9e0be.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2541\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\scheduleRouter.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":9621,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":9618,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":802,\"endOffset\":842,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1085,\"endOffset\":1188,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1621,\"endOffset\":1661,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1824,\"endOffset\":1953,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":2288,\"endOffset\":2328,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const Schedules = require('../models/schedules'); // **********************************************************************************\\n// \\n// Schedule Operations \\n// \\n// **********************************************************************************\\n\\n\\nconst getAllSchedules = (req, res, next) => {\\n Schedules.find(req.query).populate(\\\"place\\\").populate(\\\"user\\\").then(schedules => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n schedules: schedules\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst getAllSchedulesForAUser = (req, res, next) => {\\n var query = {\\n \\\"user\\\": String(req.params.userId)\\n };\\n Schedules.find(query).populate(\\\"place\\\").then(schedules => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n schedules: schedules\\n });\\n }, err => {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n const msg = err._message;\\n res.json({\\n success: false,\\n message: msg\\n });\\n }).catch(err => {\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: \\\"Failed to get data\\\"\\n });\\n });\\n};\\n\\nconst addSchedule = (req, res, next) => {\\n var schedule = {\\n user: req.body.user,\\n place: req.body.place,\\n date: req.body.date,\\n state: \\\"new\\\",\\n travellingMethod: req.body.travellingMethod\\n };\\n Schedules.create(schedule).then(schedule => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n schedule: schedule\\n });\\n }, err => {\\n res.statusCode = 403;\\n res.setHeader('Content-Type', 'application/json');\\n const msg = err._message;\\n res.json({\\n success: false,\\n message: msg\\n });\\n }).catch(err => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: \\\"Failed to add a schedule\\\"\\n });\\n });\\n};\\n\\nconst deleteAllSchedules = (req, res, next) => {\\n Schedules.remove({}).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json(resp);\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nexports.getAllSchedules = getAllSchedules;\\nexports.addSchedule = addSchedule;\\nexports.deleteAllSchedules = deleteAllSchedules;\\nexports.getAllSchedulesForAUser = getAllSchedulesForAUser; // **********************************************************************************\\n// \\n// Schedule Operations Specified by ID\\n// \\n// **********************************************************************************\\n\\nconst getScheduleDetailsById = (req, res, next) => {\\n Schedules.findById(req.params.scheduleId).then(schedule => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n schedule: schedule\\n });\\n }, err => {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: \\\"Could not find the place\\\"\\n });\\n }).catch(err => next(err));\\n};\\n\\nconst updateScheduleById = (req, res, next) => {\\n Schedules.findByIdAndUpdate(req.params.scheduleId, {\\n $set: req.body\\n }, {\\n new: true\\n }).then(schedule => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n schedule: schedule\\n });\\n }, err => next(err)).catch(err => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: \\\"Update failed\\\"\\n });\\n });\\n};\\n\\nconst deleteScheduleById = (req, res, next) => {\\n Schedules.findByIdAndRemove(req.params.scheduleId).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n response: resp\\n });\\n }, err => next(err)).catch(err => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: \\\"Delete failed\\\"\\n });\\n });\\n};\\n\\nexports.getScheduleDetailsById = getScheduleDetailsById;\\nexports.updateScheduleById = updateScheduleById;\\nexports.deleteScheduleById = deleteScheduleById; // **********************************************************************************\\n// \\n// Schedule Operations Specified by UserID\\n// \\n// **********************************************************************************\\n// const getScheduleDetailsByUserId = (req, res, next) => {\\n// Schedules.findById(req.params.scheduleId)\\n// .then((schedule) => {\\n// res.statusCode = 200;\\n// res.setHeader('Content-Type', 'application/json');\\n// res.json(schedule);\\n// }, (err) => next(err))\\n// .catch((err) => next(err));\\n// }\\n// const updateScheduleByUserId = (req, res, next) => {\\n// Schedules.findByIdAndUpdate(req.params.scheduleId, {\\n// $set: req.body\\n// }, { new: true })\\n// .then((schedule) => {\\n// res.statusCode = 200;\\n// res.setHeader('Content-Type', 'application/json');\\n// res.json(schedule);\\n// }, (err) => next(err))\\n// .catch((err) => next(err));\\n// }\\n// const deleteScheduleByUserId = (req, res, next) => {\\n// Schedules.findByIdAndRemove(req.params.scheduleId)\\n// .then((resp) => {\\n// res.statusCode = 200;\\n// res.setHeader('Content-Type', 'application/json');\\n// res.json(resp);\\n// }, (err) => next(err))\\n// .catch((err) => next(err));\\n// }\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNjaGVkdWxlQ29udHJvbGxlci5qcyJdLCJuYW1lcyI6WyJTY2hlZHVsZXMiLCJyZXF1aXJlIiwiZ2V0QWxsU2NoZWR1bGVzIiwicmVxIiwicmVzIiwibmV4dCIsImZpbmQiLCJxdWVyeSIsInBvcHVsYXRlIiwidGhlbiIsInNjaGVkdWxlcyIsInN0YXR1c0NvZGUiLCJzZXRIZWFkZXIiLCJqc29uIiwic3VjY2VzcyIsImVyciIsImNhdGNoIiwiZ2V0QWxsU2NoZWR1bGVzRm9yQVVzZXIiLCJTdHJpbmciLCJwYXJhbXMiLCJ1c2VySWQiLCJtc2ciLCJfbWVzc2FnZSIsIm1lc3NhZ2UiLCJhZGRTY2hlZHVsZSIsInNjaGVkdWxlIiwidXNlciIsImJvZHkiLCJwbGFjZSIsImRhdGUiLCJzdGF0ZSIsInRyYXZlbGxpbmdNZXRob2QiLCJjcmVhdGUiLCJkZWxldGVBbGxTY2hlZHVsZXMiLCJyZW1vdmUiLCJyZXNwIiwiZXhwb3J0cyIsImdldFNjaGVkdWxlRGV0YWlsc0J5SWQiLCJmaW5kQnlJZCIsInNjaGVkdWxlSWQiLCJ1cGRhdGVTY2hlZHVsZUJ5SWQiLCJmaW5kQnlJZEFuZFVwZGF0ZSIsIiRzZXQiLCJuZXciLCJkZWxldGVTY2hlZHVsZUJ5SWQiLCJmaW5kQnlJZEFuZFJlbW92ZSIsInJlc3BvbnNlIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxTQUFTLEdBQUdDLE9BQU8sQ0FBQyxxQkFBRCxDQUF6QixDLENBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUEsTUFBTUMsZUFBZSxHQUFHLENBQUNDLEdBQUQsRUFBTUMsR0FBTixFQUFXQyxJQUFYLEtBQW9CO0FBQ3hDTCxFQUFBQSxTQUFTLENBQUNNLElBQVYsQ0FBZUgsR0FBRyxDQUFDSSxLQUFuQixFQUEwQkMsUUFBMUIsQ0FBbUMsT0FBbkMsRUFBNENBLFFBQTVDLENBQXFELE1BQXJELEVBQ0tDLElBREwsQ0FDV0MsU0FBRCxJQUFlO0FBQ2pCTixJQUFBQSxHQUFHLENBQUNPLFVBQUosR0FBaUIs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LE1BQUFBLFFBQVEsRUFBQ1g7QUFBMUIsS0FBVDtBQUNILEdBTEwsRUFLUXBCLEdBQUQsSUFBU1YsSUFBSSxDQUFDVSxHQUFELENBTHBCLEVBTUtDLEtBTkwsQ0FNWUQsR0FBRCxJQUFTO0FBQ1pYLElBQUFBLEdBQUcsQ0FBQ08sVUFBSixHQUFpQixHQUFqQjtBQUNBUCxJQUFBQSxHQUFHLENBQUNRLFNBQUosQ0FBYyxjQUFkLEVBQThCLGtCQUE5QjtBQUNBUixJQUFBQSxHQUFHLENBQUNTLElBQUosQ0FBUztBQUFFQyxNQUFBQSxPQUFPLEVBQUUsS0FBWDtBQUFrQlMsTUFBQUEsT0FBTyxFQUFFO0FBQTNCLEtBQVQ7QUFDSCxHQVZMO0FBV0gsQ0FaRDs7QUFjQWEsT0FBTyxDQUFDQyxzQkFBUixHQUFpQ0Esc0JBQWpDO0FBQ0FELE9BQU8sQ0FBQ0ksa0JBQVIsR0FBNkJBLGtCQUE3QjtBQUNBSixPQUFPLENBQUNRLGtCQUFSLEdBQTZCQSxrQkFBN0IsQyxDQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgU2NoZWR1bGVzID0gcmVxdWlyZSgnLi4vbW9kZWxzL3NjaGVkdWxlcycpO1xyXG5cclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyBcclxuLy8gICAgICAgICAgICAgIFNjaGVkdWxlIE9wZXJhdGlvbnMgXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG5jb25zdCBnZXRBbGxTY2hlZHVsZXMgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIFNjaGVkdWxlcy5maW5kKHJlcS5xdWVyeSkucG9wdWxhdGUoXCJwbGFjZVwiKS5wb3B1bGF0ZShcInVzZXJcIilcclxuICAgICAgICAudGhlbigoc2NoZWR1bGVzKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHNjaGVkdWxlczpzY2hlZHVsZXMgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpO1xyXG59XHJcblxyXG5jb25zdCBnZXRBbGxTY2hlZHVsZXNGb3JBVXNlciA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgdmFyIHF1ZXJ5ID0geyBcInVzZXJcIjogU3RyaW5nKHJlcS5wYXJhbXMudXNlcklkKSB9O1xyXG4gICAgU2NoZWR1bGVzLmZpbmQocXVlcnkpLnBvcHVsYXRlKFwicGxhY2VcIilcclxuICAgICAgICAudGhlbigoc2NoZWR1bGVzKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHNjaGVkdWxlczpzY2hlZHVsZXMgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gIHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDQ7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIGNvbnN0IG1zZyA9IGVyci5fbWVzc2FnZTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogbXNnIH0pO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA1MDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogZmFsc2UsIG1lc3NhZ2U6IFwiRmFpbGVkIHRvIGdldCBkYXRhXCIgfSk7XHJcbiAgICAgICAgfSk7XHJcbn1cclxuXHJcbmNvbnN0IGFkZFNjaGVkdWxlID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICB2YXIgc2NoZWR1bGUgPSB7XHJcbiAgICAgICAgdXNlcjogcmVxLmJvZHkudXNlcixcclxuICAgICAgICBwbGFjZTogcmVxLmJvZHkucGxhY2UsXHJcbiAgICAgICAgZGF0ZTogcmVxLmJvZHkuZGF0ZSxcclxuICAgICAgICBzdGF0ZTogXCJuZXdcIixcclxuICAgICAgICB0cmF2ZWxsaW5nTWV0aG9kOiByZXEuYm9keS50cmF2ZWxsaW5nTWV0aG9kXHJcbiAgICB9XHJcbiAgICBTY2hlZHVsZXMuY3JlYXRlKHNjaGVkdWxlKVxyXG4gICAgICAgIC50aGVuKChzY2hlZHVsZSkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCBzY2hlZHVsZTpzY2hlZHVsZSB9KTtcclxuICAgICAgICB9LCAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNDAzO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICBjb25zdCBtc2cgPSBlcnIuX21lc3NhZ2U7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogZmFsc2UsIG1lc3NhZ2U6IG1zZyB9KTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IGZhbHNlLCBtZXNzYWdlOiBcIkZhaWxlZCB0byBhZGQgYSBzY2hlZHVsZVwiIH0pO1xyXG4gICAgICAgIH0pO1xyXG59XHJcblxyXG5jb25zdCBkZWxldGVBbGxTY2hlZHVsZXMgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIFNjaGVkdWxlcy5yZW1vdmUoe30pXHJcbiAgICAgICAgLnRoZW4oKHJlc3ApID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHJlc3ApO1xyXG4gICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuZXhwb3J0cy5nZXRBbGxTY2hlZHVsZXMgPSBnZXRBbGxTY2hlZHVsZXM7XHJcbmV4cG9ydHMuYWRkU2NoZWR1bGUgPSBhZGRTY2hlZHVsZTtcclxuZXhwb3J0cy5kZWxldGVBbGxTY2hlZHVsZXMgPSBkZWxldGVBbGxTY2hlZHVsZXM7XHJcbmV4cG9ydHMuZ2V0QWxsU2NoZWR1bGVzRm9yQVVzZXIgPSBnZXRBbGxTY2hlZHVsZXNGb3JBVXNlcjtcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuLy8gXHJcbi8vICAgICAgICAgICAgICBTY2hlZHVsZSBPcGVyYXRpb25zIFNwZWNpZmllZCBieSBJRFxyXG4vLyBcclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuY29uc3QgZ2V0U2NoZWR1bGVEZXRhaWxzQnlJZCA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgU2NoZWR1bGVzLmZpbmRCeUlkKHJlcS5wYXJhbXMuc2NoZWR1bGVJZClcclxuICAgICAgICAudGhlbigoc2NoZWR1bGUpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgc2NoZWR1bGU6c2NoZWR1bGUgfSk7XHJcbiAgICAgICAgfSwgIChlcnIpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDQ7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogZmFsc2UsIG1lc3NhZ2U6IFwiQ291bGQgbm90IGZpbmQgdGhlIHBsYWNlXCIgfSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuY29uc3QgdXBkYXRlU2NoZWR1bGVCeUlkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICBTY2hlZHVsZXMuZmluZEJ5SWRBbmRVcGRhdGUocmVxLnBhcmFtcy5zY2hlZHVsZUlkLCB7XHJcbiAgICAgICAgJHNldDogcmVxLmJvZHlcclxuICAgIH0sIHsgbmV3OiB0cnVlIH0pXHJcbiAgICAgICAgLnRoZW4oKHNjaGVkdWxlKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHNjaGVkdWxlOnNjaGVkdWxlIH0pO1xyXG4gICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogXCJVcGRhdGUgZmFpbGVkXCIgfSk7XHJcbiAgICAgICAgfSk7XHJcbn1cclxuXHJcbmNvbnN0IGRlbGV0ZVNjaGVkdWxlQnlJZCA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgU2NoZWR1bGVzLmZpbmRCeUlkQW5kUmVtb3ZlKHJlcS5wYXJhbXMuc2NoZWR1bGVJZClcclxuICAgICAgICAudGhlbigocmVzcCkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCByZXNwb25zZTpyZXNwIH0pO1xyXG4gICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogXCJEZWxldGUgZmFpbGVkXCIgfSk7XHJcbiAgICAgICAgfSk7XHJcbn1cclxuXHJcbmV4cG9ydHMuZ2V0U2NoZWR1bGVEZXRhaWxzQnlJZCA9IGdldFNjaGVkdWxlRGV0YWlsc0J5SWQ7XHJcbmV4cG9ydHMudXBkYXRlU2NoZWR1bGVCeUlkID0gdXBkYXRlU2NoZWR1bGVCeUlkO1xyXG5leHBvcnRzLmRlbGV0ZVNjaGVkdWxlQnlJZCA9IGRlbGV0ZVNjaGVkdWxlQnlJZDtcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuLy8gXHJcbi8vICAgICAgICAgICAgICBTY2hlZHVsZSBPcGVyYXRpb25zIFNwZWNpZmllZCBieSBVc2VySURcclxuLy8gXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbi8vIGNvbnN0IGdldFNjaGVkdWxlRGV0YWlsc0J5VXNlcklkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbi8vICAgICBTY2hlZHVsZXMuZmluZEJ5SWQocmVxLnBhcmFtcy5zY2hlZHVsZUlkKVxyXG4vLyAgICAgICAgIC50aGVuKChzY2hlZHVsZSkgPT4ge1xyXG4vLyAgICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuLy8gICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuLy8gICAgICAgICAgICAgcmVzLmpzb24oc2NoZWR1bGUpO1xyXG4vLyAgICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuLy8gICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxuLy8gfVxyXG5cclxuLy8gY29uc3QgdXBkYXRlU2NoZWR1bGVCeVVzZXJJZCA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4vLyAgICAgU2NoZWR1bGVzLmZpbmRCeUlkQW5kVXBkYXRlKHJlcS5wYXJhbXMuc2NoZWR1bGVJZCwge1xyXG4vLyAgICAgICAgICRzZXQ6IHJlcS5ib2R5XHJcbi8vICAgICB9LCB7IG5ldzogdHJ1ZSB9KVxyXG4vLyAgICAgICAgIC50aGVuKChzY2hlZHVsZSkgPT4ge1xyXG4vLyAgICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuLy8gICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuLy8gICAgICAgICAgICAgcmVzLmpzb24oc2NoZWR1bGUpO1xyXG4vLyAgICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuLy8gICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxuLy8gfVxyXG5cclxuLy8gY29uc3QgZGVsZXRlU2NoZWR1bGVCeVVzZXJJZCA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4vLyAgICAgU2NoZWR1bGVzLmZpbmRCeUlkQW5kUmVtb3ZlKHJlcS5wYXJhbXMuc2NoZWR1bGVJZClcclxuLy8gICAgICAgICAudGhlbigocmVzcCkgPT4ge1xyXG4vLyAgICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuLy8gICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuLy8gICAgICAgICAgICAgcmVzLmpzb24ocmVzcCk7XHJcbi8vICAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4vLyAgICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpO1xyXG4vLyB9Il19\",\"originalCode\":\"const Schedules = require('../models/schedules');\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Schedule Operations \\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nconst getAllSchedules = (req, res, next) => {\\r\\n Schedules.find(req.query).populate(\\\"place\\\").populate(\\\"user\\\")\\r\\n .then((schedules) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, schedules:schedules });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst getAllSchedulesForAUser = (req, res, next) => {\\r\\n var query = { \\\"user\\\": String(req.params.userId) };\\r\\n Schedules.find(query).populate(\\\"place\\\")\\r\\n .then((schedules) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, schedules:schedules });\\r\\n }, (err) => {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n const msg = err._message;\\r\\n res.json({ success: false, message: msg });\\r\\n })\\r\\n .catch((err) => {\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: \\\"Failed to get data\\\" });\\r\\n });\\r\\n}\\r\\n\\r\\nconst addSchedule = (req, res, next) => {\\r\\n var schedule = {\\r\\n user: req.body.user,\\r\\n place: req.body.place,\\r\\n date: req.body.date,\\r\\n state: \\\"new\\\",\\r\\n travellingMethod: req.body.travellingMethod\\r\\n }\\r\\n Schedules.create(schedule)\\r\\n .then((schedule) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, schedule:schedule });\\r\\n }, (err) => {\\r\\n res.statusCode = 403;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n const msg = err._message;\\r\\n res.json({ success: false, message: msg });\\r\\n })\\r\\n .catch((err) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: \\\"Failed to add a schedule\\\" });\\r\\n });\\r\\n}\\r\\n\\r\\nconst deleteAllSchedules = (req, res, next) => {\\r\\n Schedules.remove({})\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json(resp);\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nexports.getAllSchedules = getAllSchedules;\\r\\nexports.addSchedule = addSchedule;\\r\\nexports.deleteAllSchedules = deleteAllSchedules;\\r\\nexports.getAllSchedulesForAUser = getAllSchedulesForAUser;\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Schedule Operations Specified by ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nconst getScheduleDetailsById = (req, res, next) => {\\r\\n Schedules.findById(req.params.scheduleId)\\r\\n .then((schedule) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, schedule:schedule });\\r\\n }, (err) => {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: \\\"Could not find the place\\\" });\\r\\n })\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst updateScheduleById = (req, res, next) => {\\r\\n Schedules.findByIdAndUpdate(req.params.scheduleId, {\\r\\n $set: req.body\\r\\n }, { new: true })\\r\\n .then((schedule) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, schedule:schedule });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: \\\"Update failed\\\" });\\r\\n });\\r\\n}\\r\\n\\r\\nconst deleteScheduleById = (req, res, next) => {\\r\\n Schedules.findByIdAndRemove(req.params.scheduleId)\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, response:resp });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: \\\"Delete failed\\\" });\\r\\n });\\r\\n}\\r\\n\\r\\nexports.getScheduleDetailsById = getScheduleDetailsById;\\r\\nexports.updateScheduleById = updateScheduleById;\\r\\nexports.deleteScheduleById = deleteScheduleById;\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Schedule Operations Specified by UserID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\n// const getScheduleDetailsByUserId = (req, res, next) => {\\r\\n// Schedules.findById(req.params.scheduleId)\\r\\n// .then((schedule) => {\\r\\n// res.statusCode = 200;\\r\\n// res.setHeader('Content-Type', 'application/json');\\r\\n// res.json(schedule);\\r\\n// }, (err) => next(err))\\r\\n// .catch((err) => next(err));\\r\\n// }\\r\\n\\r\\n// const updateScheduleByUserId = (req, res, next) => {\\r\\n// Schedules.findByIdAndUpdate(req.params.scheduleId, {\\r\\n// $set: req.body\\r\\n// }, { new: true })\\r\\n// .then((schedule) => {\\r\\n// res.statusCode = 200;\\r\\n// res.setHeader('Content-Type', 'application/json');\\r\\n// res.json(schedule);\\r\\n// }, (err) => next(err))\\r\\n// .catch((err) => next(err));\\r\\n// }\\r\\n\\r\\n// const deleteScheduleByUserId = (req, res, next) => {\\r\\n// Schedules.findByIdAndRemove(req.params.scheduleId)\\r\\n// .then((resp) => {\\r\\n// res.statusCode = 200;\\r\\n// res.setHeader('Content-Type', 'application/json');\\r\\n// res.json(resp);\\r\\n// }, (err) => next(err))\\r\\n// .catch((err) => next(err));\\r\\n// }\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/df/scheduleController_df2aee56329a17301dcb5de3e55455e9.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2542\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\scheduleController.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":22878,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":22875,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"getAllSchedules\",\"ranges\":[{\"startOffset\":382,\"endOffset\":688,\"count\":2}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":472,\"endOffset\":642,\"count\":2}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":644,\"endOffset\":660,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":668,\"endOffset\":684,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getAllSchedulesForAUser\",\"ranges\":[{\"startOffset\":723,\"endOffset\":1396,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"addSchedule\",\"ranges\":[{\"startOffset\":1419,\"endOffset\":2190,\"count\":2}],\"isBlockCoverage\":true},{\"functionName\":\"Schedules.create.then.res.statusCode\",\"ranges\":[{\"startOffset\":1642,\"endOffset\":1809,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1811,\"endOffset\":1998,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":2006,\"endOffset\":2186,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"deleteAllSchedules\",\"ranges\":[{\"startOffset\":2220,\"endOffset\":2430,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":2270,\"endOffset\":2384,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":2386,\"endOffset\":2402,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":2410,\"endOffset\":2426,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getScheduleDetailsById\",\"ranges\":[{\"startOffset\":2883,\"endOffset\":3331,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"updateScheduleById\",\"ranges\":[{\"startOffset\":3361,\"endOffset\":3854,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"deleteScheduleById\",\"ranges\":[{\"startOffset\":3884,\"endOffset\":4322,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const mongoose = require('mongoose');\\n\\nconst Schema = mongoose.Schema;\\n\\nrequire('mongoose-currency').loadType(mongoose);\\n\\nconst Currency = mongoose.Types.Currency;\\nconst scheduleSchema = new Schema({\\n user: {\\n type: mongoose.Schema.Types.ObjectId,\\n ref: \\\"User\\\"\\n },\\n place: {\\n type: mongoose.Schema.Types.ObjectId,\\n ref: \\\"Place\\\"\\n },\\n date: {\\n type: Date,\\n required: true\\n },\\n fair: {\\n type: Currency,\\n min: 0\\n },\\n state: {\\n type: String,\\n default: \\\"new\\\",\\n enum: [\\\"new\\\", \\\"not-completed\\\", \\\"canceled\\\", \\\"completed\\\"]\\n },\\n travellingMethod: {\\n type: String,\\n required: true,\\n enum: ['Bus', 'Car', 'Train', 'Threewheeler', 'Foot']\\n }\\n}, {\\n timestamps: true\\n});\\nvar Schedules = mongoose.model('Schedule', scheduleSchema);\\nmodule.exports = Schedules;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNjaGVkdWxlcy5qcyJdLCJuYW1lcyI6WyJtb25nb29zZSIsInJlcXVpcmUiLCJTY2hlbWEiLCJsb2FkVHlwZSIsIkN1cnJlbmN5IiwiVHlwZXMiLCJzY2hlZHVsZVNjaGVtYSIsInVzZXIiLCJ0eXBlIiwiT2JqZWN0SWQiLCJyZWYiLCJwbGFjZSIsImRhdGUiLCJEYXRlIiwicmVxdWlyZWQiLCJmYWlyIiwibWluIiwic3RhdGUiLCJTdHJpbmciLCJkZWZhdWx0IiwiZW51bSIsInRyYXZlbGxpbmdNZXRob2QiLCJ0aW1lc3RhbXBzIiwiU2NoZWR1bGVzIiwibW9kZWwiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxRQUFRLEdBQUdDLE9BQU8sQ0FBQyxVQUFELENBQXhCOztBQUNBLE1BQU1DLE1BQU0sR0FBR0YsUUFBUSxDQUFDRSxNQUF4Qjs7QUFDQUQsT0FBTyxDQUFDLG1CQUFELENBQVAsQ0FBNkJFLFFBQTdCLENBQXNDSCxRQUF0Qzs7QUFDQSxNQUFNSSxRQUFRLEdBQUdKLFFBQVEsQ0FBQ0ssS0FBVCxDQUFlRCxRQUFoQztBQUNBLE1BQU1FLGNBQWMsR0FBRyxJQUFJSixNQUFKLENBQVc7QUFDOUJLLEVBQUFBLElBQUksRUFBRTtBQUNGQyxJQUFBQSxJQUFJLEVBQUVSLFFBQVEsQ0FBQ0UsTUFBVCxDQUFnQkcsS0FBaEIsQ0FBc0JJLFFBRDFCO0FBRUZDLElBQUFBLEdBQUcsRUFBRTtBQUZILEdBRHdCO0FBSzlCQyxFQUFBQSxLQUFLLEVBQUU7QUFDSEgsSUFBQUEsSUFBSSxFQUFFUixRQUFRLENBQUNFLE1BQVQsQ0FBZ0JHLEtBQWhCLENBQXNCSSxRQUR6QjtBQUVIQyxJQUFBQSxHQUFHLEVBQUU7QUFGRixHQUx1QjtBQVM5QkUsRUFBQUEsSUFBSSxFQUFFO0FBQ0ZKLElBQUFBLElBQUksRUFBRUssSUFESjtBQUVGQyxJQUFBQSxRQUFRLEVBQUU7QUFGUixHQVR3QjtBQWE5QkMsRUFBQUEsSUFBSSxFQUFFO0FBQ0ZQLElBQUFBLElBQUksRUFBRUosUUFESjtBQUVGWSxJQUFBQSxHQUFHLEVBQUU7QUFGSCxHQWJ3QjtBQWlCOUJDLEVBQUFBLEtBQUssRUFBRTtBQUNIVCxJQUFBQSxJQUFJLEVBQUVVLE1BREg7QUFFSEMsSUFBQUEsT0FBTyxFQUFFLEtBRk47QUFHSEMsSUFBQUEsSUFBSSxFQUFFLENBQUMsS0FBRCxFQUFPLGVBQVAsRUFBd0IsVUFBeEIsRUFBb0MsV0FBcEM7QUFISCxHQWpCdUI7QUFzQjlCQyxFQUFBQSxnQkFBZ0IsRUFBRTtBQUNkYixJQUFBQSxJQUFJLEVBQUVVLE1BRFE7QUFFZEosSUFBQUEsUUFBUSxFQUFFLElBRkk7QUFHZE0sSUFBQUEsSUFBSSxFQUFFLENBQUMsS0FBRCxFQUFRLEtBQVIsRUFBZSxPQUFmLEVBQXdCLGNBQXhCLEVBQXdDLE1BQXhDO0FBSFE7QUF0QlksQ0FBWCxFQTJCcEI7QUFDQ0UsRUFBQUEsVUFBVSxFQUFFO0FBRGIsQ0EzQm9CLENBQXZCO0FBK0JBLElBQUlDLFNBQVMsR0FBR3ZCLFFBQVEsQ0FBQ3dCLEtBQVQsQ0FBZSxVQUFmLEVBQTJCbEIsY0FBM0IsQ0FBaEI7QUFFQW1CLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQkgsU0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBtb25nb29zZSA9IHJlcXVpcmUoJ21vbmdvb3NlJyk7XHJcbmNvbnN0IFNjaGVtYSA9IG1vbmdvb3NlLlNjaGVtYTtcclxucmVxdWlyZSgnbW9uZ29vc2UtY3VycmVuY3knKS5sb2FkVHlwZShtb25nb29zZSk7XHJcbmNvbnN0IEN1cnJlbmN5ID0gbW9uZ29vc2UuVHlwZXMuQ3VycmVuY3k7XHJcbmNvbnN0IHNjaGVkdWxlU2NoZW1hID0gbmV3IFNjaGVtYSh7XHJcbiAgICB1c2VyOiB7XHJcbiAgICAgICAgdHlwZTogbW9uZ29vc2UuU2NoZW1hLlR5cGVzLk9iamVjdElkLFxyXG4gICAgICAgIHJlZjogXCJVc2VyXCJcclxuICAgIH0sXHJcbiAgICBwbGFjZToge1xyXG4gICAgICAgIHR5cGU6IG1vbmdvb3NlLlNjaGVtYS5UeXBlcy5PYmplY3RJZCxcclxuICAgICAgICByZWY6IFwiUGxhY2VcIlxyXG4gICAgfSxcclxuICAgIGRhdGU6IHtcclxuICAgICAgICB0eXBlOiBEYXRlLFxyXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlXHJcbiAgICB9LFxyXG4gICAgZmFpcjoge1xyXG4gICAgICAgIHR5cGU6IEN1cnJlbmN5LFxyXG4gICAgICAgIG1pbjogMFxyXG4gICAgfSxcclxuICAgIHN0YXRlOiB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICAgIGRlZmF1bHQ6IFwibmV3XCIsXHJcbiAgICAgICAgZW51bTogW1wibmV3XCIsXCJub3QtY29tcGxldGVkXCIsIFwiY2FuY2VsZWRcIiwgXCJjb21wbGV0ZWRcIl1cclxuICAgIH0sXHJcbiAgICB0cmF2ZWxsaW5nTWV0aG9kOiB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxyXG4gICAgICAgIGVudW06IFsnQnVzJywgJ0NhcicsICdUcmFpbicsICdUaHJlZXdoZWVsZXInLCAnRm9vdCddXHJcbiAgICB9XHJcbn0sIHtcclxuICAgIHRpbWVzdGFtcHM6IHRydWVcclxufSk7XHJcblxyXG52YXIgU2NoZWR1bGVzID0gbW9uZ29vc2UubW9kZWwoJ1NjaGVkdWxlJywgc2NoZWR1bGVTY2hlbWEpO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBTY2hlZHVsZXM7Il19\",\"originalCode\":\"const mongoose = require('mongoose');\\r\\nconst Schema = mongoose.Schema;\\r\\nrequire('mongoose-currency').loadType(mongoose);\\r\\nconst Currency = mongoose.Types.Currency;\\r\\nconst scheduleSchema = new Schema({\\r\\n user: {\\r\\n type: mongoose.Schema.Types.ObjectId,\\r\\n ref: \\\"User\\\"\\r\\n },\\r\\n place: {\\r\\n type: mongoose.Schema.Types.ObjectId,\\r\\n ref: \\\"Place\\\"\\r\\n },\\r\\n date: {\\r\\n type: Date,\\r\\n required: true\\r\\n },\\r\\n fair: {\\r\\n type: Currency,\\r\\n min: 0\\r\\n },\\r\\n state: {\\r\\n type: String,\\r\\n default: \\\"new\\\",\\r\\n enum: [\\\"new\\\",\\\"not-completed\\\", \\\"canceled\\\", \\\"completed\\\"]\\r\\n },\\r\\n travellingMethod: {\\r\\n type: String,\\r\\n required: true,\\r\\n enum: ['Bus', 'Car', 'Train', 'Threewheeler', 'Foot']\\r\\n }\\r\\n}, {\\r\\n timestamps: true\\r\\n});\\r\\n\\r\\nvar Schedules = mongoose.model('Schedule', scheduleSchema);\\r\\n\\r\\nmodule.exports = Schedules;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/e2/schedules_e2f8e79bc28961f4db3736c92d490e47.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2543\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\models\\\\schedules.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":4238,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":4235,\"count\":1}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const express = require('express');\\n\\nconst bodyParser = require('body-parser');\\n\\nconst cors = require('./cors');\\n\\nconst {\\n checkSchema\\n} = require('express-validator');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nvar validationRules = require('../middleware/validation');\\n\\nconst touristController = require('../controllers/touristController');\\n\\nconst touristRouter = express.Router();\\ntouristRouter.use(bodyParser.json()); // **********************************************************************************\\n// \\n// Tourist Routes\\n// \\n// **********************************************************************************\\n\\ntouristRouter.route('/').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, touristController.getAllTourists).post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, touristController.addTourist).put(cors.corsWithOptions, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('PUT operation not supported on /tourists');\\n}).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, touristController.deleteAllTourists);\\ntouristRouter.route('/search').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).post(cors.corsWithOptions, authenticate.verifyUser, touristController.getAllTouristsByName); // **********************************************************************************\\n// \\n// Tourist Routes Specified by ID\\n// \\n// **********************************************************************************\\n\\ntouristRouter.route('/:touristId').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, touristController.getTouristDetailsById).post(cors.corsWithOptions, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('POST operation not supported on /tourists/' + req.params.touristId);\\n}).put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, touristController.updateTouristDetailsById).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, touristController.deleteATouristById);\\nmodule.exports = touristRouter;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRvdXJpc3RSb3V0ZXIuanMiXSwibmFtZXMiOlsiZXhwcmVzcyIsInJlcXVpcmUiLCJib2R5UGFyc2VyIiwiY29ycyIsImNoZWNrU2NoZW1hIiwiYXV0aGVudGljYXRlIiwidmFsaWRhdGlvblJ1bGVzIiwidG91cmlzdENvbnRyb2xsZXIiLCJ0b3VyaXN0Um91dGVyIiwiUm91dGVyIiwidXNlIiwianNvbiIsInJvdXRlIiwib3B0aW9ucyIsImNvcnNXaXRoT3B0aW9ucyIsInJlcSIsInJlcyIsInNlbmRTdGF0dXMiLCJnZXQiLCJ2ZXJpZnlVc2VyIiwiZ2V0QWxsVG91cmlzdHMiLCJwb3N0IiwidmVyaWZ5TW9kZXJhdGVyIiwiYWRkVG91cmlzdCIsInB1dCIsIm5leHQiLCJzdGF0dXNDb2RlIiwiZW5kIiwiZGVsZXRlIiwidmVyaWZ5QWRtaW4iLCJkZWxldGVBbGxUb3VyaXN0cyIsImdldEFsbFRvdXJpc3RzQnlOYW1lIiwiZ2V0VG91cmlzdERldGFpbHNCeUlkIiwicGFyYW1zIiwidG91cmlzdElkIiwidXBkYXRlVG91cmlzdERldGFpbHNCeUlkIiwiZGVsZXRlQVRvdXJpc3RCeUlkIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsT0FBTyxHQUFHQyxPQUFPLENBQUMsU0FBRCxDQUF2Qjs7QUFDQSxNQUFNQyxVQUFVLEdBQUdELE9BQU8sQ0FBQyxhQUFELENBQTFCOztBQUVBLE1BQU1FLElBQUksR0FBR0YsT0FBTyxDQUFDLFFBQUQsQ0FBcEI7O0FBQ0EsTUFBTTtBQUFFRyxFQUFBQTtBQUFGLElBQWtCSCxPQUFPLENBQUMsbUJBQUQsQ0FBL0I7O0FBQ0EsSUFBSUksWUFBWSxHQUFHSixPQUFPLENBQUMsNEJBQUQsQ0FBMUI7O0FBQ0EsSUFBSUssZUFBZSxHQUFHTCxPQUFPLENBQUMsMEJBQUQsQ0FBN0I7O0FBQ0EsTUFBTU0saUJBQWlCLEdBQUdOLE9BQU8sQ0FBQyxrQ0FBRCxDQUFqQzs7QUFFQSxNQUFNTyxhQUFhLEdBQUdSLE9BQU8sQ0FBQ1MsTUFBUixFQUF0QjtBQUVBRCxhQUFhLENBQUNFLEdBQWQsQ0FBa0JSLFVBQVUsQ0FBQ1MsSUFBWCxFQUFsQixFLENBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQUgsYUFBYSxDQUFDSSxLQUFkLENBQW9CLEdBQXBCLEVBQ0tDLE9BREwsQ0FDYVYsSUFBSSxDQUFDVyxlQURsQixFQUNtQyxDQUFDQyxHQUFELEVBQU1DLEdBQU4sS0FBYztBQUFFQSxFQUFBQSxHQUFHLENBQUNDLFVBQUosQ0FBZSxHQUFmO0FBQXNCLENBRHpFLEVBRUtDLEdBRkwsQ0FFU2YsSUFBSSxDQUFDQSxJQUZkLEVBRXFCRSxZQUFZLENBQUNjLFVBRmxDLEVBRWdEWixpQkFBaUIsQ0FBQ2EsY0FGbEUsRUFHS0MsSUFITCxDQUdVbEIsSUFBSSxDQUFDVyxlQUhmLEVBR2lDVCxZQUFZLENBQUNjLFVBSDlDLEVBRzBEZCxZQUFZLENBQUNpQixlQUh2RSxFQUd3RmYsaUJBQWlCLENBQUNnQixVQUgxRyxFQUlLQyxHQUpMLENBSVNyQixJQUFJLENBQUNXLGVBSmQsRUFJK0IsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEVBQVdTLElBQVgsS0FBb0I7QUFDM0NULEVBQUFBLEdBQUcsQ0FBQ1UsVUFBSixHQUFpQixHQUFqQjtBQUNBVixFQUFBQSxHQUFHLENBQUNXLEdBQUosQ0FBUSwwQ0FBUjtBQUNILENBUEwsRUFRS0MsTUFSTCxDQVFZekIsSUFBSSxDQUFDVyxlQVJqQixFQVFrQ1QsWUFBWSxDQUFDYyxVQVIvQyxFQVEyRGQsWUFBWSxDQUFDd0IsV0FSeEUsRUFRc0Z0QixpQkFBaUIsQ0FBQ3VCLGlCQVJ4RztBQVNBdEIsYUFBYSxDQUFDSSxLQUFkLENBQW9CLFNBQXBCLEVBQ0tDLE9BREwsQ0FDYVYsSUFBSSxDQUFDVyxlQURsQixFQUNtQyxDQUFDQyxHQUFELEVBQU1DLEdBQU4sS0FBYztBQUFFQSxFQUFBQSxHQUFHLENBQUNDLFVBQUosQ0FBZSxHQUFmO0FBQXNCLENBRHpFLEVBRUtJLElBRkwsQ0FFVWxCLElBQUksQ0FBQ1csZUFGZixFQUVnQ1QsWUFBWSxDQUFDYyxVQUY3QyxFQUUwRFosaUJBQWlCLENBQUN3QixvQkFGNUUsRSxDQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUF2QixhQUFhLENBQUNJLEtBQWQsQ0FBb0IsYUFBcEIsRUFDS0MsT0FETCxDQUNhVixJQUFJLENBQUNXLGVBRGxCLEVBQ21DLENBQUNDLEdBQUQsRUFBTUMsR0FBTixLQUFjO0FBQUVBLEVBQUFBLEdBQUcsQ0FBQ0MsVUFBSixDQUFlLEdBQWY7QUFBc0IsQ0FEekUsRUFFS0MsR0FGTCxDQUVTZixJQUFJLENBQUNBLElBRmQsRUFFb0JFLFlBQVksQ0FBQ2MsVUFGakMsRUFFK0NaLGlCQUFpQixDQUFDeUIscUJBRmpFLEVBR0tYLElBSEwsQ0FHVWxCLElBQUksQ0FBQ1csZUFIZixFQUdnQyxDQUFDQyxHQUFELEVBQU1DLEdBQU4sRUFBV1MsSUFBWCxLQUFvQjtBQUM1Q1QsRUFBQUEsR0FBRyxDQUFDVSxVQUFKLEdBQWlCLEdBQWpCO0FBQ0FWLEVBQUFBLEdBQUcsQ0FBQ1csR0FBSixDQUFRLCtDQUErQ1osR0FBRyxDQUFDa0IsTUFBSixDQUFXQyxTQUFsRTtBQUNILENBTkwsRUFPS1YsR0FQTCxDQU9TckIsSUFBSSxDQUFDVyxlQVBkLEVBTytCVCxZQUFZLENBQUNjLFVBUDVDLEVBT3dEZCxZQUFZLENBQUNpQixlQVByRSxFQU91RmYsaUJBQWlCLENBQUM0Qix3QkFQekcsRUFRS1AsTUFSTCxDQVFZekIsSUFBSSxDQUFDVyxlQVJqQixFQVFtQ1QsWUFBWSxDQUFDYyxVQVJoRCxFQVE0RGQsWUFBWSxDQUFDaUIsZUFSekUsRUFRMEZmLGlCQUFpQixDQUFDNkIsa0JBUjVHO0FBVUFDLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQjlCLGFBQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZXhwcmVzcyA9IHJlcXVpcmUoJ2V4cHJlc3MnKTtcclxuY29uc3QgYm9keVBhcnNlciA9IHJlcXVpcmUoJ2JvZHktcGFyc2VyJyk7XHJcblxyXG5jb25zdCBjb3JzID0gcmVxdWlyZSgnLi9jb3JzJyk7XHJcbmNvbnN0IHsgY2hlY2tTY2hlbWEgfSA9IHJlcXVpcmUoJ2V4cHJlc3MtdmFsaWRhdG9yJyk7XHJcbnZhciBhdXRoZW50aWNhdGUgPSByZXF1aXJlKCcuLi9taWRkbGV3YXJlL2F1dGhlbnRpY2F0ZScpO1xyXG52YXIgdmFsaWRhdGlvblJ1bGVzID0gcmVxdWlyZSgnLi4vbWlkZGxld2FyZS92YWxpZGF0aW9uJyk7XHJcbmNvbnN0IHRvdXJpc3RDb250cm9sbGVyID0gcmVxdWlyZSgnLi4vY29udHJvbGxlcnMvdG91cmlzdENvbnRyb2xsZXInKVxyXG5cclxuY29uc3QgdG91cmlzdFJvdXRlciA9IGV4cHJlc3MuUm91dGVyKCk7XHJcblxyXG50b3VyaXN0Um91dGVyLnVzZShib2R5UGFyc2VyLmpzb24oKSk7XHJcblxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbi8vIFxyXG4vLyAgICAgICAgICAgICAgVG91cmlzdCBSb3V0ZXNcclxuLy8gXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbnRvdXJpc3RSb3V0ZXIucm91dGUoJy8nKVxyXG4gICAgLm9wdGlvbnMoY29ycy5jb3JzV2l0aE9wdGlvbnMsIChyZXEsIHJlcykgPT4geyByZXMuc2VuZFN0YXR1cygyMDApOyB9KVxyXG4gICAgLmdldChjb3JzLmNvcnMsICBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgICB0b3VyaXN0Q29udHJvbGxlci5nZXRBbGxUb3VyaXN0cylcclxuICAgIC5wb3N0KGNvcnMuY29yc1dpdGhPcHRpb25zLCAgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlNb2RlcmF0ZXIsIHRvdXJpc3RDb250cm9sbGVyLmFkZFRvdXJpc3QpXHJcbiAgICAucHV0KGNvcnMuY29yc1dpdGhPcHRpb25zLCAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwMztcclxuICAgICAgICByZXMuZW5kKCdQVVQgb3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQgb24gL3RvdXJpc3RzJyk7XHJcbiAgICB9KVxyXG4gICAgLmRlbGV0ZShjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgIHRvdXJpc3RDb250cm9sbGVyLmRlbGV0ZUFsbFRvdXJpc3RzKTtcclxudG91cmlzdFJvdXRlci5yb3V0ZSgnL3NlYXJjaCcpXHJcbiAgICAub3B0aW9ucyhjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcbiAgICAucG9zdChjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsICB0b3VyaXN0Q29udHJvbGxlci5nZXRBbGxUb3VyaXN0c0J5TmFtZSk7XHJcblxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbi8vIFxyXG4vLyAgICAgICAgICAgICAgVG91cmlzdCBSb3V0ZXMgU3BlY2lmaWVkIGJ5IElEXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG50b3VyaXN0Um91dGVyLnJvdXRlKCcvOnRvdXJpc3RJZCcpXHJcbiAgICAub3B0aW9ucyhjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcbiAgICAuZ2V0KGNvcnMuY29ycywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsICAgdG91cmlzdENvbnRyb2xsZXIuZ2V0VG91cmlzdERldGFpbHNCeUlkKVxyXG4gICAgLnBvc3QoY29ycy5jb3JzV2l0aE9wdGlvbnMsIChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNDAzO1xyXG4gICAgICAgIHJlcy5lbmQoJ1BPU1Qgb3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQgb24gL3RvdXJpc3RzLycgKyByZXEucGFyYW1zLnRvdXJpc3RJZCk7XHJcbiAgICB9KVxyXG4gICAgLnB1dChjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlNb2RlcmF0ZXIsICB0b3VyaXN0Q29udHJvbGxlci51cGRhdGVUb3VyaXN0RGV0YWlsc0J5SWQpXHJcbiAgICAuZGVsZXRlKGNvcnMuY29yc1dpdGhPcHRpb25zLCAgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlNb2RlcmF0ZXIsIHRvdXJpc3RDb250cm9sbGVyLmRlbGV0ZUFUb3VyaXN0QnlJZCk7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IHRvdXJpc3RSb3V0ZXI7Il19\",\"originalCode\":\"const express = require('express');\\r\\nconst bodyParser = require('body-parser');\\r\\n\\r\\nconst cors = require('./cors');\\r\\nconst { checkSchema } = require('express-validator');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\nvar validationRules = require('../middleware/validation');\\r\\nconst touristController = require('../controllers/touristController')\\r\\n\\r\\nconst touristRouter = express.Router();\\r\\n\\r\\ntouristRouter.use(bodyParser.json());\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Tourist Routes\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\ntouristRouter.route('/')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, touristController.getAllTourists)\\r\\n .post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, touristController.addTourist)\\r\\n .put(cors.corsWithOptions, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('PUT operation not supported on /tourists');\\r\\n })\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, touristController.deleteAllTourists);\\r\\ntouristRouter.route('/search')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .post(cors.corsWithOptions, authenticate.verifyUser, touristController.getAllTouristsByName);\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Tourist Routes Specified by ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\ntouristRouter.route('/:touristId')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, touristController.getTouristDetailsById)\\r\\n .post(cors.corsWithOptions, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('POST operation not supported on /tourists/' + req.params.touristId);\\r\\n })\\r\\n .put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, touristController.updateTouristDetailsById)\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, touristController.deleteATouristById);\\r\\n\\r\\nmodule.exports = touristRouter;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/0a/touristRouter_0ad938586662daadc81c6cb1ad2e0f53.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2545\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\touristRouter.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":9165,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":9162,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":796,\"endOffset\":836,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1050,\"endOffset\":1152,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1333,\"endOffset\":1373,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1761,\"endOffset\":1801,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1911,\"endOffset\":2038,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const Tourists = require('../models/users');\\n\\nconst utils = require('../utils/utils'); // **********************************************************************************\\n// \\n// Tourist Operations \\n// \\n// **********************************************************************************\\n\\n\\nconst getAllTourists = (req, res, next) => {\\n var query = {\\n \\\"role\\\": \\\"user\\\"\\n }; // var obj = Object.assign(query, { $text: { $search: searchBy } });\\n\\n Tourists.find(query).then(tourists => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n tourists: tourists\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst getAllTouristsByName = (req, res, next) => {\\n var query = {\\n \\\"role\\\": \\\"user\\\"\\n };\\n\\n if (req.body.similarTo) {\\n var searchBy = req.body.similarTo || {};\\n query = {\\n \\\"role\\\": \\\"user\\\",\\n $text: {\\n $search: searchBy\\n }\\n };\\n }\\n\\n var sortby = req.body.sortBy || {};\\n Tourists.find(query).sort(sortby).then(tourists => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n tourists: tourists\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst addTourist = async (req, res, next) => {\\n const randomPassword = utils.password_generator(10);\\n var tourist = {\\n username: req.body.email,\\n firstname: req.body.firstname,\\n lastname: req.body.lastname,\\n email: req.body.email,\\n mobile: req.body.mobile,\\n role: 'user'\\n };\\n\\n try {\\n Tourists.register(new Tourists(tourist), randomPassword, (err, tourist) => {\\n if (err) {\\n res.statusCode = 403;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: err.message\\n });\\n } else {\\n tourist.save((err, tourist) => {\\n if (err) {\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Error while Saving new user.'\\n });\\n }\\n\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n email: tourist.email,\\n password: randomPassword\\n });\\n });\\n }\\n });\\n } catch (error) {\\n next(err);\\n }\\n};\\n\\nconst deleteAllTourists = (req, res, next) => {\\n Tourists.remove({\\n \\\"role\\\": \\\"user\\\"\\n }).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n response: resp\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nexports.getAllTourists = getAllTourists;\\nexports.getAllTouristsByName = getAllTouristsByName;\\nexports.addTourist = addTourist;\\nexports.deleteAllTourists = deleteAllTourists; // **********************************************************************************\\n// \\n// Tourist Operations Specified by ID\\n// \\n// **********************************************************************************\\n\\nconst getTouristDetailsById = (req, res, next) => {\\n var touristId = req.params.touristId;\\n Tourists.findById(touristId).then(tourist => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n tourist: tourist\\n });\\n }, err => {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Could not find tourist with given ID'\\n });\\n }).catch(err => next(err));\\n};\\n\\nconst updateTouristDetailsById = (req, res, next) => {\\n Tourists.findByIdAndUpdate(req.params.touristId, {\\n $set: req.body\\n }, {\\n new: true\\n }).then(tourist => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n tourist: tourist\\n });\\n }, err => {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Could not find tourist with given ID'\\n });\\n }).catch(err => next(err));\\n};\\n\\nconst deleteATouristById = (req, res, next) => {\\n Tourists.findByIdAndRemove(req.params.touristId).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n response: resp\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nexports.getTouristDetailsById = getTouristDetailsById;\\nexports.updateTouristDetailsById = updateTouristDetailsById;\\nexports.deleteATouristById = deleteATouristById;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRvdXJpc3RDb250cm9sbGVyLmpzIl0sIm5hbWVzIjpbIlRvdXJpc3RzIiwicmVxdWlyZSIsInV0aWxzIiwiZ2V0QWxsVG91cmlzdHMiLCJyZXEiLCJyZXMiLCJuZXh0IiwicXVlcnkiLCJmaW5kIiwidGhlbiIsInRvdXJpc3RzIiwic3RhdHVzQ29kZSIsInNldEhlYWRlciIsImpzb24iLCJzdWNjZXNzIiwiZXJyIiwiY2F0Y2giLCJnZXRBbGxUb3VyaXN0c0J5TmFtZSIsImJvZHkiLCJzaW1pbGFyVG8iLCJzZWFyY2hCeSIsIiR0ZXh0IiwiJHNlYXJjaCIsInNvcnRieSIsInNvcnRCeSIsInNvcnQiLCJhZGRUb3VyaXN0IiwicmFuZG9tUGFzc3dvcmQiLCJwYXNzd29yZF9nZW5lcmF0b3IiLCJ0b3VyaXN0IiwidXNlcm5hbWUiLCJlbWFpbCIsImZpcnN0bmFtZSIsImxhc3RuYW1lIiwibW9iaWxlIiwicm9sZSIsInJlZ2lzdGVyIiwibWVzc2FnZSIsInNhdmUiLCJwYXNzd29yZCIsImVycm9yIiwiZGVsZXRlQWxsVG91cmlzdHMiLCJyZW1vdmUiLCJyZXNwIiwicmVzcG9uc2UiLCJleHBvcnRzIiwiZ2V0VG91cmlzdERldGFpbHNCeUlkIiwidG91cmlzdElkIiwicGFyYW1zIiwiZmluZEJ5SWQiLCJ1cGRhdGVUb3VyaXN0RGV0YWlsc0J5SWQiLCJmaW5kQnlJZEFuZFVwZGF0ZSIsIiRzZXQiLCJuZXciLCJkZWxldGVBVG91cmlzdEJ5SWQiLCJmaW5kQnlJZEFuZFJlbW92ZSJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsUUFBUSxHQUFHQyxPQUFPLENBQUMsaUJBQUQsQ0FBeEI7O0FBQ0EsTUFBTUMsS0FBSyxHQUFHRCxPQUFPLENBQUMsZ0JBQUQsQ0FBckIsQyxDQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBLE1BQU1FLGNBQWMsR0FBRyxDQUFDQyxHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUN2QyxNQUFJQyxLQUFLLEdBQUc7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RUFBRTtBQUEzQixLQUFUO0FBQ0gsR0FYTCxFQVlLckIsS0FaTCxDQVlZRCxHQUFELElBQVNULElBQUksQ0FBQ1MsR0FBRCxDQVp4QjtBQWFILENBZkQ7O0FBaUJBLE1BQU11QyxrQkFBa0IsR0FBRyxDQUFDbEQsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDM0NOLEVBQUFBLFFBQVEsQ0FBQ3VELGlCQUFULENBQTJCbkQsR0FBRyxDQUFDNEMsTUFBSixDQUFXRCxTQUF0QyxFQUNLdEMsSUFETCxDQUNXa0MsSUFBRCxJQUFVO0FBQ1p0QyxJQUFBQSxHQUFHLENBQUNNLFVBQUosR0FBaUIsR0FBakI7QUFDQU4sSUFBQUEsR0FBRyxDQUFDTyxTQUFKLENBQWMsY0FBZCxFQUE4QixrQkFBOUI7QUFDQVAsSUFBQUEsR0FBRyxDQUFDUSxJQUFKLENBQVM7QUFBRUMsTUFBQUEsT0FBTyxFQUFFLElBQVg7QUFBaUI4QixNQUFBQSxRQUFRLEVBQUVEO0FBQTNCLEtBQVQ7QUFDSCxHQUxMLEVBS1E1QixHQUFELElBQVNULElBQUksQ0FBQ1MsR0FBRCxDQUxwQixFQU1LQyxLQU5MLENBTVlELEdBQUQsSUFBU1QsSUFBSSxDQUFDUyxHQUFELENBTnhCO0FBT0gsQ0FSRDs7QUFVQThCLE9BQU8sQ0FBQ0MscUJBQVIsR0FBZ0NBLHFCQUFoQztBQUNBRCxPQUFPLENBQUNLLHdCQUFSLEdBQW1DQSx3QkFBbkM7QUFDQUwsT0FBTyxDQUFDUyxrQkFBUixHQUE2QkEsa0JBQTdCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgVG91cmlzdHMgPSByZXF1aXJlKCcuLi9tb2RlbHMvdXNlcnMnKTtcclxuY29uc3QgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscy91dGlscycpO1xyXG5cclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyBcclxuLy8gICAgICAgICAgICAgIFRvdXJpc3QgT3BlcmF0aW9ucyBcclxuLy8gXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbmNvbnN0IGdldEFsbFRvdXJpc3RzID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICB2YXIgcXVlcnkgPSB7IFwicm9sZVwiOiBcInVzZXJcIiB9O1xyXG4gICAgLy8gdmFyIG9iaiA9IE9iamVjdC5hc3NpZ24ocXVlcnksIHsgJHRleHQ6IHsgJHNlYXJjaDogc2VhcmNoQnkgfSB9KTtcclxuICAgICBUb3VyaXN0cy5maW5kKHF1ZXJ5KVxyXG4gICAgICAgIC50aGVuKCh0b3VyaXN0cykgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCB0b3VyaXN0czogdG91cmlzdHMgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpO1xyXG59XHJcblxyXG5jb25zdCBnZXRBbGxUb3VyaXN0c0J5TmFtZSA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgdmFyIHF1ZXJ5ID0geyBcInJvbGVcIjogXCJ1c2VyXCIgfTtcclxuICAgIGlmIChyZXEuYm9keS5zaW1pbGFyVG8pIHtcclxuICAgICAgICB2YXIgc2VhcmNoQnkgPSByZXEuYm9keS5zaW1pbGFyVG8gfHwge31cclxuICAgICAgICBxdWVyeSA9IHsgXCJyb2xlXCI6IFwidXNlclwiLCAkdGV4dDogeyAkc2VhcmNoOiBzZWFyY2hCeSB9IH1cclxuICAgIH1cclxuXHJcbiAgICB2YXIgc29ydGJ5ID0gcmVxLmJvZHkuc29ydEJ5IHx8IHt9O1xyXG4gICAgVG91cmlzdHMuZmluZChxdWVyeSkuc29ydChzb3J0YnkpXHJcbiAgICAgICAgLnRoZW4oKHRvdXJpc3RzKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHRvdXJpc3RzOiB0b3VyaXN0cyB9KTtcclxuICAgICAgICB9LCAoZXJyKSA9PiBuZXh0KGVycikpXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IG5leHQoZXJyKSk7XHJcbn1cclxuXHJcbmNvbnN0IGFkZFRvdXJpc3QgPSBhc3luYyAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIGNvbnN0IHJhbmRvbVBhc3N3b3JkID0gdXRpbHMucGFzc3dvcmRfZ2VuZXJhdG9yKDEwKTtcclxuICAgIHZhciB0b3VyaXN0ID0ge1xyXG4gICAgICAgIHVzZXJuYW1lOiByZXEuYm9keS5lbWFpbCxcclxuICAgICAgICBmaXJzdG5hbWU6IHJlcS5ib2R5LmZpcnN0bmFtZSxcclxuICAgICAgICBsYXN0bmFtZTogcmVxLmJvZHkubGFzdG5hbWUsXHJcbiAgICAgICAgZW1haWw6IHJlcS5ib2R5LmVtYWlsLFxyXG4gICAgICAgIG1vYmlsZTogcmVxLmJvZHkubW9iaWxlLFxyXG4gICAgICAgIHJvbGU6ICd1c2VyJ1xyXG4gICAgfVxyXG4gICAgdHJ5IHtcclxuICAgICAgICBUb3VyaXN0cy5yZWdpc3RlcihuZXcgVG91cmlzdHModG91cmlzdCksXHJcbiAgICAgICAgICAgIHJhbmRvbVBhc3N3b3JkLCAoZXJyLCB0b3VyaXN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IGZhbHNlLCBtZXNzYWdlOiBlcnIubWVzc2FnZSB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRvdXJpc3Quc2F2ZSgoZXJyLCB0b3VyaXN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNTAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IGZhbHNlLCBtZXNzYWdlOiAnRXJyb3Igd2hpbGUgU2F2aW5nIG5ldyB1c2VyLicgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgZW1haWw6IHRvdXJpc3QuZW1haWwsIHBhc3N3b3JkOiByYW5kb21QYXNzd29yZCB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgbmV4dChlcnIpO1xyXG4gICAgfVxyXG59XHJcblxyXG5jb25zdCBkZWxldGVBbGxUb3VyaXN0cyA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgVG91cmlzdHMucmVtb3ZlKHsgXCJyb2xlXCI6IFwidXNlclwiIH0pXHJcbiAgICAgICAgLnRoZW4oKHJlc3ApID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgcmVzcG9uc2U6IHJlc3AgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpO1xyXG59XHJcblxyXG5leHBvcnRzLmdldEFsbFRvdXJpc3RzID0gZ2V0QWxsVG91cmlzdHM7XHJcbmV4cG9ydHMuZ2V0QWxsVG91cmlzdHNCeU5hbWUgPSBnZXRBbGxUb3VyaXN0c0J5TmFtZTtcclxuZXhwb3J0cy5hZGRUb3VyaXN0ID0gYWRkVG91cmlzdDtcclxuZXhwb3J0cy5kZWxldGVBbGxUb3VyaXN0cyA9IGRlbGV0ZUFsbFRvdXJpc3RzO1xyXG5cclxuXHJcblxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbi8vIFxyXG4vLyAgICAgICAgICAgICAgVG91cmlzdCBPcGVyYXRpb25zIFNwZWNpZmllZCBieSBJRFxyXG4vLyBcclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuY29uc3QgZ2V0VG91cmlzdERldGFpbHNCeUlkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICB2YXIgdG91cmlzdElkID0gcmVxLnBhcmFtcy50b3VyaXN0SWQ7XHJcbiAgICBUb3VyaXN0cy5maW5kQnlJZCh0b3VyaXN0SWQpXHJcbiAgICAgICAgLnRoZW4oKHRvdXJpc3QpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgdG91cmlzdDogdG91cmlzdCB9KTtcclxuICAgICAgICB9LCAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNDA0O1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IGZhbHNlLCBtZXNzYWdlOiAnQ291bGQgbm90IGZpbmQgdG91cmlzdCB3aXRoIGdpdmVuIElEJyB9KTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpOyBcclxufVxyXG5cclxuY29uc3QgdXBkYXRlVG91cmlzdERldGFpbHNCeUlkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICBcclxuICAgIFRvdXJpc3RzLmZpbmRCeUlkQW5kVXBkYXRlKHJlcS5wYXJhbXMudG91cmlzdElkLCB7XHJcbiAgICAgICAgJHNldDogcmVxLmJvZHlcclxuICAgIH0sIHsgbmV3OiB0cnVlIH0pXHJcbiAgICAgICAgLnRoZW4oKHRvdXJpc3QpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgdG91cmlzdDogdG91cmlzdCB9KTtcclxuICAgICAgICB9LCAoZXJyKSA9PiAge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwNDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogJ0NvdWxkIG5vdCBmaW5kIHRvdXJpc3Qgd2l0aCBnaXZlbiBJRCcgfSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuY29uc3QgZGVsZXRlQVRvdXJpc3RCeUlkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICBUb3VyaXN0cy5maW5kQnlJZEFuZFJlbW92ZShyZXEucGFyYW1zLnRvdXJpc3RJZClcclxuICAgICAgICAudGhlbigocmVzcCkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCByZXNwb25zZTogcmVzcCB9KTtcclxuICAgICAgICB9LCAoZXJyKSA9PiBuZXh0KGVycikpXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IG5leHQoZXJyKSk7XHJcbn1cclxuXHJcbmV4cG9ydHMuZ2V0VG91cmlzdERldGFpbHNCeUlkID0gZ2V0VG91cmlzdERldGFpbHNCeUlkO1xyXG5leHBvcnRzLnVwZGF0ZVRvdXJpc3REZXRhaWxzQnlJZCA9IHVwZGF0ZVRvdXJpc3REZXRhaWxzQnlJZDtcclxuZXhwb3J0cy5kZWxldGVBVG91cmlzdEJ5SWQgPSBkZWxldGVBVG91cmlzdEJ5SWQ7XHJcblxyXG5cclxuIl19\",\"originalCode\":\"const Tourists = require('../models/users');\\r\\nconst utils = require('../utils/utils');\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Tourist Operations \\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nconst getAllTourists = (req, res, next) => {\\r\\n var query = { \\\"role\\\": \\\"user\\\" };\\r\\n // var obj = Object.assign(query, { $text: { $search: searchBy } });\\r\\n Tourists.find(query)\\r\\n .then((tourists) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, tourists: tourists });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst getAllTouristsByName = (req, res, next) => {\\r\\n var query = { \\\"role\\\": \\\"user\\\" };\\r\\n if (req.body.similarTo) {\\r\\n var searchBy = req.body.similarTo || {}\\r\\n query = { \\\"role\\\": \\\"user\\\", $text: { $search: searchBy } }\\r\\n }\\r\\n\\r\\n var sortby = req.body.sortBy || {};\\r\\n Tourists.find(query).sort(sortby)\\r\\n .then((tourists) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, tourists: tourists });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst addTourist = async (req, res, next) => {\\r\\n const randomPassword = utils.password_generator(10);\\r\\n var tourist = {\\r\\n username: req.body.email,\\r\\n firstname: req.body.firstname,\\r\\n lastname: req.body.lastname,\\r\\n email: req.body.email,\\r\\n mobile: req.body.mobile,\\r\\n role: 'user'\\r\\n }\\r\\n try {\\r\\n Tourists.register(new Tourists(tourist),\\r\\n randomPassword, (err, tourist) => {\\r\\n if (err) {\\r\\n res.statusCode = 403;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: err.message });\\r\\n }\\r\\n else {\\r\\n tourist.save((err, tourist) => {\\r\\n if (err) {\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Error while Saving new user.' });\\r\\n }\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, email: tourist.email, password: randomPassword });\\r\\n });\\r\\n }\\r\\n });\\r\\n } catch (error) {\\r\\n next(err);\\r\\n }\\r\\n}\\r\\n\\r\\nconst deleteAllTourists = (req, res, next) => {\\r\\n Tourists.remove({ \\\"role\\\": \\\"user\\\" })\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, response: resp });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nexports.getAllTourists = getAllTourists;\\r\\nexports.getAllTouristsByName = getAllTouristsByName;\\r\\nexports.addTourist = addTourist;\\r\\nexports.deleteAllTourists = deleteAllTourists;\\r\\n\\r\\n\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Tourist Operations Specified by ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nconst getTouristDetailsById = (req, res, next) => {\\r\\n var touristId = req.params.touristId;\\r\\n Tourists.findById(touristId)\\r\\n .then((tourist) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, tourist: tourist });\\r\\n }, (err) => {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Could not find tourist with given ID' });\\r\\n })\\r\\n .catch((err) => next(err)); \\r\\n}\\r\\n\\r\\nconst updateTouristDetailsById = (req, res, next) => {\\r\\n \\r\\n Tourists.findByIdAndUpdate(req.params.touristId, {\\r\\n $set: req.body\\r\\n }, { new: true })\\r\\n .then((tourist) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, tourist: tourist });\\r\\n }, (err) => {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Could not find tourist with given ID' });\\r\\n })\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst deleteATouristById = (req, res, next) => {\\r\\n Tourists.findByIdAndRemove(req.params.touristId)\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, response: resp });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nexports.getTouristDetailsById = getTouristDetailsById;\\r\\nexports.updateTouristDetailsById = updateTouristDetailsById;\\r\\nexports.deleteATouristById = deleteATouristById;\\r\\n\\r\\n\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/ff/touristController_ff3455758448d6e0c4e2be11f313067b.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2546\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\touristController.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":20391,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":20388,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"getAllTourists\",\"ranges\":[{\"startOffset\":417,\"endOffset\":790,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getAllTouristsByName\",\"ranges\":[{\"startOffset\":822,\"endOffset\":1347,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"addTourist\",\"ranges\":[{\"startOffset\":1369,\"endOffset\":2534,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1716,\"endOffset\":2491,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1966,\"endOffset\":2475,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"deleteAllTourists\",\"ranges\":[{\"startOffset\":2563,\"endOffset\":2839,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getTouristDetailsById\",\"ranges\":[{\"startOffset\":3278,\"endOffset\":3762,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"updateTouristDetailsById\",\"ranges\":[{\"startOffset\":3798,\"endOffset\":4309,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"deleteATouristById\",\"ranges\":[{\"startOffset\":4339,\"endOffset\":4622,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const express = require('express');\\n\\nconst bodyParser = require('body-parser');\\n\\nconst cors = require('./cors');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nconst dashboardController = require('../controllers/dashboardController');\\n\\nconst dashboardRouter = express.Router();\\ndashboardRouter.use(bodyParser.json());\\ndashboardRouter.route('/admin').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, authenticate.verifyAdmin, dashboardController.getDashboard);\\nmodule.exports = dashboardRouter;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRhc2hib2FyZFJvdXRlci5qcyJdLCJuYW1lcyI6WyJleHByZXNzIiwicmVxdWlyZSIsImJvZHlQYXJzZXIiLCJjb3JzIiwiYXV0aGVudGljYXRlIiwiZGFzaGJvYXJkQ29udHJvbGxlciIsImRhc2hib2FyZFJvdXRlciIsIlJvdXRlciIsInVzZSIsImpzb24iLCJyb3V0ZSIsIm9wdGlvbnMiLCJjb3JzV2l0aE9wdGlvbnMiLCJyZXEiLCJyZXMiLCJzZW5kU3RhdHVzIiwiZ2V0IiwidmVyaWZ5VXNlciIsInZlcmlmeUFkbWluIiwiZ2V0RGFzaGJvYXJkIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsT0FBTyxHQUFHQyxPQUFPLENBQUMsU0FBRCxDQUF2Qjs7QUFDQSxNQUFNQyxVQUFVLEdBQUdELE9BQU8sQ0FBQyxhQUFELENBQTFCOztBQUVBLE1BQU1FLElBQUksR0FBR0YsT0FBTyxDQUFDLFFBQUQsQ0FBcEI7O0FBQ0EsSUFBSUcsWUFBWSxHQUFHSCxPQUFPLENBQUMsNEJBQUQsQ0FBMUI7O0FBQ0EsTUFBTUksbUJBQW1CLEdBQUdKLE9BQU8sQ0FBQyxvQ0FBRCxDQUFuQzs7QUFFQSxNQUFNSyxlQUFlLEdBQUdOLE9BQU8sQ0FBQ08sTUFBUixFQUF4QjtBQUVBRCxlQUFlLENBQUNFLEdBQWhCLENBQW9CTixVQUFVLENBQUNPLElBQVgsRUFBcEI7QUFFQUgsZUFBZSxDQUFDSSxLQUFoQixDQUFzQixRQUF0QixFQUNLQyxPQURMLENBQ2FSLElBQUksQ0FBQ1MsZUFEbEIsRUFDbUMsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEtBQWM7QUFBRUEsRUFBQUEsR0FBRyxDQUFDQyxVQUFKLENBQWUsR0FBZjtBQUFzQixDQUR6RSxFQUVLQyxHQUZMLENBRVNiLElBQUksQ0FBQ0EsSUFGZCxFQUVtQkMsWUFBWSxDQUFDYSxVQUZoQyxFQUU0Q2IsWUFBWSxDQUFDYyxXQUZ6RCxFQUVzRWIsbUJBQW1CLENBQUNjLFlBRjFGO0FBSUFDLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQmYsZUFBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBleHByZXNzID0gcmVxdWlyZSgnZXhwcmVzcycpO1xyXG5jb25zdCBib2R5UGFyc2VyID0gcmVxdWlyZSgnYm9keS1wYXJzZXInKTtcclxuXHJcbmNvbnN0IGNvcnMgPSByZXF1aXJlKCcuL2NvcnMnKTtcclxudmFyIGF1dGhlbnRpY2F0ZSA9IHJlcXVpcmUoJy4uL21pZGRsZXdhcmUvYXV0aGVudGljYXRlJyk7XHJcbmNvbnN0IGRhc2hib2FyZENvbnRyb2xsZXIgPSByZXF1aXJlKCcuLi9jb250cm9sbGVycy9kYXNoYm9hcmRDb250cm9sbGVyJyk7XHJcblxyXG5jb25zdCBkYXNoYm9hcmRSb3V0ZXIgPSBleHByZXNzLlJvdXRlcigpO1xyXG5cclxuZGFzaGJvYXJkUm91dGVyLnVzZShib2R5UGFyc2VyLmpzb24oKSk7XHJcblxyXG5kYXNoYm9hcmRSb3V0ZXIucm91dGUoJy9hZG1pbicpXHJcbiAgICAub3B0aW9ucyhjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcbiAgICAuZ2V0KGNvcnMuY29ycyxhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeUFkbWluLCBkYXNoYm9hcmRDb250cm9sbGVyLmdldERhc2hib2FyZCk7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IGRhc2hib2FyZFJvdXRlcjsiXX0=\",\"originalCode\":\"const express = require('express');\\r\\nconst bodyParser = require('body-parser');\\r\\n\\r\\nconst cors = require('./cors');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\nconst dashboardController = require('../controllers/dashboardController');\\r\\n\\r\\nconst dashboardRouter = express.Router();\\r\\n\\r\\ndashboardRouter.use(bodyParser.json());\\r\\n\\r\\ndashboardRouter.route('/admin')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors,authenticate.verifyUser, authenticate.verifyAdmin, dashboardController.getDashboard);\\r\\n\\r\\nmodule.exports = dashboardRouter;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/07/dashboardRouter_0791a49f2f45fc0f57ade98f27175c5c.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2547\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\dashboardRouter.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":2824,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":2821,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":482,\"endOffset\":522,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const Place = require('../models/visitingPlaces');\\n\\nconst User = require('../models/users');\\n\\nconst Schedule = require('../models/schedules');\\n\\nexports.getDashboard = async (req, res, next) => {\\n try {\\n const users_count = (await User.find().countDocuments()) - 1;\\n const tourist_count_total = await User.find({\\n \\\"role\\\": \\\"user\\\"\\n }).countDocuments();\\n const assistant_count_total = await User.find({\\n \\\"role\\\": \\\"moderater\\\"\\n }).countDocuments();\\n const tourist_count_in = await User.find({\\n \\\"role\\\": \\\"user\\\",\\n \\\"userstate\\\": \\\"in\\\"\\n }).countDocuments();\\n const place_count = await Place.find().countDocuments();\\n const place_names = await Place.find({}, {\\n _id: 0,\\n name: 1\\n });\\n const place_locations = await Place.find({}, {\\n _id: 0,\\n \\\"location.coordinates\\\": 1\\n });\\n var locations = [];\\n place_locations.forEach(element => {\\n var longitude = element.location.coordinates[0];\\n var latitude = element.location.coordinates[1];\\n locations.push({\\n longitude,\\n latitude\\n });\\n });\\n const schedules_count_total = await Schedule.find().countDocuments();\\n const schedules_count_new = await Schedule.find({\\n \\\"state\\\": \\\"new\\\"\\n }).countDocuments();\\n const schedules_count_canceled = await Schedule.find({\\n \\\"state\\\": \\\"cancled\\\"\\n }).countDocuments();\\n const schedules_count_notcompleted = await Schedule.find({\\n \\\"state\\\": \\\"notcompleted\\\"\\n }).countDocuments();\\n const schedules_count_completed = await Schedule.find({\\n \\\"state\\\": \\\"completed\\\"\\n }).countDocuments();\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n dashboardValues: {\\n users_count: users_count,\\n tourist_count_total: tourist_count_total,\\n assistant_count_total: assistant_count_total,\\n tourist_count_in: tourist_count_in,\\n place_count: place_count,\\n place_names: place_names,\\n place_locations: locations,\\n schedules_count_total: schedules_count_total,\\n schedules_count_new: schedules_count_new,\\n schedules_count_canceled: schedules_count_canceled,\\n schedules_count_notcompleted: schedules_count_notcompleted,\\n schedules_count_completed: schedules_count_completed\\n }\\n });\\n } catch (err) {\\n next(err);\\n }\\n};\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRhc2hib2FyZENvbnRyb2xsZXIuanMiXSwibmFtZXMiOlsiUGxhY2UiLCJyZXF1aXJlIiwiVXNlciIsIlNjaGVkdWxlIiwiZXhwb3J0cyIsImdldERhc2hib2FyZCIsInJlcSIsInJlcyIsIm5leHQiLCJ1c2Vyc19jb3VudCIsImZpbmQiLCJjb3VudERvY3VtZW50cyIsInRvdXJpc3RfY291bnRfdG90YWwiLCJhc3Npc3RhbnRfY291bnRfdG90YWwiLCJ0b3VyaXN0X2NvdW50X2luIiwicGxhY2VfY291bnQiLCJwbGFjZV9uYW1lcyIsIl9pZCIsIm5hbWUiLCJwbGFjZV9sb2NhdGlvbnMiLCJsb2NhdGlvbnMiLCJmb3JFYWNoIiwiZWxlbWVudCIsImxvbmdpdHVkZSIsImxvY2F0aW9uIiwiY29vcmRpbmF0ZXMiLCJsYXRpdHVkZSIsInB1c2giLCJzY2hlZHVsZXNfY291bnRfdG90YWwiLCJzY2hlZHVsZXNfY291bnRfbmV3Iiwic2NoZWR1bGVzX2NvdW50X2NhbmNlbGVkIiwic2NoZWR1bGVzX2NvdW50X25vdGNvbXBsZXRlZCIsInNjaGVkdWxlc19jb3VudF9jb21wbGV0ZWQiLCJzdGF0dXNDb2RlIiwic2V0SGVhZGVyIiwianNvbiIsInN1Y2Nlc3MiLCJkYXNoYm9hcmRWYWx1ZXMiLCJlcnIiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLEtBQUssR0FBR0MsT0FBTyxDQUFDLDBCQUFELENBQXJCOztBQUNBLE1BQU1DLElBQUksR0FBR0QsT0FBTyxDQUFDLGlCQUFELENBQXBCOztBQUNBLE1BQU1FLFFBQVEsR0FBR0YsT0FBTyxDQUFDLHFCQUFELENBQXhCOztBQUVBRyxPQUFPLENBQUNDLFlBQVIsR0FBdUIsT0FBT0MsR0FBUCxFQUFZQyxHQUFaLEVBQWlCQyxJQUFqQixLQUEwQjtBQUM3QyxNQUFJO0FBQ0EsVUFBTUMsV0FBVyxHQUFHLE9BQU1QLElBQUksQ0FBQ1EsSUFBTCxHQUFZQyxjQUFaLEVBQU4sSUFBcUMsQ0FBekQ7QUFDQSxVQUFNQyxtQkFB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QUFFQSw0QkFYRjtBQVk1QkMsUUFBQUEseUJBQXlCLEVBQUVBO0FBWkM7QUFEM0IsS0FBVDtBQWdCSCxHQXRDRCxDQXNDRSxPQUFPTSxHQUFQLEVBQVk7QUFDVjlCLElBQUFBLElBQUksQ0FBQzhCLEdBQUQsQ0FBSjtBQUNIO0FBQ0osQ0ExQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBQbGFjZSA9IHJlcXVpcmUoJy4uL21vZGVscy92aXNpdGluZ1BsYWNlcycpO1xyXG5jb25zdCBVc2VyID0gcmVxdWlyZSgnLi4vbW9kZWxzL3VzZXJzJyk7XHJcbmNvbnN0IFNjaGVkdWxlID0gcmVxdWlyZSgnLi4vbW9kZWxzL3NjaGVkdWxlcycpO1xyXG5cclxuZXhwb3J0cy5nZXREYXNoYm9hcmQgPSBhc3luYyAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgICAgY29uc3QgdXNlcnNfY291bnQgPSBhd2FpdCBVc2VyLmZpbmQoKS5jb3VudERvY3VtZW50cygpIC0gMTtcclxuICAgICAgICBjb25zdCB0b3VyaXN0X2NvdW50X3RvdGFsID0gYXdhaXQgVXNlci5maW5kKHsgXCJyb2xlXCI6IFwidXNlclwiIH0pLmNvdW50RG9jdW1lbnRzKCk7XHJcbiAgICAgICAgY29uc3QgYXNzaXN0YW50X2NvdW50X3RvdGFsID0gYXdhaXQgVXNlci5maW5kKHsgXCJyb2xlXCI6IFwibW9kZXJhdGVyXCIgfSkuY291bnREb2N1bWVudHMoKTtcclxuICAgICAgICBjb25zdCB0b3VyaXN0X2NvdW50X2luID0gYXdhaXQgVXNlci5maW5kKHsgXCJyb2xlXCI6IFwidXNlclwiLCBcInVzZXJzdGF0ZVwiOiBcImluXCIgfSkuY291bnREb2N1bWVudHMoKTtcclxuICAgICAgICBjb25zdCBwbGFjZV9jb3VudCA9IGF3YWl0IFBsYWNlLmZpbmQoKS5jb3VudERvY3VtZW50cygpO1xyXG4gICAgICAgIGNvbnN0IHBsYWNlX25hbWVzID0gYXdhaXQgUGxhY2UuZmluZCh7fSwgeyBfaWQ6IDAsIG5hbWU6IDEgfSk7XHJcbiAgICAgICAgY29uc3QgcGxhY2VfbG9jYXRpb25zID0gYXdhaXQgUGxhY2UuZmluZCh7fSwgeyBfaWQ6IDAsIFwibG9jYXRpb24uY29vcmRpbmF0ZXNcIjogMSB9KTtcclxuICAgICAgICB2YXIgbG9jYXRpb25zID0gW107XHJcbiAgICAgICAgcGxhY2VfbG9jYXRpb25zLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICAgIHZhciBsb25naXR1ZGUgPSBlbGVtZW50LmxvY2F0aW9uLmNvb3JkaW5hdGVzWzBdO1xyXG4gICAgICAgICAgICB2YXIgbGF0aXR1ZGUgPSBlbGVtZW50LmxvY2F0aW9uLmNvb3JkaW5hdGVzWzFdO1xyXG4gICAgICAgICAgICBsb2NhdGlvbnMucHVzaCh7IGxvbmdpdHVkZSwgbGF0aXR1ZGUgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgY29uc3Qgc2NoZWR1bGVzX2NvdW50X3RvdGFsID0gYXdhaXQgU2NoZWR1bGUuZmluZCgpLmNvdW50RG9jdW1lbnRzKCk7XHJcbiAgICAgICAgY29uc3Qgc2NoZWR1bGVzX2NvdW50X25ldyA9IGF3YWl0IFNjaGVkdWxlLmZpbmQoeyBcInN0YXRlXCI6IFwibmV3XCIgfSkuY291bnREb2N1bWVudHMoKTtcclxuICAgICAgICBjb25zdCBzY2hlZHVsZXNfY291bnRfY2FuY2VsZWQgPSBhd2FpdCBTY2hlZHVsZS5maW5kKHsgXCJzdGF0ZVwiOiBcImNhbmNsZWRcIiB9KS5jb3VudERvY3VtZW50cygpO1xyXG4gICAgICAgIGNvbnN0IHNjaGVkdWxlc19jb3VudF9ub3Rjb21wbGV0ZWQgPSBhd2FpdCBTY2hlZHVsZS5maW5kKHsgXCJzdGF0ZVwiOiBcIm5vdGNvbXBsZXRlZFwiIH0pLmNvdW50RG9jdW1lbnRzKCk7XHJcbiAgICAgICAgY29uc3Qgc2NoZWR1bGVzX2NvdW50X2NvbXBsZXRlZCA9IGF3YWl0IFNjaGVkdWxlLmZpbmQoeyBcInN0YXRlXCI6IFwiY29tcGxldGVkXCIgfSkuY291bnREb2N1bWVudHMoKTtcclxuXHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICByZXMuanNvbih7XHJcbiAgICAgICAgICAgIHN1Y2Nlc3M6IHRydWUsIGRhc2hib2FyZFZhbHVlczoge1xyXG4gICAgICAgICAgICAgICAgdXNlcnNfY291bnQ6IHVzZXJzX2NvdW50LFxyXG4gICAgICAgICAgICAgICAgdG91cmlzdF9jb3VudF90b3RhbDogdG91cmlzdF9jb3VudF90b3RhbCxcclxuICAgICAgICAgICAgICAgIGFzc2lzdGFudF9jb3VudF90b3RhbDogYXNzaXN0YW50X2NvdW50X3RvdGFsLFxyXG4gICAgICAgICAgICAgICAgdG91cmlzdF9jb3VudF9pbjogdG91cmlzdF9jb3VudF9pbixcclxuICAgICAgICAgICAgICAgIHBsYWNlX2NvdW50OiBwbGFjZV9jb3VudCxcclxuICAgICAgICAgICAgICAgIHBsYWNlX25hbWVzOiBwbGFjZV9uYW1lcyxcclxuICAgICAgICAgICAgICAgIHBsYWNlX2xvY2F0aW9uczogbG9jYXRpb25zLFxyXG4gICAgICAgICAgICAgICAgc2NoZWR1bGVzX2NvdW50X3RvdGFsOiBzY2hlZHVsZXNfY291bnRfdG90YWwsXHJcbiAgICAgICAgICAgICAgICBzY2hlZHVsZXNfY291bnRfbmV3OiBzY2hlZHVsZXNfY291bnRfbmV3LFxyXG4gICAgICAgICAgICAgICAgc2NoZWR1bGVzX2NvdW50X2NhbmNlbGVkOiBzY2hlZHVsZXNfY291bnRfY2FuY2VsZWQsXHJcbiAgICAgICAgICAgICAgICBzY2hlZHVsZXNfY291bnRfbm90Y29tcGxldGVkOiBzY2hlZHVsZXNfY291bnRfbm90Y29tcGxldGVkLFxyXG4gICAgICAgICAgICAgICAgc2NoZWR1bGVzX2NvdW50X2NvbXBsZXRlZDogc2NoZWR1bGVzX2NvdW50X2NvbXBsZXRlZFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICBuZXh0KGVycik7XHJcbiAgICB9XHJcbn1cclxuXHJcbiJdfQ==\",\"originalCode\":\"const Place = require('../models/visitingPlaces');\\r\\nconst User = require('../models/users');\\r\\nconst Schedule = require('../models/schedules');\\r\\n\\r\\nexports.getDashboard = async (req, res, next) => {\\r\\n try {\\r\\n const users_count = await User.find().countDocuments() - 1;\\r\\n const tourist_count_total = await User.find({ \\\"role\\\": \\\"user\\\" }).countDocuments();\\r\\n const assistant_count_total = await User.find({ \\\"role\\\": \\\"moderater\\\" }).countDocuments();\\r\\n const tourist_count_in = await User.find({ \\\"role\\\": \\\"user\\\", \\\"userstate\\\": \\\"in\\\" }).countDocuments();\\r\\n const place_count = await Place.find().countDocuments();\\r\\n const place_names = await Place.find({}, { _id: 0, name: 1 });\\r\\n const place_locations = await Place.find({}, { _id: 0, \\\"location.coordinates\\\": 1 });\\r\\n var locations = [];\\r\\n place_locations.forEach(element => {\\r\\n var longitude = element.location.coordinates[0];\\r\\n var latitude = element.location.coordinates[1];\\r\\n locations.push({ longitude, latitude });\\r\\n });\\r\\n const schedules_count_total = await Schedule.find().countDocuments();\\r\\n const schedules_count_new = await Schedule.find({ \\\"state\\\": \\\"new\\\" }).countDocuments();\\r\\n const schedules_count_canceled = await Schedule.find({ \\\"state\\\": \\\"cancled\\\" }).countDocuments();\\r\\n const schedules_count_notcompleted = await Schedule.find({ \\\"state\\\": \\\"notcompleted\\\" }).countDocuments();\\r\\n const schedules_count_completed = await Schedule.find({ \\\"state\\\": \\\"completed\\\" }).countDocuments();\\r\\n\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({\\r\\n success: true, dashboardValues: {\\r\\n users_count: users_count,\\r\\n tourist_count_total: tourist_count_total,\\r\\n assistant_count_total: assistant_count_total,\\r\\n tourist_count_in: tourist_count_in,\\r\\n place_count: place_count,\\r\\n place_names: place_names,\\r\\n place_locations: locations,\\r\\n schedules_count_total: schedules_count_total,\\r\\n schedules_count_new: schedules_count_new,\\r\\n schedules_count_canceled: schedules_count_canceled,\\r\\n schedules_count_notcompleted: schedules_count_notcompleted,\\r\\n schedules_count_completed: schedules_count_completed\\r\\n }\\r\\n });\\r\\n } catch (err) {\\r\\n next(err);\\r\\n }\\r\\n}\\r\\n\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/34/dashboardController_34872bbac017cfae6fcc33926d204118.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2548\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\dashboardController.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":9854,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":9851,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
.exports.getDashboard\",\"ranges\":[{\"startOffset\":256,\"endOffset\":2463,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const app = require('../../app');\\n\\nconst server = require(\\\"supertest\\\")(app);\\n\\nconst jwt_decode = require('jwt-decode');\\n\\nconst Users = require('../../models/users');\\n\\nvar userToken;\\nvar assistantToken;\\nvar adminToken;\\nvar passwordAssistant;\\nvar passwordUser;\\nconst admin = {\\n \\\"firstname\\\": \\\"Admin\\\",\\n \\\"lastname\\\": \\\"Admin\\\",\\n \\\"email\\\": \\\"admin@gmail.com\\\",\\n \\\"password\\\": \\\"admin-password\\\"\\n};\\nconst assistant = {\\n \\\"firstname\\\": \\\"Pasan\\\",\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\n \\\"email\\\": \\\"pasanFernamdo@gmail.com\\\"\\n};\\nconst tourist = {\\n \\\"firstname\\\": \\\"Sunil\\\",\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\n \\\"email\\\": \\\"sunilFernamdo@gmail.com\\\"\\n};\\n\\nconst signupAdmin = async () => {\\n await Users.deleteMany({});\\n await server.post(\\\"/users/signup/admin\\\").send(admin);\\n};\\n\\nconst getAdminToken = async () => {\\n if (adminToken) {\\n return adminToken;\\n }\\n\\n await signupAdmin();\\n var creds = {\\n username: admin.email,\\n password: admin.password\\n };\\n const response = await server.post(\\\"/users/login\\\").send(creds);\\n adminToken = response.body.token;\\n return adminToken;\\n};\\n\\nconst addAssistant = async () => {\\n if (!adminToken) {\\n await getAdminToken();\\n }\\n\\n const response = await server.post(\\\"/employees\\\").set(\\\"Authorization\\\", `Bearer ${adminToken}`).send(assistant).expect(200);\\n passwordAssistant = response.body.password;\\n};\\n\\nconst getAssistantToken = async () => {\\n if (assistantToken) {\\n return assistantToken;\\n }\\n\\n if (passwordAssistant == null) {\\n await addAssistant();\\n }\\n\\n var creds = {\\n username: assistant.email,\\n password: passwordAssistant\\n };\\n const response = await server.post(\\\"/users/login\\\").send(creds);\\n assistantToken = response.body.token;\\n return assistantToken;\\n};\\n\\nconst addTourist = async () => {\\n if (!assistantToken) {\\n await getAssistantToken();\\n }\\n\\n const response = await server.post(\\\"/tourists\\\").set(\\\"Authorization\\\", `Bearer ${assistantToken}`).send(tourist).expect(200);\\n passwordUser = response.body.password;\\n};\\n\\nconst getTouristToken = async () => {\\n if (userToken) {\\n return userToken;\\n }\\n\\n if (passwordUser == null) {\\n await addTourist();\\n }\\n\\n var creds = {\\n username: tourist.email,\\n password: passwordUser\\n };\\n const response = await server.post(\\\"/users/login\\\").send(creds);\\n userToken = response.body.token;\\n return userToken;\\n};\\n\\nconst getExistingId = async () => {\\n const newTourist = {\\n \\\"firstname\\\": \\\"Namal\\\",\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\n \\\"email\\\": \\\"namalfernamdo@gmail.com\\\",\\n \\\"mobile\\\": \\\"981114844\\\",\\n \\\"rommnumber\\\": \\\"41\\\"\\n };\\n const tourist = new Users(newTourist);\\n await tourist.save();\\n return tourist._id.toString();\\n};\\n\\nconst getNonExistingId = async () => {\\n const newTourist = {\\n \\\"firstname\\\": \\\"Kamal\\\",\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\n \\\"email\\\": \\\"kamalfernamdo@gmail.com\\\",\\n \\\"username\\\": \\\"kamalfernamdo@gmail.com\\\"\\n };\\n const tourist = new Users(newTourist);\\n await tourist.save();\\n await tourist.remove();\\n return tourist._id.toString();\\n};\\n\\nconst getExistingIdAssistanct = async () => {\\n const newAssistant = {\\n \\\"firstname\\\": \\\"Kasun\\\",\\n \\\"lastname\\\": \\\"Perera\\\",\\n \\\"email\\\": \\\"kasun@gmail.com\\\"\\n };\\n const assistant = new Users(newAssistant);\\n await assistant.save();\\n return assistant._id.toString();\\n};\\n\\nconst getNonExistingIdAssistant = async () => {\\n const newAssistant = {\\n \\\"firstname\\\": \\\"Kamal\\\",\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\n \\\"email\\\": \\\"kamalfernamdo@gmail.com\\\"\\n };\\n const assistant = new Users(newAssistant);\\n await assistant.save();\\n await assistant.remove();\\n return assistant._id.toString();\\n};\\n\\nconst decodeToken = token => {\\n var decoded = jwt_decode(token);\\n return decoded;\\n};\\n\\nmodule.exports = {\\n getAdminToken,\\n getAssistantToken,\\n getTouristToken,\\n decodeToken,\\n addTourist,\\n getTouristToken,\\n getExistingId,\\n getNonExistingId,\\n getExistingIdAssistanct,\\n getNonExistingIdAssistant,\\n addAssistant\\n};\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVzZXJfaGVscGVyLmpzIl0sIm5hbWVzIjpbImFwcCIsInJlcXVpcmUiLCJzZXJ2ZXIiLCJqd3RfZGVjb2RlIiwiVXNlcnMiLCJ1c2VyVG9rZW4iLCJhc3Npc3RhbnRUb2tlbiIsImFkbWluVG9rZW4iLCJwYXNzd29yZEFzc2lzdGFudCIsInBhc3N3b3JkVXNlciIsImFkbWluIiwiYXNzaXN0YW50IiwidG91cmlzdCIsInNpZ251cEFkbWluIiwiZGVsZXRlTWFueSIsInBvc3QiLCJzZW5kIiwiZ2V0QWRtaW5Ub2tlbiIsImNyZWRzIiwidXNlcm5hbWUiLCJlbWFpbCIsInBhc3N3b3JkIiwicmVzcG9uc2UiLCJib2R5IiwidG9rZW4iLCJhZGRBc3Npc3RhbnQiLCJzZXQiLCJleHBlY3QiLCJnZXRBc3Npc3RhbnRUb2tlbiIsImFkZFRvdXJpc3QiLCJnZXRUb3VyaXN0VG9rZW4iLCJnZXRFeGlzdGluZ0lkIiwibmV3VG91cmlzdCIsInNhdmUiLCJfaWQiLCJ0b1N0cmluZyIsImdldE5vbkV4aXN0aW5nSWQiLCJyZW1vdmUiLCJnZXRFeGlzdGluZ0lkQXNzaXN0YW5jdCIsIm5ld0Fzc2lzdGFudCIsImdldE5vbkV4aXN0aW5nSWRBc3Npc3RhbnQiLCJkZWNvZGVUb2tlbiIsImRlY29kZWQiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxHQUFHLEdBQUdDLE9BQU8sQ0FBQyxXQUFELENBQW5COztBQUNBLE1BQU1DLE1BQU0sR0FBR0QsT0FBTyxDQUFDLFdBQUQsQ0FBUCxDQUFxQkQsR0FBckIsQ0FBZjs7QUFDQSxNQUFNRyxVQUFVLEdBQUdGLE9BQU8sQ0FBQyxZQUFELENBQTFCOztBQUNBLE1BQU1HLEtBQUssR0FBR0gsT0FBTyxDQUFDLG9CQUFELENBQXJCOztBQUVBLElBQUlJLFNBQUo7QUFDQSxJQUFJQyxjQUFKO0FBQ0EsSUFBSUMsVUFBSjtBQUNBLElBQUlDLGlCQUFKO0FBQ0EsSUFBSUMsWUFBSjtBQUVBLE1BQU1DLEtB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dGVudCI6WyJjb25zdCBhcHAgPSByZXF1aXJlKCcuLi8uLi9hcHAnKTtcclxuY29uc3Qgc2VydmVyID0gcmVxdWlyZShcInN1cGVydGVzdFwiKShhcHApO1xyXG5jb25zdCBqd3RfZGVjb2RlID0gcmVxdWlyZSgnand0LWRlY29kZScpO1xyXG5jb25zdCBVc2VycyA9IHJlcXVpcmUoJy4uLy4uL21vZGVscy91c2VycycpO1xyXG5cclxudmFyIHVzZXJUb2tlbjtcclxudmFyIGFzc2lzdGFudFRva2VuO1xyXG52YXIgYWRtaW5Ub2tlbjtcclxudmFyIHBhc3N3b3JkQXNzaXN0YW50O1xyXG52YXIgcGFzc3dvcmRVc2VyO1xyXG5cclxuY29uc3QgYWRtaW4gPSB7XHJcbiAgICBcImZpcnN0bmFtZVwiOiBcIkFkbWluXCIsXHJcbiAgICBcImxhc3RuYW1lXCI6IFwiQWRtaW5cIixcclxuICAgIFwiZW1haWxcIjogXCJhZG1pbkBnbWFpbC5jb21cIixcclxuICAgIFwicGFzc3dvcmRcIjogXCJhZG1pbi1wYXNzd29yZFwiXHJcbn07XHJcbmNvbnN0IGFzc2lzdGFudCA9IHtcclxuICAgIFwiZmlyc3RuYW1lXCI6IFwiUGFzYW5cIixcclxuICAgIFwibGFzdG5hbWVcIjogXCJGZXJuYW1kb1wiLFxyXG4gICAgXCJlbWFpbFwiOiBcInBhc2FuRmVybmFtZG9AZ21haWwuY29tXCJcclxufTtcclxuY29uc3QgdG91cmlzdCA9IHtcclxuICAgIFwiZmlyc3RuYW1lXCI6IFwiU3VuaWxcIixcclxuICAgIFwibGFzdG5hbWVcIjogXCJGZXJuYW1kb1wiLFxyXG4gICAgXCJlbWFpbFwiOiBcInN1bmlsRmVybmFtZG9AZ21haWwuY29tXCJcclxufTtcclxuXHJcbmNvbnN0IHNpZ251cEFkbWluID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgYXdhaXQgVXNlcnMuZGVsZXRlTWFueSh7fSk7XHJcbiAgICBhd2FpdCBzZXJ2ZXJcclxuICAgICAgICAucG9zdChcIi91c2Vycy9zaWdudXAvYWRtaW5cIilcclxuICAgICAgICAuc2VuZChhZG1pbik7XHJcbn07XHJcblxyXG5jb25zdCBnZXRBZG1pblRva2VuID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgaWYgKGFkbWluVG9rZW4pIHtcclxuICAgICAgICByZXR1cm4gYWRtaW5Ub2tlbjtcclxuICAgIH1cclxuICAgIGF3YWl0IHNpZ251cEFkbWluKCk7XHJcbiAgICB2YXIgY3JlZHMgPSB7XHJcbiAgICAgICAgdXNlcm5hbWU6IGFkbWluLmVtYWlsLFxyXG4gICAgICAgIHBhc3N3b3JkOiBhZG1pbi5wYXNzd29yZCxcclxuICAgIH07XHJcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHNlcnZlclxyXG4gICAgICAgIC5wb3N0KFwiL3VzZXJzL2xvZ2luXCIpXHJcbiAgICAgICAgLnNlbmQoY3JlZHMpO1xyXG4gICAgYWRtaW5Ub2tlbiA9IHJlc3BvbnNlLmJvZHkudG9rZW47XHJcbiAgICByZXR1cm4gYWRtaW5Ub2tlbjtcclxufVxyXG5cclxuY29uc3QgYWRkQXNzaXN0YW50ID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgaWYgKCFhZG1pblRva2VuKSB7XHJcbiAgICAgICAgYXdhaXQgZ2V0QWRtaW5Ub2tlbigpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBzZXJ2ZXJcclxuICAgICAgICAucG9zdChcIi9lbXBsb3llZXNcIilcclxuICAgICAgICAuc2V0KFwiQXV0aG9yaXphdGlvblwiLCBgQmVhcmVyICR7YWRtaW5Ub2tlbn1gKVxyXG4gICAgICAgIC5zZW5kKGFzc2lzdGFudClcclxuICAgICAgICAuZXhwZWN0KDIwMCk7XHJcbiAgICAgICAgICAgXHJcbiAgICBwYXNzd29yZEFzc2lzdGFudCA9ICByZXNwb25zZS5ib2R5LnBhc3N3b3JkO1xyXG59O1xyXG5cclxuY29uc3QgZ2V0QXNzaXN0YW50VG9rZW4gPSBhc3luYyAoKSA9PiB7XHJcbiAgICBpZiAoYXNzaXN0YW50VG9rZW4pIHtcclxuICAgICAgICByZXR1cm4gYXNzaXN0YW50VG9rZW47XHJcbiAgICB9XHJcbiAgICBpZihwYXNzd29yZEFzc2lzdGFudD09bnVsbCl7YXdhaXQgYWRkQXNzaXN0YW50KCk7fVxyXG4gICAgdmFyIGNyZWRzID0ge1xyXG4gICAgICAgIHVzZXJuYW1lOiBhc3Npc3RhbnQuZW1haWwsXHJcbiAgICAgICAgcGFzc3dvcmQ6IHBhc3N3b3JkQXNzaXN0YW50LFxyXG4gICAgfTtcclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgc2VydmVyXHJcbiAgICAgICAgLnBvc3QoXCIvdXNlcnMvbG9naW5cIilcclxuICAgICAgICAuc2VuZChjcmVkcyk7XHJcbiAgICBhc3Npc3RhbnRUb2tlbiA9IHJlc3BvbnNlLmJvZHkudG9rZW47XHJcbiAgICByZXR1cm4gYXNzaXN0YW50VG9rZW47XHJcbn1cclxuXHJcbmNvbnN0IGFkZFRvdXJpc3QgPSBhc3luYyAoKSA9PiB7XHJcbiAgICBpZiAoIWFzc2lzdGFudFRva2VuKSB7XHJcbiAgICAgICAgYXdhaXQgZ2V0QXNzaXN0YW50VG9rZW4oKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgc2VydmVyXHJcbiAgICAgICAgLnBvc3QoXCIvdG91cmlzdHNcIilcclxuICAgICAgICAuc2V0KFwiQXV0aG9yaXphdGlvblwiLCBgQmVhcmVyICR7YXNzaXN0YW50VG9rZW59YClcclxuICAgICAgICAuc2VuZCh0b3VyaXN0KVxyXG4gICAgICAgIC5leHBlY3QoMjAwKTtcclxuICAgIHBhc3N3b3JkVXNlcj0gIHJlc3BvbnNlLmJvZHkucGFzc3dvcmQ7XHJcbn07XHJcbiBcclxuXHJcbmNvbnN0IGdldFRvdXJpc3RUb2tlbiA9IGFzeW5jICgpID0+IHtcclxuICAgIGlmICh1c2VyVG9rZW4pIHtcclxuICAgICAgICByZXR1cm4gdXNlclRva2VuO1xyXG4gICAgfVxyXG4gICAgaWYocGFzc3dvcmRVc2VyID09IG51bGwpIHsgYXdhaXQgYWRkVG91cmlzdCgpO31cclxuICAgIHZhciBjcmVkcyA9IHtcclxuICAgICAgICB1c2VybmFtZTogdG91cmlzdC5lbWFpbCxcclxuICAgICAgICBwYXNzd29yZDogcGFzc3dvcmRVc2VyLFxyXG4gICAgfTtcclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgc2VydmVyXHJcbiAgICAgICAgLnBvc3QoXCIvdXNlcnMvbG9naW5cIilcclxuICAgICAgICAuc2VuZChjcmVkcyk7XHJcbiAgICB1c2VyVG9rZW4gPSByZXNwb25zZS5ib2R5LnRva2VuO1xyXG4gICAgcmV0dXJuIHVzZXJUb2tlbjtcclxufVxyXG5cclxuY29uc3QgZ2V0RXhpc3RpbmdJZCA9IGFzeW5jICgpID0+IHtcclxuICAgIGNvbnN0IG5ld1RvdXJpc3QgPSB7XHJcbiAgICAgICAgXCJmaXJzdG5hbWVcIjogXCJOYW1hbFwiLFxyXG4gICAgICAgIFwibGFzdG5hbWVcIjogXCJGZXJuYW1kb1wiLFxyXG4gICAgICAgIFwiZW1haWxcIjogXCJuYW1hbGZlcm5hbWRvQGdtYWlsLmNvbVwiLFxyXG4gICAgICAgIFwibW9iaWxlXCI6IFwiOTgxMTE0ODQ0XCIsXHJcbiAgICAgICAgXCJyb21tbnVtYmVyXCIgOiBcIjQxXCIsXHJcblxyXG4gICAgfVxyXG4gICAgY29uc3QgdG91cmlzdCA9IG5ldyBVc2VycyhuZXdUb3VyaXN0KTtcclxuICAgIGF3YWl0IHRvdXJpc3Quc2F2ZSgpO1xyXG5cclxuICAgIHJldHVybiB0b3VyaXN0Ll9pZC50b1N0cmluZygpO1xyXG5cclxuICAgIFxyXG59XHJcblxyXG5jb25zdCBnZXROb25FeGlzdGluZ0lkID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgY29uc3QgbmV3VG91cmlzdCA9IHtcclxuICAgICAgICBcImZpcnN0bmFtZVwiOiBcIkthbWFsXCIsXHJcbiAgICAgICAgXCJsYXN0bmFtZVwiOiBcIkZlcm5hbWRvXCIsXHJcbiAgICAgICAgXCJlbWFpbFwiOiBcImthbWFsZmVybmFtZG9AZ21haWwuY29tXCIsXHJcbiAgICAgICAgXCJ1c2VybmFtZVwiOiBcImthbWFsZmVybmFtZG9AZ21haWwuY29tXCJcclxuICAgIH1cclxuICAgIGNvbnN0IHRvdXJpc3QgPSBuZXcgVXNlcnMobmV3VG91cmlzdCk7XHJcbiAgICBhd2FpdCB0b3VyaXN0LnNhdmUoKTtcclxuICAgIGF3YWl0IHRvdXJpc3QucmVtb3ZlKCk7XHJcblxyXG4gICAgcmV0dXJuIHRvdXJpc3QuX2lkLnRvU3RyaW5nKCk7XHJcbn1cclxuXHJcbmNvbnN0IGdldEV4aXN0aW5nSWRBc3Npc3RhbmN0ID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgY29uc3QgbmV3QXNzaXN0YW50ID0ge1xyXG4gICAgICAgIFwiZmlyc3RuYW1lXCI6IFwiS2FzdW5cIixcclxuICAgICAgICBcImxhc3RuYW1lXCI6IFwiUGVyZXJhXCIsXHJcbiAgICAgICAgXCJlbWFpbFwiOiBcImthc3VuQGdtYWlsLmNvbVwiLFxyXG4gICAgfVxyXG4gICAgY29uc3QgYXNzaXN0YW50ID0gbmV3IFVzZXJzKG5ld0Fzc2lzdGFudCk7XHJcbiAgICBhd2FpdCBhc3Npc3RhbnQuc2F2ZSgpO1xyXG5cclxuICAgIHJldHVybiBhc3Npc3RhbnQuX2lkLnRvU3RyaW5nKCk7XHJcblxyXG4gICAgXHJcbn1cclxuXHJcbmNvbnN0IGdldE5vbkV4aXN0aW5nSWRBc3Npc3RhbnQgPSBhc3luYyAoKSA9PiB7XHJcbiAgICBjb25zdCBuZXdBc3Npc3RhbnQgPSB7XHJcbiAgICAgICAgXCJmaXJzdG5hbWVcIjogXCJLYW1hbFwiLFxyXG4gICAgICAgIFwibGFzdG5hbWVcIjogXCJGZXJuYW1kb1wiLFxyXG4gICAgICAgIFwiZW1haWxcIjogXCJrYW1hbGZlcm5hbWRvQGdtYWlsLmNvbVwiXHJcbiAgICB9XHJcbiAgICBjb25zdCBhc3Npc3RhbnQgPSBuZXcgVXNlcnMobmV3QXNzaXN0YW50KTtcclxuICAgIGF3YWl0IGFzc2lzdGFudC5zYXZlKCk7XHJcbiAgICBhd2FpdCBhc3Npc3RhbnQucmVtb3ZlKCk7XHJcblxyXG4gICAgcmV0dXJuIGFzc2lzdGFudC5faWQudG9TdHJpbmcoKTtcclxufVxyXG5cclxuY29uc3QgZGVjb2RlVG9rZW4gPSAodG9rZW4pID0+IHtcclxuICAgIHZhciBkZWNvZGVkID0gand0X2RlY29kZSh0b2tlbik7XHJcbiAgICByZXR1cm4gZGVjb2RlZDtcclxufVxyXG5cclxubW9kdWxlLmV4cG9ydHMgPSB7XHJcbiAgICBnZXRBZG1pblRva2VuLCBnZXRBc3Npc3RhbnRUb2tlbiwgZ2V0VG91cmlzdFRva2VuLCBkZWNvZGVUb2tlbiwgYWRkVG91cmlzdCwgZ2V0VG91cmlzdFRva2VuICxnZXRFeGlzdGluZ0lkICxnZXROb25FeGlzdGluZ0lkLCBnZXRFeGlzdGluZ0lkQXNzaXN0YW5jdCwgZ2V0Tm9uRXhpc3RpbmdJZEFzc2lzdGFudCwgYWRkQXNzaXN0YW50XHJcbn1cclxuIl19\",\"originalCode\":\"const app = require('../../app');\\r\\nconst server = require(\\\"supertest\\\")(app);\\r\\nconst jwt_decode = require('jwt-decode');\\r\\nconst Users = require('../../models/users');\\r\\n\\r\\nvar userToken;\\r\\nvar assistantToken;\\r\\nvar adminToken;\\r\\nvar passwordAssistant;\\r\\nvar passwordUser;\\r\\n\\r\\nconst admin = {\\r\\n \\\"firstname\\\": \\\"Admin\\\",\\r\\n \\\"lastname\\\": \\\"Admin\\\",\\r\\n \\\"email\\\": \\\"admin@gmail.com\\\",\\r\\n \\\"password\\\": \\\"admin-password\\\"\\r\\n};\\r\\nconst assistant = {\\r\\n \\\"firstname\\\": \\\"Pasan\\\",\\r\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\r\\n \\\"email\\\": \\\"pasanFernamdo@gmail.com\\\"\\r\\n};\\r\\nconst tourist = {\\r\\n \\\"firstname\\\": \\\"Sunil\\\",\\r\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\r\\n \\\"email\\\": \\\"sunilFernamdo@gmail.com\\\"\\r\\n};\\r\\n\\r\\nconst signupAdmin = async () => {\\r\\n await Users.deleteMany({});\\r\\n await server\\r\\n .post(\\\"/users/signup/admin\\\")\\r\\n .send(admin);\\r\\n};\\r\\n\\r\\nconst getAdminToken = async () => {\\r\\n if (adminToken) {\\r\\n return adminToken;\\r\\n }\\r\\n await signupAdmin();\\r\\n var creds = {\\r\\n username: admin.email,\\r\\n password: admin.password,\\r\\n };\\r\\n const response = await server\\r\\n .post(\\\"/users/login\\\")\\r\\n .send(creds);\\r\\n adminToken = response.body.token;\\r\\n return adminToken;\\r\\n}\\r\\n\\r\\nconst addAssistant = async () => {\\r\\n if (!adminToken) {\\r\\n await getAdminToken();\\r\\n }\\r\\n const response = await server\\r\\n .post(\\\"/employees\\\")\\r\\n .set(\\\"Authorization\\\", `Bearer ${adminToken}`)\\r\\n .send(assistant)\\r\\n .expect(200);\\r\\n \\r\\n passwordAssistant = response.body.password;\\r\\n};\\r\\n\\r\\nconst getAssistantToken = async () => {\\r\\n if (assistantToken) {\\r\\n return assistantToken;\\r\\n }\\r\\n if(passwordAssistant==null){await addAssistant();}\\r\\n var creds = {\\r\\n username: assistant.email,\\r\\n password: passwordAssistant,\\r\\n };\\r\\n const response = await server\\r\\n .post(\\\"/users/login\\\")\\r\\n .send(creds);\\r\\n assistantToken = response.body.token;\\r\\n return assistantToken;\\r\\n}\\r\\n\\r\\nconst addTourist = async () => {\\r\\n if (!assistantToken) {\\r\\n await getAssistantToken();\\r\\n }\\r\\n const response = await server\\r\\n .post(\\\"/tourists\\\")\\r\\n .set(\\\"Authorization\\\", `Bearer ${assistantToken}`)\\r\\n .send(tourist)\\r\\n .expect(200);\\r\\n passwordUser= response.body.password;\\r\\n};\\r\\n \\r\\n\\r\\nconst getTouristToken = async () => {\\r\\n if (userToken) {\\r\\n return userToken;\\r\\n }\\r\\n if(passwordUser == null) { await addTourist();}\\r\\n var creds = {\\r\\n username: tourist.email,\\r\\n password: passwordUser,\\r\\n };\\r\\n const response = await server\\r\\n .post(\\\"/users/login\\\")\\r\\n .send(creds);\\r\\n userToken = response.body.token;\\r\\n return userToken;\\r\\n}\\r\\n\\r\\nconst getExistingId = async () => {\\r\\n const newTourist = {\\r\\n \\\"firstname\\\": \\\"Namal\\\",\\r\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\r\\n \\\"email\\\": \\\"namalfernamdo@gmail.com\\\",\\r\\n \\\"mobile\\\": \\\"981114844\\\",\\r\\n \\\"rommnumber\\\" : \\\"41\\\",\\r\\n\\r\\n }\\r\\n const tourist = new Users(newTourist);\\r\\n await tourist.save();\\r\\n\\r\\n return tourist._id.toString();\\r\\n\\r\\n \\r\\n}\\r\\n\\r\\nconst getNonExistingId = async () => {\\r\\n const newTourist = {\\r\\n \\\"firstname\\\": \\\"Kamal\\\",\\r\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\r\\n \\\"email\\\": \\\"kamalfernamdo@gmail.com\\\",\\r\\n \\\"username\\\": \\\"kamalfernamdo@gmail.com\\\"\\r\\n }\\r\\n const tourist = new Users(newTourist);\\r\\n await tourist.save();\\r\\n await tourist.remove();\\r\\n\\r\\n return tourist._id.toString();\\r\\n}\\r\\n\\r\\nconst getExistingIdAssistanct = async () => {\\r\\n const newAssistant = {\\r\\n \\\"firstname\\\": \\\"Kasun\\\",\\r\\n \\\"lastname\\\": \\\"Perera\\\",\\r\\n \\\"email\\\": \\\"kasun@gmail.com\\\",\\r\\n }\\r\\n const assistant = new Users(newAssistant);\\r\\n await assistant.save();\\r\\n\\r\\n return assistant._id.toString();\\r\\n\\r\\n \\r\\n}\\r\\n\\r\\nconst getNonExistingIdAssistant = async () => {\\r\\n const newAssistant = {\\r\\n \\\"firstname\\\": \\\"Kamal\\\",\\r\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\r\\n \\\"email\\\": \\\"kamalfernamdo@gmail.com\\\"\\r\\n }\\r\\n const assistant = new Users(newAssistant);\\r\\n await assistant.save();\\r\\n await assistant.remove();\\r\\n\\r\\n return assistant._id.toString();\\r\\n}\\r\\n\\r\\nconst decodeToken = (token) => {\\r\\n var decoded = jwt_decode(token);\\r\\n return decoded;\\r\\n}\\r\\n\\r\\nmodule.exports = {\\r\\n getAdminToken, getAssistantToken, getTouristToken, decodeToken, addTourist, getTouristToken ,getExistingId ,getNonExistingId, getExistingIdAssistanct, getNonExistingIdAssistant, addAssistant\\r\\n}\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/79/user_helper_79166e334a8b342d542dc0574b645dc7.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2692\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\tests\\\\helpers\\\\user_helper.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":16466,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":16463,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"signupAdmin\",\"ranges\":[{\"startOffset\":714,\"endOffset\":815,\"count\":3}],\"isBlockCoverage\":false},{\"functionName\":\"getAdminToken\",\"ranges\":[{\"startOffset\":840,\"endOffset\":1126,\"count\":3}],\"isBlockCoverage\":false},{\"functionName\":\"addAssistant\",\"ranges\":[{\"startOffset\":1150,\"endOffset\":1389,\"count\":2}],\"isBlockCoverage\":false},{\"functionName\":\"getAssistantToken\",\"ranges\":[{\"startOffset\":1418,\"endOffset\":1770,\"count\":3}],\"isBlockCoverage\":false},{\"functionName\":\"addTourist\",\"ranges\":[{\"startOffset\":1792,\"endOffset\":2035,\"count\":2}],\"isBlockCoverage\":false},{\"functionName\":\"getTouristToken\",\"ranges\":[{\"startOffset\":2062,\"endOffset\":2380,\"count\":3}],\"isBlockCoverage\":false},{\"functionName\":\"getExistingId\",\"ranges\":[{\"startOffset\":2405,\"endOffset\":2690,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getNonExistingId\",\"ranges\":[{\"startOffset\":2718,\"endOffset\":3021,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getExistingIdAssistanct\",\"ranges\":[{\"startOffset\":3056,\"endOffset\":3290,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getNonExistingIdAssistant\",\"ranges\":[{\"startOffset\":3327,\"endOffset\":3599,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"decodeToken\",\"ranges\":[{\"startOffset\":3622,\"endOffset\":3687,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const Schedule = require('../../models/schedules');\\n\\nconst mockSchedule = require('../mockData/schedule.data');\\n\\nconst mongoose = require('mongoose');\\n\\nconst addSchedulesToDb = async id => {\\n const schedules = await mockSchedule(id);\\n const scheduleObjects = schedules.map(schedule => new Schedule(schedule));\\n const promiseArray = scheduleObjects.map(schedule => schedule.save());\\n await Promise.all(promiseArray);\\n};\\n\\nconst getExistingId = async () => {\\n const newSchedule = {\\n \\\"user\\\": mongoose.Types.ObjectId(),\\n \\\"place\\\": mongoose.Types.ObjectId(),\\n \\\"date\\\": Date(),\\n \\\"travellingMethod\\\": 'Car'\\n };\\n const schedule = new Schedule(newSchedule);\\n await schedule.save();\\n return schedule._id.toString();\\n};\\n\\nconst getNonExistingId = async () => {\\n const newSchedule = {\\n \\\"user\\\": mongoose.Types.ObjectId(),\\n \\\"place\\\": mongoose.Types.ObjectId(),\\n \\\"date\\\": Date(),\\n \\\"travellingMethod\\\": 'Car'\\n };\\n const schedule = new Schedule(newSchedule);\\n await schedule.save();\\n await schedule.remove();\\n return schedule._id.toString();\\n};\\n\\nconst schedulesInDb = async () => {\\n const places = await Note.find({});\\n return places;\\n};\\n\\nmodule.exports = {\\n addSchedulesToDb,\\n getExistingId,\\n getNonExistingId,\\n schedulesInDb\\n};\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNjaGVkdWxlX2hlbHBlci5qcyJdLCJuYW1lcyI6WyJTY2hlZHVsZSIsInJlcXVpcmUiLCJtb2NrU2NoZWR1bGUiLCJtb25nb29zZSIsImFkZFNjaGVkdWxlc1RvRGIiLCJpZCIsInNjaGVkdWxlcyIsInNjaGVkdWxlT2JqZWN0cyIsIm1hcCIsInNjaGVkdWxlIiwicHJvbWlzZUFycmF5Iiwic2F2ZSIsIlByb21pc2UiLCJhbGwiLCJnZXRFeGlzdGluZ0lkIiwibmV3U2NoZWR1bGUiLCJUeXBlcyIsIk9iamVjdElkIiwiRGF0ZSIsIl9pZCIsInRvU3RyaW5nIiwiZ2V0Tm9uRXhpc3RpbmdJZCIsInJlbW92ZSIsInNjaGVkdWxlc0luRGIiLCJwbGFjZXMiLCJOb3RlIiwiZmluZCIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLFFBQVEsR0FBR0MsT0FBTyxDQUFDLHdCQUFELENBQXhCOztBQUNBLE1BQU1DLFlBQVksR0FBR0QsT0FBTyxDQUFDLDJCQUFELENBQTVCOztBQUNBLE1BQU1FLFFBQVEsR0FBR0YsT0FBTyxDQUFDLFVBQUQsQ0FBeEI7O0FBR0EsTUFBTUcsZ0JBQWdCLEdBQUcsTUFBT0MsRUFBUCxJQUFjO0FBQ25DLFFBQU1DLFNBQVMsR0FBRSxNQUFNSixZQUFZLENBQUNHLEVBQUQsQ0FBbkM7QUFDQSxRQUFNRSxlQUFlLEdBQUdELFNBQVMsQ0FDNUJFLEdBRG1CLENBQ2ZDLFFBQVEsSUFBSSxJQUFJVCxRQUFKLENBQWFTLFFBQWIsQ0FERyxDQUF4QjtBQUVBLFFBQU1DLFlBQVksR0FBR0gsZUFBZSxDQUFDQyxHQUFoQixDQUFvQkMsUUFBUSxJQUFJQSxRQUFRLENBQUNFLElBQVQsRUFBaEMsQ0FBckI7QUFDQSxRQUFNQyxPQUFPLENBQUNDLEdBQVIsQ0FBWUgsWUFBWixDQUFOO0FBQ0gsQ0FORDs7QUFRQSxNQUFNSSxhQUFhLEdBQUcsWUFBWTtBQUM5QixRQUFNQyxXQUFXLEdBQUc7QUFDaEIsWUFBUVosUUFBUSxDQUFDYSxLQUFULENBQWVDLFFBQWYsRUFEUTtBQUVoQixhQUFTZCxRQUFRLENBQUNhLEtBQVQsQ0FBZUMsUUFBZixFQUZPO0FBR2hCLFlBQVFDLElBQUksRUFISTtBQUloQix3QkFBb0I7QUFKSixHQUFwQjtBQU9BLFFBQU1ULFFBQVEsR0FBRyxJQUFJVCxRQUFKLENBQWFlLFdBQWIsQ0FBakI7QUFDQSxRQUFNTixRQUFRLENBQUNFLElBQVQsRUFBTjtBQUVBLFNBQU9GLFFBQVEsQ0FBQ1UsR0FBVCxDQUFhQyxRQUFiLEVBQVA7QUFDSCxDQVpEOztBQWNBLE1BQU1DLGdCQUFnQixHQUFHLFlBQVk7QUFDakMsUUFBTU4sV0FBVyxHQUFHO0FBQ2hCLFlBQVFaLFFBQVEsQ0FBQ2EsS0FBVCxDQUFlQyxRQUFmLEVBRFE7QUFFaEIsYUFBU2QsUUFBUSxDQUFDYSxLQUFULENBQWVDLFFBQWYsRUFGTztBQUdoQixZQUFRQyxJQUFJLEVBSEk7QUFJaEIsd0JBQW9CO0FBSkosR0FBcEI7QUFPQSxRQUFNVCxRQUFRLEdBQUcsSUFBSVQsUUFBSixDQUFhZSxXQUFiLENBQWpCO0FBQ0EsUUFBTU4sUUFBUSxDQUFDRSxJQUFULEVBQU47QUFDQSxRQUFNRixRQUFRLENBQUNhLE1BQVQsRUFBTjtBQUVBLFNBQU9iLFFBQVEsQ0FBQ1UsR0FBVCxDQUFhQyxRQUFiLEVBQVA7QUFDSCxDQWJEOztBQWVBLE1BQU1HLGFBQWEsR0FBRyxZQUFZO0FBQzlCLFFBQU1DLE1BQU0sR0FBRyxNQUFNQyxJQUFJLENBQUNDLElBQUwsQ0FBVSxFQUFWLENBQXJCO0FBQ0EsU0FBT0YsTUFBUDtBQUNILENBSEQ7O0FBS0FHLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQjtBQUNaeEIsRUFBQUEsZ0JBRFk7QUFDTVUsRUFBQUEsYUFETjtBQUNxQk8sRUFBQUEsZ0JBRHJCO0FBQ3NDRSxFQUFBQTtBQUR0QyxDQUFqQiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IFNjaGVkdWxlID0gcmVxdWlyZSgnLi4vLi4vbW9kZWxzL3NjaGVkdWxlcycpO1xyXG5jb25zdCBtb2NrU2NoZWR1bGUgPSByZXF1aXJlKCcuLi9tb2NrRGF0YS9zY2hlZHVsZS5kYXRhJyk7XHJcbmNvbnN0IG1vbmdvb3NlID0gcmVxdWlyZSgnbW9uZ29vc2UnKTtcclxuXHJcblxyXG5jb25zdCBhZGRTY2hlZHVsZXNUb0RiID0gYXN5bmMgKGlkKSA9PiB7XHJcbiAgICBjb25zdCBzY2hlZHVsZXM9IGF3YWl0IG1vY2tTY2hlZHVsZShpZCk7XHJcbiAgICBjb25zdCBzY2hlZHVsZU9iamVjdHMgPSBzY2hlZHVsZXNcclxuICAgICAgICAubWFwKHNjaGVkdWxlID0+IG5ldyBTY2hlZHVsZShzY2hlZHVsZSkpO1xyXG4gICAgY29uc3QgcHJvbWlzZUFycmF5ID0gc2NoZWR1bGVPYmplY3RzLm1hcChzY2hlZHVsZSA9PiBzY2hlZHVsZS5zYXZlKCkpO1xyXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZUFycmF5KTtcclxufVxyXG5cclxuY29uc3QgZ2V0RXhpc3RpbmdJZCA9IGFzeW5jICgpID0+IHtcclxuICAgIGNvbnN0IG5ld1NjaGVkdWxlID0ge1xyXG4gICAgICAgIFwidXNlclwiOiBtb25nb29zZS5UeXBlcy5PYmplY3RJZCgpLFxyXG4gICAgICAgIFwicGxhY2VcIjogbW9uZ29vc2UuVHlwZXMuT2JqZWN0SWQoKSxcclxuICAgICAgICBcImRhdGVcIjogRGF0ZSgpLFxyXG4gICAgICAgIFwidHJhdmVsbGluZ01ldGhvZFwiOiAnQ2FyJ1xyXG4gICAgXHJcbiAgICB9O1xyXG4gICAgY29uc3Qgc2NoZWR1bGUgPSBuZXcgU2NoZWR1bGUobmV3U2NoZWR1bGUpO1xyXG4gICAgYXdhaXQgc2NoZWR1bGUuc2F2ZSgpO1xyXG5cclxuICAgIHJldHVybiBzY2hlZHVsZS5faWQudG9TdHJpbmcoKTtcclxufVxyXG5cclxuY29uc3QgZ2V0Tm9uRXhpc3RpbmdJZCA9IGFzeW5jICgpID0+IHtcclxuICAgIGNvbnN0IG5ld1NjaGVkdWxlID0ge1xyXG4gICAgICAgIFwidXNlclwiOiBtb25nb29zZS5UeXBlcy5PYmplY3RJZCgpLFxyXG4gICAgICAgIFwicGxhY2VcIjogbW9uZ29vc2UuVHlwZXMuT2JqZWN0SWQoKSxcclxuICAgICAgICBcImRhdGVcIjogRGF0ZSgpLFxyXG4gICAgICAgIFwidHJhdmVsbGluZ01ldGhvZFwiOiAnQ2FyJ1xyXG4gICAgXHJcbiAgICB9O1xyXG4gICAgY29uc3Qgc2NoZWR1bGUgPSBuZXcgU2NoZWR1bGUobmV3U2NoZWR1bGUpO1xyXG4gICAgYXdhaXQgc2NoZWR1bGUuc2F2ZSgpO1xyXG4gICAgYXdhaXQgc2NoZWR1bGUucmVtb3ZlKCk7XHJcblxyXG4gICAgcmV0dXJuIHNjaGVkdWxlLl9pZC50b1N0cmluZygpO1xyXG59XHJcblxyXG5jb25zdCBzY2hlZHVsZXNJbkRiID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgY29uc3QgcGxhY2VzID0gYXdhaXQgTm90ZS5maW5kKHt9KTtcclxuICAgIHJldHVybiBwbGFjZXM7XHJcbn1cclxuXHJcbm1vZHVsZS5leHBvcnRzID0ge1xyXG4gICAgIGFkZFNjaGVkdWxlc1RvRGIsIGdldEV4aXN0aW5nSWQsIGdldE5vbkV4aXN0aW5nSWQsc2NoZWR1bGVzSW5EYlxyXG59Il19\",\"originalCode\":\"const Schedule = require('../../models/schedules');\\r\\nconst mockSchedule = require('../mockData/schedule.data');\\r\\nconst mongoose = require('mongoose');\\r\\n\\r\\n\\r\\nconst addSchedulesToDb = async (id) => {\\r\\n const schedules= await mockSchedule(id);\\r\\n const scheduleObjects = schedules\\r\\n .map(schedule => new Schedule(schedule));\\r\\n const promiseArray = scheduleObjects.map(schedule => schedule.save());\\r\\n await Promise.all(promiseArray);\\r\\n}\\r\\n\\r\\nconst getExistingId = async () => {\\r\\n const newSchedule = {\\r\\n \\\"user\\\": mongoose.Types.ObjectId(),\\r\\n \\\"place\\\": mongoose.Types.ObjectId(),\\r\\n \\\"date\\\": Date(),\\r\\n \\\"travellingMethod\\\": 'Car'\\r\\n \\r\\n };\\r\\n const schedule = new Schedule(newSchedule);\\r\\n await schedule.save();\\r\\n\\r\\n return schedule._id.toString();\\r\\n}\\r\\n\\r\\nconst getNonExistingId = async () => {\\r\\n const newSchedule = {\\r\\n \\\"user\\\": mongoose.Types.ObjectId(),\\r\\n \\\"place\\\": mongoose.Types.ObjectId(),\\r\\n \\\"date\\\": Date(),\\r\\n \\\"travellingMethod\\\": 'Car'\\r\\n \\r\\n };\\r\\n const schedule = new Schedule(newSchedule);\\r\\n await schedule.save();\\r\\n await schedule.remove();\\r\\n\\r\\n return schedule._id.toString();\\r\\n}\\r\\n\\r\\nconst schedulesInDb = async () => {\\r\\n const places = await Note.find({});\\r\\n return places;\\r\\n}\\r\\n\\r\\nmodule.exports = {\\r\\n addSchedulesToDb, getExistingId, getNonExistingId,schedulesInDb\\r\\n}\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/fd/schedule_helper_fdff53486ff035193f245be6b39c41e9.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"3704\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\tests\\\\helpers\\\\schedule_helper.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":5724,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":5721,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"addSchedulesToDb\",\"ranges\":[{\"startOffset\":266,\"endOffset\":510,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":364,\"endOffset\":398,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":444,\"endOffset\":471,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"getExistingId\",\"ranges\":[{\"startOffset\":535,\"endOffset\":813,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getNonExistingId\",\"ranges\":[{\"startOffset\":841,\"endOffset\":1146,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"schedulesInDb\",\"ranges\":[{\"startOffset\":1171,\"endOffset\":1241,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const mongoose = require('mongoose');\\n\\nconst {\\n getExistingId\\n} = require('../helpers/user_helper');\\n\\nconst schedule = async (id = null) => {\\n return [{\\n \\\"user\\\": mongoose.Types.ObjectId(id),\\n \\\"place\\\": mongoose.Types.ObjectId(),\\n \\\"date\\\": new Date(),\\n \\\"travellingMethod\\\": 'Bus'\\n }];\\n};\\n\\nmodule.exports = schedule;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNjaGVkdWxlLmRhdGEuanMiXSwibmFtZXMiOlsibW9uZ29vc2UiLCJyZXF1aXJlIiwiZ2V0RXhpc3RpbmdJZCIsInNjaGVkdWxlIiwiaWQiLCJUeXBlcyIsIk9iamVjdElkIiwiRGF0ZSIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLFFBQVEsR0FBR0MsT0FBTyxDQUFDLFVBQUQsQ0FBeEI7O0FBQ0EsTUFBTTtBQUFDQyxFQUFBQTtBQUFELElBQWtCRCxPQUFPLENBQUMsd0JBQUQsQ0FBL0I7O0FBRUEsTUFBTUUsUUFBUSxHQUFHLE9BQU1DLEVBQUUsR0FBRyxJQUFYLEtBQWtCO0FBQy9CLFNBQU8sQ0FBQztBQUNKLFlBQVFKLFFBQVEsQ0FBQ0ssS0FBVCxDQUFlQyxRQUFmLENBQXdCRixFQUF4QixDQURKO0FBRUosYUFBU0osUUFBUSxDQUFDSyxLQUFULENBQWVDLFFBQWYsRUFGTDtBQUdKLFlBQVEsSUFBSUMsSUFBSixFQUhKO0FBSUosd0JBQW9CO0FBSmhCLEdBQUQsQ0FBUDtBQU9ILENBUkQ7O0FBV0FDLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQk4sUUFBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBtb25nb29zZSA9IHJlcXVpcmUoJ21vbmdvb3NlJyk7XHJcbmNvbnN0IHtnZXRFeGlzdGluZ0lkfSA9IHJlcXVpcmUoJy4uL2hlbHBlcnMvdXNlcl9oZWxwZXInKTtcclxuXHJcbmNvbnN0IHNjaGVkdWxlID0gYXN5bmMoaWQgPSBudWxsKT0+e1xyXG4gICAgcmV0dXJuIFt7XHJcbiAgICAgICAgXCJ1c2VyXCI6IG1vbmdvb3NlLlR5cGVzLk9iamVjdElkKGlkKSxcclxuICAgICAgICBcInBsYWNlXCI6IG1vbmdvb3NlLlR5cGVzLk9iamVjdElkKCksXHJcbiAgICAgICAgXCJkYXRlXCI6IG5ldyBEYXRlKCksXHJcbiAgICAgICAgXCJ0cmF2ZWxsaW5nTWV0aG9kXCI6ICdCdXMnXHJcbiAgICBcclxuICAgIH1dO1xyXG59XHJcblxyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBzY2hlZHVsZTsiXX0=\",\"originalCode\":\"const mongoose = require('mongoose');\\r\\nconst {getExistingId} = require('../helpers/user_helper');\\r\\n\\r\\nconst schedule = async(id = null)=>{\\r\\n return [{\\r\\n \\\"user\\\": mongoose.Types.ObjectId(id),\\r\\n \\\"place\\\": mongoose.Types.ObjectId(),\\r\\n \\\"date\\\": new Date(),\\r\\n \\\"travellingMethod\\\": 'Bus'\\r\\n \\r\\n }];\\r\\n}\\r\\n\\r\\n\\r\\nmodule.exports = schedule;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/ac/scheduledata_ac56f896a1cf3b724acb9bae429c45f0.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"3705\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\tests\\\\mockData\\\\schedule.data.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":1745,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":1742,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"schedule\",\"ranges\":[{\"startOffset\":209,\"endOffset\":386,\"count\":1}],\"isBlockCoverage\":true}]}}]},{\"leaks\":false,\"numFailingTests\":0,\"numPassingTests\":9,\"numPendingTests\":0,\"numTodoTests\":0,\"openHandles\":[],\"perfStats\":{\"end\":1615204314380,\"runtime\":2173,\"slow\":false,\"start\":1615204312207},\"skipped\":false,\"snapshot\":{\"added\":0,\"fileDeleted\":false,\"matched\":0,\"unchecked\":0,\"unmatched\":0,\"updated\":0,\"uncheckedKeys\":[]},\"testFilePath\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\tests\\\\tourist-id.test.js\",\"testResults\":[{\"ancestorTitles\":[\"GET /tourists/:touristsId\"],\"duration\":9,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"GET /tourists/:touristsId requires Authorization - 401\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"requires Authorization - 401\"},{\"ancestorTitles\":[\"GET /tourists/:touristsId\"],\"duration\":19,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"GET /tourists/:touristsId with Authorization - 200\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"with Authorization - 200\"},{\"ancestorTitles\":[\"GET /tourists/:touristsId\"],\"duration\":13,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"GET /tourists/:touristsId invalid tourists id - 404\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"invalid tourists id - 404\"},{\"ancestorTitles\":[\"POST /tourists/:touristsId\"],\"duration\":8,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"POST /tourists/:touristsId does not support - 403\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"does not support - 403\"},{\"ancestorTitles\":[\"PUT /tourists/:touristId\"],\"duration\":9,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"PUT /tourists/:touristId requires Authorization - 401\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"requires Authorization - 401\"},{\"ancestorTitles\":[\"PUT /tourists/:touristId\"],\"duration\":16,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"PUT /tourists/:touristId Invalid Id - 404\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"Invalid Id - 404\"},{\"ancestorTitles\":[\"PUT /tourists/:touristId\"],\"duration\":26,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"PUT /tourists/:touristId with Authorization - 200\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"with Authorization - 200\"},{\"ancestorTitles\":[\"DELETE /tourists/:touristeId\"],\"duration\":9,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"DELETE /tourists/:touristeId requires Authorization - 401\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"requires Authorization - 401\"},{\"ancestorTitles\":[\"DELETE /tourists/:touristeId\"],\"duration\":20,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"DELETE /tourists/:touristeId with Authorization - 200\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"with Authorization - 200\"}],\"failureMessage\":null,\"v8Coverage\":[{\"codeTransformResult\":{\"code\":\"var createError = require('http-errors');\\n\\nvar express = require('express');\\n\\nconst cors = require('cors');\\n\\nvar path = require('path');\\n\\nconst bodyParser = require('body-parser');\\n\\nconst expressValidator = require('express-validator');\\n\\nvar session = require('express-session');\\n\\nvar FileStore = require('session-file-store')(session);\\n\\nvar cookieParser = require('cookie-parser');\\n\\nvar logger = require('morgan');\\n\\nvar passport = require('passport');\\n\\nconst mongoose = require('mongoose');\\n\\nrequire('dotenv').config();\\n\\nvar userRouter = require('./routes/userRouter');\\n\\nvar employeeRouter = require('./routes/employeeRouter');\\n\\nvar placeRouter = require('./routes/placeRouter');\\n\\nvar scheduleRouter = require('./routes/scheduleRouter');\\n\\nvar touristRouter = require('./routes/touristRouter');\\n\\nvar dashboardRouter = require('./routes/dashboardRouter');\\n\\nvar app = express(); // view engine setup\\n\\napp.set('views', path.join(__dirname, 'views'));\\napp.set('view engine', 'jade');\\napp.use(cors());\\napp.use(passport.initialize());\\napp.use(bodyParser.json());\\napp.use(cookieParser('the-immortal-coils')); // app.use(logger('dev'));\\n\\napp.use(express.json());\\napp.use(express.urlencoded({\\n extended: false\\n}));\\napp.use(cookieParser()); // app.use(express.static('build'));\\n\\napp.use(express.static(path.join(__dirname, 'build')));\\nvar url = process.env.mongoUrl;\\n\\nif (process.env.NODE_ENV === 'test') {\\n url = process.env.testMongoUrl;\\n}\\n\\nmongoose.connect(url, {\\n useNewUrlParser: true,\\n useCreateIndex: true,\\n useUnifiedTopology: true\\n}).then(db => {}, err => {\\n if (err) {\\n console.log('👺 Error connecting to MongoDB');\\n } else {\\n console.log('✅ Connected to MongoDB');\\n }\\n});\\napp.use('/users', userRouter);\\napp.use('/employees', employeeRouter);\\napp.use('/places', placeRouter);\\napp.use('/schedules', scheduleRouter);\\napp.use('/tourists', touristRouter);\\napp.use('/dashboard', dashboardRouter); // catch 404 and forward to error handler\\n\\napp.use(function (req, res, next) {\\n next(createError(404));\\n}); // error handler\\n\\napp.use(function (err, req, res, next) {\\n // set locals, only providing error in development\\n res.locals.message = err.message;\\n res.locals.error = req.app.get('env') === 'development' ? err : {}; // render the error page\\n\\n res.status(err.status || 500);\\n res.render('error');\\n});\\nmodule.exports = app;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC5qcyJdLCJuYW1lcyI6WyJjcmVhdGVFcnJvciIsInJlcXVpcmUiLCJleHByZXNzIiwiY29ycyIsInBhdGgiLCJib2R5UGFyc2VyIiwiZXhwcmVzc1ZhbGlkYXRvciIsInNlc3Npb24iLCJGaWxlU3RvcmUiLCJjb29raWVQYXJzZXIiLCJsb2dnZXIiLCJwYXNzcG9ydCIsIm1vbmdvb3NlIiwiY29uZmlnIiwidXNlclJvdXRlciIsImVtcGxveWVlUm91dGVyIiwicGxhY2VSb3V0ZXIiLCJzY2hlZHVsZVJvdXRlciIsInRvdXJpc3RSb3V0ZXIiLCJkYXNoYm9hcmRSb3V0ZXIiLCJhcHAiLCJzZXQiLCJqb2luIiwiX19kaXJuYW1lIiwidXNlIiwiaW5pdGlhbGl6ZSIsImpzb24iLCJ1cmxlbmNvZGVkIiwiZXh0ZW5kZWQiLCJzdGF0aWMiLCJ1cmwiLCJwcm9jZXNzIiwiZW52IiwibW9uZ29VcmwiLCJOT0RFX0VOViIsInRlc3RNb25nb1VybCIsImNvbm5lY3QiLCJ1c2VOZXdVcmxQYXJzZXIiLCJ1c2VDcmVhdGVJbmRleCIsInVzZVVuaWZpZWRUb3BvbG9neSIsInRoZW4iLCJkYiIsImVyciIsImNvbnNvbGUiLCJsb2ciLCJyZXEiLCJyZXMiLCJuZXh0IiwibG9jYWxzIiwibWVzc2FnZSIsImVycm9yIiwiZ2V0Iiwic3RhdHVzIiwicmVuZGVyIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsSUFBSUEsV0FBVyxHQUFHQyxPQUFPLENBQUMsYUFBRCxDQUF6Qjs7QUFDQSxJQUFJQyxPQUFPLEdBQUdELE9BQU8sQ0FBQyxTQUFELENBQXJCOztBQUNBLE1BQU1FLElBQUksR0FBR0YsT0FBTyxDQUFDLE1BQUQsQ0FBcEI7O0FBQ0EsSUFBSUcsSUFBSSxHQUFHSCxPQUFPLENBQUMsTUFBRCxDQUFsQjs7QUFDQSxNQUFNSSxVQUFVLEdBQUdKLE9BQU8sQ0FBQyxhQUFELENBQTFCOztBQUNBLE1BQU1LLGdCQUFnQixHQUFHTCxPQUFPLENBQUMsbUJBQUQsQ0FBaEM7O0FBQ0EsSUFBSU0sT0FBTyxHQUFHTixPQUFPLENBQUMsaUJBQUQsQ0FBckI7O0FBQ0EsSUFBSU8sU0FBUyxHQUFHUCxPQUFPLENBQUMsb0JBQUQsQ0FBUCxDQUE4Qk0sT0FBOUIsQ0FBaEI7O0FBQ0EsSUFBSUUsWUFBWSxHQUFHUixPQUFPLENBQUMsZUFBRCxDQUExQjs7QUFDQSxJQUFJUyxNQUFNLEdBQUdULE9BQU8sQ0FBQyxRQUFELENBQXBCOztBQUNBLElBQUlVLFFBQVEsR0FBR1YsT0FBTyxDQUFDLFVBQUQsQ0FBdEI7O0FBQ0EsTUFBTVcsUUFBUSxHQUFHWCxPQUFPLENBQUMsVUFBRCxDQUF4Qjs7QUFDQUEsT0FBTyxDQUFDLFFBQUQsQ0FBUCxDQUFrQlksTUFBbEI7O0FBRUEsSUFBSUMsVUFBVSxHQUFHYixPQUFPLENBQUMscUJBQUQsQ0FBeEI7O0FBQ0EsSUFBSWMsY0FBYyxHQUFHZCxPQUFPLENBQUMseUJBQUQsQ0FBNUI7O0FBQ0EsSUFBSWUsV0FBVyxHQUFHZixPQUFPLENBQUMsc0JBQUQsQ0FBekI7O0FBQ0EsSUFBSWdCLGNBQWMsR0FBR2hCLE9BQU8sQ0FBQyx5QkFBRCxDQUE1Qjs7QUFDQSxJQUFJaUIsYUFBYSxHQUFHakIsT0FBTyxDQUFDLHdCQUFELENBQTNCOztBQUNBLElBQUlrQixlQUFlLEdBQUdsQixPQUFPLENBQUMsMEJBQUQsQ0FBN0I7O0FBRUEsSUFBSW1CLEdBQUcsR0FBR2xCLE9BQU8sRUFBakIsQyxDQUVBOztBQUNBa0IsR0FBRyxDQUFDQyxHQUFKLENBQVEsT0FBUixFQUFpQmpCLElBQUksQ0FBQ2tCLElBQUwsQ0FBVUMsU0FBVixFQUFxQixPQUFyQixDQUFqQjtBQUNBSCxHQUFHLENBQUNDLEdBQUosQ0FBUSxhQUFSLEVBQXVCLE1BQXZCO0FBQ0FELEdBQUcsQ0FBQ0ksR0FBSixDQUFRckIsSUFBSSxFQUFaO0FBQ0FpQixHQUFHLENBQUNJLEdBQUosQ0FBUWIsUUFBUSxDQUFDYyxVQUFULEVBQVI7QUFFQUwsR0FBRyxDQUFDSSxHQUFKLENBQVFuQixVQUFVLENBQUNxQixJQUFYLEVBQVI7QUFFQU4sR0FBRyxDQUFDSSxHQUFKLENBQVFmLFlBQVksQ0FBQyxvQkFBRCxDQUFwQixFLENBQ0E7O0FBQ0FXLEdBQUcsQ0FBQ0ksR0FBSixDQUFRdEIsT0FBTyxDQUFDd0IsSUFBUixFQUFSO0FBQ0FOLEdBQUcsQ0FBQ0ksR0FBSixDQUFRdEIsT0FBTyxDQUFDeUIsVUFBUixDQUFtQjtBQUFFQyxFQUFBQSxRQUFRLEVBQUU7QUFBWixDQUFuQixDQUFSO0FBQ0FSLEdBQUcsQ0FBQ0ksR0FBSixDQUFRZixZQUFZLEVBQXBCLEUsQ0FDQTs7QUFDQVcsR0FBRyxDQUFDSSxHQUFKLENBQVF0QixPQUFPLENBQUMyQixNQUFSLENBQWV6QixJQUFJLENBQUNrQixJQUFMLENBQVVDLFNBQVYsRUFBcUIsT0FBckIsQ0FBZixDQUFSO0FBRUEsSUFBSU8sR0FBRyxHQUFHQyxPQUFPLENBQUNDLEdBQVIsQ0FBWUMsUUFBdEI7O0FBQ0EsSUFBSUYsT0FBTyxDQUFDQyxHQUFSLENBQVlFLFFBQVosS0FBeUIsTUFBN0IsRUFBcUM7QUFDbkNKLEVBQUFBLEdBQUcsR0FBR0MsT0FBTyxDQUFDQyxHQUFSLENBQVlHLFlBQWxCO0FBQ0Q7O0FBQ0R2QixRQUFRLENBQUN3QixPQUFULENBQWlCTixHQUFqQixFQUFzQjtBQUFFTyxFQUFBQSxlQUFlLEVBQUUsSUFBbkI7QUFBeUJDLEVBQUFBLGNBQWMsRUFBRSxJQUF6QztBQUErQ0MsRUFBQUEsa0JBQWtCLEVBQUU7QUFBbkUsQ0FBdEIsRUFBaUdDLElBQWpHLENBQXVHQyxFQUFELElBQVEsQ0FDN0csQ0FERCxFQUNJQyxHQUFELElBQVM7QUFDVixNQUFJQSxHQUFKLEVBQVM7QUFDUEMsSUFBQUEsT0FBTyxDQUFDQyxHQUFSLENBQVksaUNBQVo7QUFDRCxHQUZELE1BRU87QUFDTEQsSUFBQUEsT0FBTyxDQUFDQyxHQUFSLENBQVkseUJBQVo7QUFDRDtBQUNGLENBUEQ7QUFTQXhCLEdBQUcsQ0FBQ0ksR0FBSixDQUFRLFFBQVIsRUFBa0JWLFVBQWxCO0FBQ0FNLEdBQUcsQ0FBQ0ksR0FBSixDQUFRLFlBQVIsRUFBc0JULGNBQXRCO0FBQ0FLLEdBQUcsQ0FBQ0ksR0FBSixDQUFRLFNBQVIsRUFBbUJSLFdBQW5CO0FBQ0FJLEdBQUcsQ0FBQ0ksR0FBSixDQUFRLFlBQVIsRUFBc0JQLGNBQXRCO0FBQ0FHLEdBQUcsQ0FBQ0ksR0FBSixDQUFRLFdBQVIsRUFBcUJOLGFBQXJCO0FBQ0FFLEdBQUcsQ0FBQ0ksR0FBSixDQUFRLFlBQVIsRUFBc0JMLGVBQXRCLEUsQ0FFQTs7QUFDQUMsR0FBRyxDQUFDSSxHQUFKLENBQVEsVUFBVXFCLEdBQVYsRUFBZUMsR0FBZixFQUFvQkMsSUFBcEIsRUFBMEI7QUFDaENBLEVBQUFBLElBQUksQ0FBQy9DLFdBQVcsQ0FBQyxHQUFELENBQVosQ0FBSjtBQUNELENBRkQsRSxDQUlBOztBQUNBb0IsR0FBRyxDQUFDSSxHQUFKLENBQVEsVUFBVWtCLEdBQVYsRUFBZUcsR0FBZixFQUFvQkMsR0FBcEIsRUFBeUJDLElBQXpCLEVBQStCO0FBQ3JDO0FBQ0FELEVBQUFBLEdBQUcsQ0FBQ0UsTUFBSixDQUFXQyxPQUFYLEdBQXFCUCxHQUFHLENBQUNPLE9BQXpCO0FBQ0FILEVBQUFBLEdBQUcsQ0FBQ0UsTUFBSixDQUFXRSxLQUFYLEdBQW1CTCxHQUFHLENBQUN6QixHQUFKLENBQVErQixHQUFSLENBQVksS0FBWixNQUF1QixhQUF2QixHQUF1Q1QsR0FBdkMsR0FBNkMsRUFBaEUsQ0FIcUMsQ0FLckM7O0FBQ0FJLEVBQUFBLEdBQUcsQ0FBQ00sTUFBSixDQUFXVixHQUFHLENBQUNVLE1BQUosSUFBYyxHQUF6QjtBQUNBTixFQUFBQSxHQUFHLENBQUNPLE1BQUosQ0FBVyxPQUFYO0FBQ0QsQ0FSRDtBQVVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUJuQyxHQUFqQiIsInNvdXJjZXNDb250ZW50IjpbInZhciBjcmVhdGVFcnJvciA9IHJlcXVpcmUoJ2h0dHAtZXJyb3JzJyk7XHJcbnZhciBleHByZXNzID0gcmVxdWlyZSgnZXhwcmVzcycpO1xyXG5jb25zdCBjb3JzID0gcmVxdWlyZSgnY29ycycpO1xyXG52YXIgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcclxuY29uc3QgYm9keVBhcnNlciA9IHJlcXVpcmUoJ2JvZHktcGFyc2VyJylcclxuY29uc3QgZXhwcmVzc1ZhbGlkYXRvciA9IHJlcXVpcmUoJ2V4cHJlc3MtdmFsaWRhdG9yJylcclxudmFyIHNlc3Npb24gPSByZXF1aXJlKCdleHByZXNzLXNlc3Npb24nKTtcclxudmFyIEZpbGVTdG9yZSA9IHJlcXVpcmUoJ3Nlc3Npb24tZmlsZS1zdG9yZScpKHNlc3Npb24pO1xyXG52YXIgY29va2llUGFyc2VyID0gcmVxdWlyZSgnY29va2llLXBhcnNlcicpO1xyXG52YXIgbG9nZ2VyID0gcmVxdWlyZSgnbW9yZ2FuJyk7XHJcbnZhciBwYXNzcG9ydCA9IHJlcXVpcmUoJ3Bhc3Nwb3J0Jyk7XHJcbmNvbnN0IG1vbmdvb3NlID0gcmVxdWlyZSgnbW9uZ29vc2UnKTtcclxucmVxdWlyZSgnZG90ZW52JykuY29uZmlnKClcclxuXHJcbnZhciB1c2VyUm91dGVyID0gcmVxdWlyZSgnLi9yb3V0ZXMvdXNlclJvdXRlcicpO1xyXG52YXIgZW1wbG95ZWVSb3V0ZXIgPSByZXF1aXJlKCcuL3JvdXRlcy9lbXBsb3llZVJvdXRlcicpO1xyXG52YXIgcGxhY2VSb3V0ZXIgPSByZXF1aXJlKCcuL3JvdXRlcy9wbGFjZVJvdXRlcicpO1xyXG52YXIgc2NoZWR1bGVSb3V0ZXIgPSByZXF1aXJlKCcuL3JvdXRlcy9zY2hlZHVsZVJvdXRlcicpO1xyXG52YXIgdG91cmlzdFJvdXRlciA9IHJlcXVpcmUoJy4vcm91dGVzL3RvdXJpc3RSb3V0ZXInKTtcclxudmFyIGRhc2hib2FyZFJvdXRlciA9IHJlcXVpcmUoJy4vcm91dGVzL2Rhc2hib2FyZFJvdXRlcicpO1xyXG5cclxudmFyIGFwcCA9IGV4cHJlc3MoKTtcclxuXHJcbi8vIHZpZXcgZW5naW5lIHNldHVwXHJcbmFwcC5zZXQoJ3ZpZXdzJywgcGF0aC5qb2luKF9fZGlybmFtZSwgJ3ZpZXdzJykpO1xyXG5hcHAuc2V0KCd2aWV3IGVuZ2luZScsICdqYWRlJyk7XHJcbmFwcC51c2UoY29ycygpKTtcclxuYXBwLnVzZShwYXNzcG9ydC5pbml0aWFsaXplKCkpO1xyXG5cclxuYXBwLnVzZShib2R5UGFyc2VyLmpzb24oKSk7XHJcblxyXG5hcHAudXNlKGNvb2tpZVBhcnNlcigndGhlLWltbW9ydGFsLWNvaWxzJykpO1xyXG4vLyBhcHAudXNlKGxvZ2dlcignZGV2JykpO1xyXG5hcHAudXNlKGV4cHJlc3MuanNvbigpKTtcclxuYXBwLnVzZShleHByZXNzLnVybGVuY29kZWQoeyBleHRlbmRlZDogZmFsc2UgfSkpO1xyXG5hcHAudXNlKGNvb2tpZVBhcnNlcigpKTtcclxuLy8gYXBwLnVzZShleHByZXNzLnN0YXRpYygnYnVpbGQnKSk7XHJcbmFwcC51c2UoZXhwcmVzcy5zdGF0aWMocGF0aC5qb2luKF9fZGlybmFtZSwgJ2J1aWxkJykpKTtcclxuXHJcbnZhciB1cmwgPSBwcm9jZXNzLmVudi5tb25nb1VybDtcclxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAndGVzdCcpIHtcclxuICB1cmwgPSBwcm9jZXNzLmVudi50ZXN0TW9uZ29Vcmw7XHJcbn1cclxubW9uZ29vc2UuY29ubmVjdCh1cmwsIHsgdXNlTmV3VXJsUGFyc2VyOiB0cnVlLCB1c2VDcmVhdGVJbmRleDogdHJ1ZSwgdXNlVW5pZmllZFRvcG9sb2d5OiB0cnVlIH0pLnRoZW4oKGRiKSA9PiB7XHJcbn0sIChlcnIpID0+IHtcclxuICBpZiAoZXJyKSB7XHJcbiAgICBjb25zb2xlLmxvZygn8J+RuiAgRXJyb3IgY29ubmVjdGluZyB0byBNb25nb0RCJyk7XHJcbiAgfSBlbHNlIHtcclxuICAgIGNvbnNvbGUubG9nKCfinIUgIENvbm5lY3RlZCB0byBNb25nb0RCJyk7XHJcbiAgfVxyXG59KTtcclxuXHJcbmFwcC51c2UoJy91c2VycycsIHVzZXJSb3V0ZXIpO1xyXG5hcHAudXNlKCcvZW1wbG95ZWVzJywgZW1wbG95ZWVSb3V0ZXIpO1xyXG5hcHAudXNlKCcvcGxhY2VzJywgcGxhY2VSb3V0ZXIpO1xyXG5hcHAudXNlKCcvc2NoZWR1bGVzJywgc2NoZWR1bGVSb3V0ZXIpO1xyXG5hcHAudXNlKCcvdG91cmlzdHMnLCB0b3VyaXN0Um91dGVyKTtcclxuYXBwLnVzZSgnL2Rhc2hib2FyZCcsIGRhc2hib2FyZFJvdXRlcik7XHJcblxyXG4vLyBjYXRjaCA0MDQgYW5kIGZvcndhcmQgdG8gZXJyb3IgaGFuZGxlclxyXG5hcHAudXNlKGZ1bmN0aW9uIChyZXEsIHJlcywgbmV4dCkge1xyXG4gIG5leHQoY3JlYXRlRXJyb3IoNDA0KSk7XHJcbn0pO1xyXG5cclxuLy8gZXJyb3IgaGFuZGxlclxyXG5hcHAudXNlKGZ1bmN0aW9uIChlcnIsIHJlcSwgcmVzLCBuZXh0KSB7XHJcbiAgLy8gc2V0IGxvY2Fscywgb25seSBwcm92aWRpbmcgZXJyb3IgaW4gZGV2ZWxvcG1lbnRcclxuICByZXMubG9jYWxzLm1lc3NhZ2UgPSBlcnIubWVzc2FnZTtcclxuICByZXMubG9jYWxzLmVycm9yID0gcmVxLmFwcC5nZXQoJ2VudicpID09PSAnZGV2ZWxvcG1lbnQnID8gZXJyIDoge307XHJcblxyXG4gIC8vIHJlbmRlciB0aGUgZXJyb3IgcGFnZVxyXG4gIHJlcy5zdGF0dXMoZXJyLnN0YXR1cyB8fCA1MDApO1xyXG4gIHJlcy5yZW5kZXIoJ2Vycm9yJyk7XHJcbn0pO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBhcHA7XHJcbiJdfQ==\",\"originalCode\":\"var createError = require('http-errors');\\r\\nvar express = require('express');\\r\\nconst cors = require('cors');\\r\\nvar path = require('path');\\r\\nconst bodyParser = require('body-parser')\\r\\nconst expressValidator = require('express-validator')\\r\\nvar session = require('express-session');\\r\\nvar FileStore = require('session-file-store')(session);\\r\\nvar cookieParser = require('cookie-parser');\\r\\nvar logger = require('morgan');\\r\\nvar passport = require('passport');\\r\\nconst mongoose = require('mongoose');\\r\\nrequire('dotenv').config()\\r\\n\\r\\nvar userRouter = require('./routes/userRouter');\\r\\nvar employeeRouter = require('./routes/employeeRouter');\\r\\nvar placeRouter = require('./routes/placeRouter');\\r\\nvar scheduleRouter = require('./routes/scheduleRouter');\\r\\nvar touristRouter = require('./routes/touristRouter');\\r\\nvar dashboardRouter = require('./routes/dashboardRouter');\\r\\n\\r\\nvar app = express();\\r\\n\\r\\n// view engine setup\\r\\napp.set('views', path.join(__dirname, 'views'));\\r\\napp.set('view engine', 'jade');\\r\\napp.use(cors());\\r\\napp.use(passport.initialize());\\r\\n\\r\\napp.use(bodyParser.json());\\r\\n\\r\\napp.use(cookieParser('the-immortal-coils'));\\r\\n// app.use(logger('dev'));\\r\\napp.use(express.json());\\r\\napp.use(express.urlencoded({ extended: false }));\\r\\napp.use(cookieParser());\\r\\n// app.use(express.static('build'));\\r\\napp.use(express.static(path.join(__dirname, 'build')));\\r\\n\\r\\nvar url = process.env.mongoUrl;\\r\\nif (process.env.NODE_ENV === 'test') {\\r\\n url = process.env.testMongoUrl;\\r\\n}\\r\\nmongoose.connect(url, { useNewUrlParser: true, useCreateIndex: true, useUnifiedTopology: true }).then((db) => {\\r\\n}, (err) => {\\r\\n if (err) {\\r\\n console.log('👺 Error connecting to MongoDB');\\r\\n } else {\\r\\n console.log('✅ Connected to MongoDB');\\r\\n }\\r\\n});\\r\\n\\r\\napp.use('/users', userRouter);\\r\\napp.use('/employees', employeeRouter);\\r\\napp.use('/places', placeRouter);\\r\\napp.use('/schedules', scheduleRouter);\\r\\napp.use('/tourists', touristRouter);\\r\\napp.use('/dashboard', dashboardRouter);\\r\\n\\r\\n// catch 404 and forward to error handler\\r\\napp.use(function (req, res, next) {\\r\\n next(createError(404));\\r\\n});\\r\\n\\r\\n// error handler\\r\\napp.use(function (err, req, res, next) {\\r\\n // set locals, only providing error in development\\r\\n res.locals.message = err.message;\\r\\n res.locals.error = req.app.get('env') === 'development' ? err : {};\\r\\n\\r\\n // render the error page\\r\\n res.status(err.status || 500);\\r\\n res.render('error');\\r\\n});\\r\\n\\r\\nmodule.exports = app;\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/01/app_010e21b7416079df77678cc6cb70a530.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"1596\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\app.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":10626,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":10623,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1632,\"endOffset\":1640,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1642,\"endOffset\":1776,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":2049,\"endOffset\":2104,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":2133,\"endOffset\":2408,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"var express = require('express');\\n\\nvar userRouter = express.Router();\\n\\nconst bodyParser = require('body-parser');\\n\\nvar upload = require('../controllers/upload');\\n\\nconst {\\n checkSchema\\n} = require('express-validator');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nvar validationRules = require('../middleware/validation');\\n\\nvar userController = require('../controllers/userController');\\n\\nconst cors = require('./cors');\\n\\nuserRouter.use(bodyParser.json());\\nuserRouter.options('*', cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n});\\nuserRouter.post('/signup/admin', cors.corsWithOptions, userController.signupAdmin);\\nuserRouter.post('/login', cors.corsWithOptions, userController.login);\\nuserRouter.post('/changepassoword/:id', authenticate.verifyUser, userController.changePassoword);\\nuserRouter.post(\\\"/updateprofilepicture/:id\\\", authenticate.verifyUser, upload.UploadUserImage);\\nuserRouter.get('/logout', authenticate.verifyUser, userController.logout);\\nmodule.exports = userRouter;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVzZXJSb3V0ZXIuanMiXSwibmFtZXMiOlsiZXhwcmVzcyIsInJlcXVpcmUiLCJ1c2VyUm91dGVyIiwiUm91dGVyIiwiYm9keVBhcnNlciIsInVwbG9hZCIsImNoZWNrU2NoZW1hIiwiYXV0aGVudGljYXRlIiwidmFsaWRhdGlvblJ1bGVzIiwidXNlckNvbnRyb2xsZXIiLCJjb3JzIiwidXNlIiwianNvbiIsIm9wdGlvbnMiLCJjb3JzV2l0aE9wdGlvbnMiLCJyZXEiLCJyZXMiLCJzZW5kU3RhdHVzIiwicG9zdCIsInNpZ251cEFkbWluIiwibG9naW4iLCJ2ZXJpZnlVc2VyIiwiY2hhbmdlUGFzc293b3JkIiwiVXBsb2FkVXNlckltYWdlIiwiZ2V0IiwibG9nb3V0IiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsSUFBSUEsT0FBTyxHQUFHQyxPQUFPLENBQUMsU0FBRCxDQUFyQjs7QUFDQSxJQUFJQyxVQUFVLEdBQUdGLE9BQU8sQ0FBQ0csTUFBUixFQUFqQjs7QUFFQSxNQUFNQyxVQUFVLEdBQUdILE9BQU8sQ0FBQyxhQUFELENBQTFCOztBQUNBLElBQUlJLE1BQU0sR0FBR0osT0FBTyxDQUFDLHVCQUFELENBQXBCOztBQUNBLE1BQU07QUFBRUssRUFBQUE7QUFBRixJQUFrQkwsT0FBTyxDQUFDLG1CQUFELENBQS9COztBQUNBLElBQUlNLFlBQVksR0FBR04sT0FBTyxDQUFDLDRCQUFELENBQTFCOztBQUNBLElBQUlPLGVBQWUsR0FBR1AsT0FBTyxDQUFDLDBCQUFELENBQTdCOztBQUNBLElBQUlRLGNBQWMsR0FBR1IsT0FBTyxDQUFDLCtCQUFELENBQTVCOztBQUNBLE1BQU1TLElBQUksR0FBR1QsT0FBTyxDQUFDLFFBQUQsQ0FBcEI7O0FBRUFDLFVBQVUsQ0FBQ1MsR0FBWCxDQUFlUCxVQUFVLENBQUNRLElBQVgsRUFBZjtBQUVBVixVQUFVLENBQUNXLE9BQVgsQ0FBbUIsR0FBbkIsRUFBd0JILElBQUksQ0FBQ0ksZUFBN0IsRUFBOEMsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEtBQWM7QUFBRUEsRUFBQUEsR0FBRyxDQUFDQyxVQUFKLENBQWUsR0FBZjtBQUFzQixDQUFwRjtBQUVBZixVQUFVLENBQUNnQixJQUFYLENBQWdCLGVBQWhCLEVBQWlDUixJQUFJLENBQUNJLGVBQXRDLEVBQXVETCxjQUFjLENBQUNVLFdBQXRFO0FBRUFqQixVQUFVLENBQUNnQixJQUFYLENBQWdCLFFBQWhCLEVBQTBCUixJQUFJLENBQUNJLGVBQS9CLEVBQWdETCxjQUFjLENBQUNXLEtBQS9EO0FBRUFsQixVQUFVLENBQUNnQixJQUFYLENBQWdCLHNCQUFoQixFQUF1Q1gsWUFBWSxDQUFDYyxVQUFwRCxFQUFnRVosY0FBYyxDQUFDYSxlQUEvRTtBQUVBcEIsVUFBVSxDQUFDZ0IsSUFBWCxDQUFnQiwyQkFBaEIsRUFBNENYLFlBQVksQ0FBQ2MsVUFBekQsRUFBcUVoQixNQUFNLENBQUNrQixlQUE1RTtBQUVBckIsVUFBVSxDQUFDc0IsR0FBWCxDQUFlLFNBQWYsRUFBeUJqQixZQUFZLENBQUNjLFVBQXRDLEVBQWtEWixjQUFjLENBQUNnQixNQUFqRTtBQUVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUJ6QixVQUFqQiIsInNvdXJjZXNDb250ZW50IjpbInZhciBleHByZXNzID0gcmVxdWlyZSgnZXhwcmVzcycpO1xyXG52YXIgdXNlclJvdXRlciA9IGV4cHJlc3MuUm91dGVyKCk7XHJcblxyXG5jb25zdCBib2R5UGFyc2VyID0gcmVxdWlyZSgnYm9keS1wYXJzZXInKTtcclxudmFyIHVwbG9hZCA9IHJlcXVpcmUoJy4uL2NvbnRyb2xsZXJzL3VwbG9hZCcpO1xyXG5jb25zdCB7IGNoZWNrU2NoZW1hIH0gPSByZXF1aXJlKCdleHByZXNzLXZhbGlkYXRvcicpO1xyXG52YXIgYXV0aGVudGljYXRlID0gcmVxdWlyZSgnLi4vbWlkZGxld2FyZS9hdXRoZW50aWNhdGUnKTtcclxudmFyIHZhbGlkYXRpb25SdWxlcyA9IHJlcXVpcmUoJy4uL21pZGRsZXdhcmUvdmFsaWRhdGlvbicpO1xyXG52YXIgdXNlckNvbnRyb2xsZXIgPSByZXF1aXJlKCcuLi9jb250cm9sbGVycy91c2VyQ29udHJvbGxlcicpO1xyXG5jb25zdCBjb3JzID0gcmVxdWlyZSgnLi9jb3JzJyk7XHJcblxyXG51c2VyUm91dGVyLnVzZShib2R5UGFyc2VyLmpzb24oKSk7XHJcblxyXG51c2VyUm91dGVyLm9wdGlvbnMoJyonLCBjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcblxyXG51c2VyUm91dGVyLnBvc3QoJy9zaWdudXAvYWRtaW4nLCBjb3JzLmNvcnNXaXRoT3B0aW9ucywgdXNlckNvbnRyb2xsZXIuc2lnbnVwQWRtaW4pO1xyXG5cclxudXNlclJvdXRlci5wb3N0KCcvbG9naW4nLCBjb3JzLmNvcnNXaXRoT3B0aW9ucywgdXNlckNvbnRyb2xsZXIubG9naW4pO1xyXG5cclxudXNlclJvdXRlci5wb3N0KCcvY2hhbmdlcGFzc293b3JkLzppZCcsYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIHVzZXJDb250cm9sbGVyLmNoYW5nZVBhc3Nvd29yZCk7XHJcblxyXG51c2VyUm91dGVyLnBvc3QoXCIvdXBkYXRlcHJvZmlsZXBpY3R1cmUvOmlkXCIsYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIHVwbG9hZC5VcGxvYWRVc2VySW1hZ2UpO1xyXG5cclxudXNlclJvdXRlci5nZXQoJy9sb2dvdXQnLGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCB1c2VyQ29udHJvbGxlci5sb2dvdXQpO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSB1c2VyUm91dGVyO1xyXG4iXX0=\",\"originalCode\":\"var express = require('express');\\r\\nvar userRouter = express.Router();\\r\\n\\r\\nconst bodyParser = require('body-parser');\\r\\nvar upload = require('../controllers/upload');\\r\\nconst { checkSchema } = require('express-validator');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\nvar validationRules = require('../middleware/validation');\\r\\nvar userController = require('../controllers/userController');\\r\\nconst cors = require('./cors');\\r\\n\\r\\nuserRouter.use(bodyParser.json());\\r\\n\\r\\nuserRouter.options('*', cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n\\r\\nuserRouter.post('/signup/admin', cors.corsWithOptions, userController.signupAdmin);\\r\\n\\r\\nuserRouter.post('/login', cors.corsWithOptions, userController.login);\\r\\n\\r\\nuserRouter.post('/changepassoword/:id',authenticate.verifyUser, userController.changePassoword);\\r\\n\\r\\nuserRouter.post(\\\"/updateprofilepicture/:id\\\",authenticate.verifyUser, upload.UploadUserImage);\\r\\n\\r\\nuserRouter.get('/logout',authenticate.verifyUser, userController.logout);\\r\\n\\r\\nmodule.exports = userRouter;\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/a6/userRouter_a6221ff3be20743fe1c0fd1dc9fd8435.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2377\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\userRouter.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":4566,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":4563,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":606,\"endOffset\":646,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const sharp = require('sharp');\\n\\nconst uid = require('uid');\\n\\nconst fs = require('fs');\\n\\nconst Users = require('../models/users');\\n\\nconst Places = require('../models/visitingPlaces');\\n\\nconst uploadFile = async (req, res) => {\\n try {\\n await upload(req, res);\\n\\n if (req.file == undefined) {\\n return res.send(`You must select a file.`);\\n }\\n\\n return res.send(`File has been uploaded.`);\\n } catch (error) {\\n return res.send(`Error when trying upload image: ${error}`);\\n }\\n};\\n\\nconst UploadUserImage = async (req, res, next) => {\\n try {\\n const user_id = req.params._id;\\n const user = await Users.findById(user_id);\\n console.log(req);\\n let imageUrl;\\n\\n if (req.file) {\\n imageUrl = `${uid()}__${req.file.originalname}`;\\n let filename = `images/userImages/${imageUrl}`;\\n let previousImagePath = `images/userImages/${user.image}`;\\n const imageExist = fs.existsSync(previousImagePath);\\n\\n if (imageExist) {\\n deleteImage(previousImagePath);\\n }\\n\\n await sharp(req.file.path).rotate().resize(500, 500).toFile(filename);\\n fs.unlink(req.file.path, err => {\\n if (err) {}\\n });\\n } else {\\n imageUrl = 'profile.png';\\n }\\n\\n user.image = imageUrl;\\n await user.save();\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n message: 'Successfully updated profile picture'\\n });\\n } catch (err) {\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Error while updating profile picture'\\n });\\n }\\n};\\n\\nconst uploadPlaceImage = async (req, res, next) => {\\n try {\\n const place_id = req.params._id;\\n const place = await Places.findById(place_id);\\n let imageUrl;\\n\\n if (req.file) {\\n imageUrl = `${uid()}__${req.file.originalname}`;\\n let filename = `images/placeImages/${imageUrl}`;\\n let previousImagePath = `images/placeImages/${place.image}`;\\n const imageExist = fs.existsSync(previousImagePath);\\n\\n if (imageExist) {\\n deleteImage(previousImagePath);\\n }\\n\\n await sharp(req.file.path).rotate().resize(500, 500).toFile(filename);\\n fs.unlink(req.file.path, err => {\\n if (err) {}\\n });\\n } else {\\n imageUrl = 'image.png';\\n }\\n\\n place.image = imageUrl;\\n await place.save();\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n message: 'Successfully updated profile picture'\\n });\\n } catch (err) {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Error while updating profile picture'\\n });\\n }\\n};\\n\\nexports.UploadUserImage = UploadUserImage;\\nexports.uploadFile = uploadFile;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVwbG9hZC5qcyJdLCJuYW1lcyI6WyJzaGFycCIsInJlcXVpcmUiLCJ1aWQiLCJmcyIsIlVzZXJzIiwiUGxhY2VzIiwidXBsb2FkRmlsZSIsInJlcSIsInJlcyIsInVwbG9hZCIsImZpbGUiLCJ1bmRlZmluZWQiLCJzZW5kIiwiZXJyb3IiLCJVcGxvYWRVc2VySW1hZ2UiLCJuZXh0IiwidXNlcl9pZCIsInBhcmFtcyIsIl9pZCIsInVzZXIiLCJmaW5kQnlJZCIsImNvbnNvbGUiLCJsb2ciLCJpbWFnZVVybCIsIm9yaWdpbmFsbmFtZSIsImZpbGVuYW1lIiwicHJldmlvdXNJbWFnZVBhdGgiLCJpbWFnZSIsImltYWdlRXhpc3QiLCJleGlzdHNTeW5jIiwiZGVsZXRlSW1hZ2UiLCJwYXRoIiwicm90YXRlIiwicmVzaXplIiwidG9GaWxlIiwidW5saW5rIiwiZXJyIiwic2F2ZSIsInN0YXR1c0NvZGUiLCJzZXRIZWFkZXIiLCJqc29uIiwic3VjY2VzcyIsIm1lc3NhZ2UiLCJ1cGxvYWRQbGFjZUltYWdlIiwicGxhY2VfaWQiLCJwbGFjZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLEtBQUssR0FBR0MsT0FBTyxDQUFDLE9BQUQsQ0FBckI7O0FBQ0EsTUFBTUMsR0FBRyxHQUFHRCxPQUFPLENBQUMsS0FBRCxDQUFuQjs7QUFDQSxNQUFNRSxFQUFFLEdBQUdGLE9BQU8sQ0FBQyxJQUFELENBQWxCOztBQUNBLE1BQU1HLEtBQUssR0FBR0gsT0FBTyxDQUFDLGlCQUFELENBQXJCOztBQUNBLE1BQU1JLE1BQU0sR0FBR0osT0FBTyxDQUFDLDBCQUFELENBQXRCOztBQUVBLE1BQU1LLFVBQVUsR0FBRyxPQUFPQyxHQUFQLEVBQVlDLEdBQVosS0FBb0I7QUFDbkMsTUFBSTtBQUNBLFVBQU1DLE1BQU0sQ0FBQ0YsR0FBRCxFQUFNQyxHQUFOLENBQVo7O0FBRUEsUUFBSUQsR0FBRyxDQUFDRyxJQUFKLElBQVlDLFNBQWhCLEVBQTJCO0FBQ3ZCLGFBQU9I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Q0FBQzhCLFVBQUosR0FBaUIsR0FBakI7QUFDQTlCLElBQUFBLEdBQUcsQ0FBQytCLFNBQUosQ0FBYyxjQUFkLEVBQThCLGtCQUE5QjtBQUNBL0IsSUFBQUEsR0FBRyxDQUFDZ0MsSUFBSixDQUFTO0FBQUVDLE1BQUFBLE9BQU8sRUFBRSxLQUFYO0FBQWtCQyxNQUFBQSxPQUFPLEVBQUU7QUFBM0IsS0FBVDtBQUNIO0FBQ0osQ0F6Q0Q7O0FBMkNBSSxPQUFPLENBQUNoQyxlQUFSLEdBQTBCQSxlQUExQjtBQUNBZ0MsT0FBTyxDQUFDeEMsVUFBUixHQUFxQkEsVUFBckIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBzaGFycCA9IHJlcXVpcmUoJ3NoYXJwJyk7XHJcbmNvbnN0IHVpZCA9IHJlcXVpcmUoJ3VpZCcpO1xyXG5jb25zdCBmcyA9IHJlcXVpcmUoJ2ZzJyk7XHJcbmNvbnN0IFVzZXJzID0gcmVxdWlyZSgnLi4vbW9kZWxzL3VzZXJzJyk7XHJcbmNvbnN0IFBsYWNlcyA9IHJlcXVpcmUoJy4uL21vZGVscy92aXNpdGluZ1BsYWNlcycpXHJcblxyXG5jb25zdCB1cGxvYWRGaWxlID0gYXN5bmMgKHJlcSwgcmVzKSA9PiB7XHJcbiAgICB0cnkge1xyXG4gICAgICAgIGF3YWl0IHVwbG9hZChyZXEsIHJlcyk7XHJcblxyXG4gICAgICAgIGlmIChyZXEuZmlsZSA9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlcy5zZW5kKGBZb3UgbXVzdCBzZWxlY3QgYSBmaWxlLmApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHJlcy5zZW5kKGBGaWxlIGhhcyBiZWVuIHVwbG9hZGVkLmApO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICByZXR1cm4gcmVzLnNlbmQoYEVycm9yIHdoZW4gdHJ5aW5nIHVwbG9hZCBpbWFnZTogJHtlcnJvcn1gKTtcclxuICAgIH1cclxufTtcclxuXHJcbmNvbnN0IFVwbG9hZFVzZXJJbWFnZSA9IGFzeW5jIChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgICBjb25zdCB1c2VyX2lkID0gcmVxLnBhcmFtcy5faWQ7XHJcbiAgICAgICAgY29uc3QgdXNlciA9IGF3YWl0IFVzZXJzLmZpbmRCeUlkKHVzZXJfaWQpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKHJlcSk7XHJcblxyXG4gICAgICAgIGxldCBpbWFnZVVybDtcclxuICAgICAgICBpZiAocmVxLmZpbGUpIHtcclxuICAgICAgICAgICAgaW1hZ2VVcmwgPSBgJHt1aWQoKX1fXyR7cmVxLmZpbGUub3JpZ2luYWxuYW1lfWA7XHJcbiAgICAgICAgICAgIGxldCBmaWxlbmFtZSA9IGBpbWFnZXMvdXNlckltYWdlcy8ke2ltYWdlVXJsfWA7XHJcbiAgICAgICAgICAgIGxldCBwcmV2aW91c0ltYWdlUGF0aCA9IGBpbWFnZXMvdXNlckltYWdlcy8ke3VzZXIuaW1hZ2V9YDtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGltYWdlRXhpc3QgPSBmcy5leGlzdHNTeW5jKHByZXZpb3VzSW1hZ2VQYXRoKTtcclxuICAgICAgICAgICAgaWYgKGltYWdlRXhpc3QpIHtcclxuICAgICAgICAgICAgICAgIGRlbGV0ZUltYWdlKHByZXZpb3VzSW1hZ2VQYXRoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBhd2FpdCBzaGFycChyZXEuZmlsZS5wYXRoKVxyXG4gICAgICAgICAgICAgICAgLnJvdGF0ZSgpXHJcbiAgICAgICAgICAgICAgICAucmVzaXplKDUwMCwgNTAwKVxyXG4gICAgICAgICAgICAgICAgLnRvRmlsZShmaWxlbmFtZSk7XHJcblxyXG4gICAgICAgICAgICBmcy51bmxpbmsocmVxLmZpbGUucGF0aCwgKGVycikgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGltYWdlVXJsID0gJ3Byb2ZpbGUucG5nJztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHVzZXIuaW1hZ2UgPSBpbWFnZVVybDtcclxuICAgICAgICBhd2FpdCB1c2VyLnNhdmUoKTtcclxuXHJcblxyXG4gICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCBtZXNzYWdlOiAnU3VjY2Vzc2Z1bGx5IHVwZGF0ZWQgcHJvZmlsZSBwaWN0dXJlJyB9KTtcclxuXHJcbiAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDUwMDtcclxuICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogZmFsc2UsIG1lc3NhZ2U6ICdFcnJvciB3aGlsZSB1cGRhdGluZyBwcm9maWxlIHBpY3R1cmUnIH0pO1xyXG4gICAgfVxyXG59O1xyXG5cclxuY29uc3QgdXBsb2FkUGxhY2VJbWFnZSA9IGFzeW5jIChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgICBjb25zdCBwbGFjZV9pZCA9IHJlcS5wYXJhbXMuX2lkO1xyXG4gICAgICAgIGNvbnN0IHBsYWNlID0gYXdhaXQgUGxhY2VzLmZpbmRCeUlkKHBsYWNlX2lkKTtcclxuXHJcbiAgICAgICAgbGV0IGltYWdlVXJsO1xyXG4gICAgICAgIGlmIChyZXEuZmlsZSkge1xyXG4gICAgICAgICAgICBpbWFnZVVybCA9IGAke3VpZCgpfV9fJHtyZXEuZmlsZS5vcmlnaW5hbG5hbWV9YDtcclxuICAgICAgICAgICAgbGV0IGZpbGVuYW1lID0gYGltYWdlcy9wbGFjZUltYWdlcy8ke2ltYWdlVXJsfWA7XHJcbiAgICAgICAgICAgIGxldCBwcmV2aW91c0ltYWdlUGF0aCA9IGBpbWFnZXMvcGxhY2VJbWFnZXMvJHtwbGFjZS5pbWFnZX1gO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgaW1hZ2VFeGlzdCA9IGZzLmV4aXN0c1N5bmMocHJldmlvdXNJbWFnZVBhdGgpO1xyXG4gICAgICAgICAgICBpZiAoaW1hZ2VFeGlzdCkge1xyXG4gICAgICAgICAgICAgICAgZGVsZXRlSW1hZ2UocHJldmlvdXNJbWFnZVBhdGgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGF3YWl0IHNoYXJwKHJlcS5maWxlLnBhdGgpXHJcbiAgICAgICAgICAgICAgICAucm90YXRlKClcclxuICAgICAgICAgICAgICAgIC5yZXNpemUoNTAwLCA1MDApXHJcbiAgICAgICAgICAgICAgICAudG9GaWxlKGZpbGVuYW1lKTtcclxuXHJcbiAgICAgICAgICAgIGZzLnVubGluayhyZXEuZmlsZS5wYXRoLCAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaW1hZ2VVcmwgPSAnaW1hZ2UucG5nJztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHBsYWNlLmltYWdlID0gaW1hZ2VVcmw7XHJcbiAgICAgICAgYXdhaXQgcGxhY2Uuc2F2ZSgpO1xyXG5cclxuXHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA1MDA7XHJcbiAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIG1lc3NhZ2U6ICdTdWNjZXNzZnVsbHkgdXBkYXRlZCBwcm9maWxlIHBpY3R1cmUnIH0pO1xyXG5cclxuICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogJ0Vycm9yIHdoaWxlIHVwZGF0aW5nIHByb2ZpbGUgcGljdHVyZScgfSk7XHJcbiAgICB9XHJcbn07XHJcblxyXG5leHBvcnRzLlVwbG9hZFVzZXJJbWFnZSA9IFVwbG9hZFVzZXJJbWFnZTtcclxuZXhwb3J0cy51cGxvYWRGaWxlID0gdXBsb2FkRmlsZTsiXX0=\",\"originalCode\":\"const sharp = require('sharp');\\r\\nconst uid = require('uid');\\r\\nconst fs = require('fs');\\r\\nconst Users = require('../models/users');\\r\\nconst Places = require('../models/visitingPlaces')\\r\\n\\r\\nconst uploadFile = async (req, res) => {\\r\\n try {\\r\\n await upload(req, res);\\r\\n\\r\\n if (req.file == undefined) {\\r\\n return res.send(`You must select a file.`);\\r\\n }\\r\\n\\r\\n return res.send(`File has been uploaded.`);\\r\\n } catch (error) {\\r\\n return res.send(`Error when trying upload image: ${error}`);\\r\\n }\\r\\n};\\r\\n\\r\\nconst UploadUserImage = async (req, res, next) => {\\r\\n try {\\r\\n const user_id = req.params._id;\\r\\n const user = await Users.findById(user_id);\\r\\n console.log(req);\\r\\n\\r\\n let imageUrl;\\r\\n if (req.file) {\\r\\n imageUrl = `${uid()}__${req.file.originalname}`;\\r\\n let filename = `images/userImages/${imageUrl}`;\\r\\n let previousImagePath = `images/userImages/${user.image}`;\\r\\n\\r\\n const imageExist = fs.existsSync(previousImagePath);\\r\\n if (imageExist) {\\r\\n deleteImage(previousImagePath);\\r\\n }\\r\\n await sharp(req.file.path)\\r\\n .rotate()\\r\\n .resize(500, 500)\\r\\n .toFile(filename);\\r\\n\\r\\n fs.unlink(req.file.path, (err) => {\\r\\n if (err) {\\r\\n }\\r\\n })\\r\\n } else {\\r\\n imageUrl = 'profile.png';\\r\\n }\\r\\n\\r\\n user.image = imageUrl;\\r\\n await user.save();\\r\\n\\r\\n\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, message: 'Successfully updated profile picture' });\\r\\n\\r\\n } catch (err) {\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Error while updating profile picture' });\\r\\n }\\r\\n};\\r\\n\\r\\nconst uploadPlaceImage = async (req, res, next) => {\\r\\n try {\\r\\n const place_id = req.params._id;\\r\\n const place = await Places.findById(place_id);\\r\\n\\r\\n let imageUrl;\\r\\n if (req.file) {\\r\\n imageUrl = `${uid()}__${req.file.originalname}`;\\r\\n let filename = `images/placeImages/${imageUrl}`;\\r\\n let previousImagePath = `images/placeImages/${place.image}`;\\r\\n\\r\\n const imageExist = fs.existsSync(previousImagePath);\\r\\n if (imageExist) {\\r\\n deleteImage(previousImagePath);\\r\\n }\\r\\n await sharp(req.file.path)\\r\\n .rotate()\\r\\n .resize(500, 500)\\r\\n .toFile(filename);\\r\\n\\r\\n fs.unlink(req.file.path, (err) => {\\r\\n if (err) {\\r\\n }\\r\\n })\\r\\n } else {\\r\\n imageUrl = 'image.png';\\r\\n }\\r\\n\\r\\n place.image = imageUrl;\\r\\n await place.save();\\r\\n\\r\\n\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, message: 'Successfully updated profile picture' });\\r\\n\\r\\n } catch (err) {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Error while updating profile picture' });\\r\\n }\\r\\n};\\r\\n\\r\\nexports.UploadUserImage = UploadUserImage;\\r\\nexports.uploadFile = uploadFile;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/7c/upload_7c4638f764653e4bdd79a0ce3f99ff41.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2378\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\upload.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":12934,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":12931,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"uploadFile\",\"ranges\":[{\"startOffset\":293,\"endOffset\":580,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"UploadUserImage\",\"ranges\":[{\"startOffset\":607,\"endOffset\":1726,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"uploadPlaceImage\",\"ranges\":[{\"startOffset\":1754,\"endOffset\":2858,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"var mongoose = require('mongoose');\\n\\nvar Schema = mongoose.Schema;\\n\\nvar passportLocalMongoose = require('passport-local-mongoose');\\n\\nvar User = new Schema({\\n firstname: {\\n type: String,\\n required: true\\n },\\n lastname: {\\n type: String,\\n required: true\\n },\\n email: {\\n type: String,\\n required: true,\\n unique: true\\n },\\n mobile: {\\n type: String\\n },\\n role: {\\n type: String,\\n default: \\\"user\\\",\\n enum: ['user', 'moderater', 'admin']\\n },\\n image: {\\n type: String\\n },\\n suite: {\\n type: String,\\n enum: ['gold', 'luxury', 'platinum']\\n },\\n rommnumber: {\\n type: String\\n },\\n userstate: {\\n type: String,\\n default: \\\"in\\\",\\n enum: ['in', 'out']\\n }\\n}, {\\n timestamps: true\\n});\\nUser.plugin(passportLocalMongoose);\\nUser.index({\\n '$**': 'text'\\n});\\nvar Users = mongoose.model('User', User);\\nmodule.exports = Users;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVzZXJzLmpzIl0sIm5hbWVzIjpbIm1vbmdvb3NlIiwicmVxdWlyZSIsIlNjaGVtYSIsInBhc3Nwb3J0TG9jYWxNb25nb29zZSIsIlVzZXIiLCJmaXJzdG5hbWUiLCJ0eXBlIiwiU3RyaW5nIiwicmVxdWlyZWQiLCJsYXN0bmFtZSIsImVtYWlsIiwidW5pcXVlIiwibW9iaWxlIiwicm9sZSIsImRlZmF1bHQiLCJlbnVtIiwiaW1hZ2UiLCJzdWl0ZSIsInJvbW1udW1iZXIiLCJ1c2Vyc3RhdGUiLCJ0aW1lc3RhbXBzIiwicGx1Z2luIiwiaW5kZXgiLCJVc2VycyIsIm1vZGVsIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsSUFBSUEsUUFBUSxHQUFHQyxPQUFPLENBQUMsVUFBRCxDQUF0Qjs7QUFDQSxJQUFJQyxNQUFNLEdBQUdGLFFBQVEsQ0FBQ0UsTUFBdEI7O0FBRUEsSUFBSUMscUJBQXFCLEdBQUdGLE9BQU8sQ0FBQyx5QkFBRCxDQUFuQzs7QUFFQSxJQUFJRyxJQUFJLEdBQUcsSUFBSUYsTUFBSixDQUFXO0FBQ2xCRyxFQUFBQSxTQUFTLEVBQUU7QUFDUEMsSUFBQUEsSUFBSSxFQUFFQyxNQURDO0FBRVBDLElBQUFBLFFBQVEsRUFBRTtBQUZILEdBRE87QUFLbEJDLEVBQUFBLFFBQVEsRUFBRTtBQUNOSCxJQUFBQSxJQUFJLEVBQUVDLE1BREE7QUFFTkMsSUFBQUEsUUFBUSxFQUFFO0FBRkosR0FMUTtBQVNsQkUsRUFBQUEsS0FBSyxFQUFFO0FBQ0hKLElBQUFBLElBQUksRUFBRUMsTUFESDtBQUVIQyxJQUFBQSxRQUFRLEVBQUUsSUFGUDtBQUdIRyxJQUFBQSxNQUFNLEVBQUU7QUFITCxHQVRXO0FBY2xCQyxFQUFBQSxNQUFNLEVBQUM7QUFDSE4sSUFBQUEsSUFBSSxFQUFFQztBQURILEdBZFc7QUFpQmxCTSxFQUFBQSxJQUFJLEVBQ0o7QUFDSVAsSUFBQUEsSUFBSSxFQUFFQyxNQURWO0FBRUlPLElBQUFBLE9BQU8sRUFBRSxNQUZiO0FBR0lDLElBQUFBLElBQUksRUFBQyxDQUFDLE1BQUQsRUFBUSxXQUFSLEVBQW9CLE9BQXBCO0FBSFQsR0FsQmtCO0FBdUJsQkMsRUFBQUEsS0FBSyxFQUFFO0FBQ0hWLElBQUFBLElBQUksRUFBRUM7QUFESCxHQXZCVztBQTBCbEJVLEVBQUFBLEtBQUssRUFBQztBQUNGWCxJQUFBQSxJQUFJLEVBQUVDLE1BREo7QUFFRlEsSUFBQUEsSUFBSSxFQUFDLENBQUMsTUFBRCxFQUFRLFFBQVIsRUFBaUIsVUFBakI7QUFGSCxHQTFCWTtBQThCbEJHLEVBQUFBLFVBQVUsRUFBQztBQUNQWixJQUFBQSxJQUFJLEVBQUVDO0FBREMsR0E5Qk87QUFpQ2xCWSxFQUFBQSxTQUFTLEVBQUM7QUFDTmIsSUFBQUEsSUFBSSxFQUFFQyxNQURBO0FBRU5PLElBQUFBLE9BQU8sRUFBRSxJQUZIO0FBR05DLElBQUFBLElBQUksRUFBQyxDQUFDLElBQUQsRUFBTSxLQUFOO0FBSEM7QUFqQ1EsQ0FBWCxFQXNDUjtBQUNDSyxFQUFBQSxVQUFVLEVBQUU7QUFEYixDQXRDUSxDQUFYO0FBMENBaEIsSUFBSSxDQUFDaUIsTUFBTCxDQUFZbEIscUJBQVo7QUFDQUMsSUFBSSxDQUFDa0IsS0FBTCxDQUFXO0FBQUMsU0FBTTtBQUFQLENBQVg7QUFDQSxJQUFJQyxLQUFLLEdBQUd2QixRQUFRLENBQUN3QixLQUFULENBQWUsTUFBZixFQUF1QnBCLElBQXZCLENBQVo7QUFFQXFCLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQkgsS0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgbW9uZ29vc2UgPSByZXF1aXJlKCdtb25nb29zZScpO1xyXG52YXIgU2NoZW1hID0gbW9uZ29vc2UuU2NoZW1hO1xyXG5cclxudmFyIHBhc3Nwb3J0TG9jYWxNb25nb29zZSA9IHJlcXVpcmUoJ3Bhc3Nwb3J0LWxvY2FsLW1vbmdvb3NlJyk7XHJcblxyXG52YXIgVXNlciA9IG5ldyBTY2hlbWEoe1xyXG4gICAgZmlyc3RuYW1lOiB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlXHJcbiAgICB9LFxyXG4gICAgbGFzdG5hbWU6IHtcclxuICAgICAgICB0eXBlOiBTdHJpbmcsXHJcbiAgICAgICAgcmVxdWlyZWQ6IHRydWVcclxuICAgIH0sXHJcbiAgICBlbWFpbDoge1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgICB1bmlxdWU6IHRydWVcclxuICAgIH0sXHJcbiAgICBtb2JpbGU6e1xyXG4gICAgICAgIHR5cGU6IFN0cmluZ1xyXG4gICAgfSxcclxuICAgIHJvbGU6XHJcbiAgICB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICAgIGRlZmF1bHQ6IFwidXNlclwiLFxyXG4gICAgICAgIGVudW06Wyd1c2VyJywnbW9kZXJhdGVyJywnYWRtaW4nXVxyXG4gICAgfSxcclxuICAgIGltYWdlOiB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nXHJcbiAgICB9LFxyXG4gICAgc3VpdGU6e1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICBlbnVtOlsnZ29sZCcsJ2x1eHVyeScsJ3BsYXRpbnVtJ11cclxuICAgIH0sXHJcbiAgICByb21tbnVtYmVyOntcclxuICAgICAgICB0eXBlOiBTdHJpbmdcclxuICAgIH0sXHJcbiAgICB1c2Vyc3RhdGU6e1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICBkZWZhdWx0OiBcImluXCIsXHJcbiAgICAgICAgZW51bTpbJ2luJywnb3V0J11cclxuICAgIH1cclxufSwge1xyXG4gICAgdGltZXN0YW1wczogdHJ1ZVxyXG59KTtcclxuXHJcblVzZXIucGx1Z2luKHBhc3Nwb3J0TG9jYWxNb25nb29zZSk7XHJcblVzZXIuaW5kZXgoeyckKionOid0ZXh0J30pO1xyXG52YXIgVXNlcnMgPSBtb25nb29zZS5tb2RlbCgnVXNlcicsIFVzZXIpO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBVc2VyczsiXX0=\",\"originalCode\":\"var mongoose = require('mongoose');\\r\\nvar Schema = mongoose.Schema;\\r\\n\\r\\nvar passportLocalMongoose = require('passport-local-mongoose');\\r\\n\\r\\nvar User = new Schema({\\r\\n firstname: {\\r\\n type: String,\\r\\n required: true\\r\\n },\\r\\n lastname: {\\r\\n type: String,\\r\\n required: true\\r\\n },\\r\\n email: {\\r\\n type: String,\\r\\n required: true,\\r\\n unique: true\\r\\n },\\r\\n mobile:{\\r\\n type: String\\r\\n },\\r\\n role:\\r\\n {\\r\\n type: String,\\r\\n default: \\\"user\\\",\\r\\n enum:['user','moderater','admin']\\r\\n },\\r\\n image: {\\r\\n type: String\\r\\n },\\r\\n suite:{\\r\\n type: String,\\r\\n enum:['gold','luxury','platinum']\\r\\n },\\r\\n rommnumber:{\\r\\n type: String\\r\\n },\\r\\n userstate:{\\r\\n type: String,\\r\\n default: \\\"in\\\",\\r\\n enum:['in','out']\\r\\n }\\r\\n}, {\\r\\n timestamps: true\\r\\n});\\r\\n\\r\\nUser.plugin(passportLocalMongoose);\\r\\nUser.index({'$**':'text'});\\r\\nvar Users = mongoose.model('User', User);\\r\\n\\r\\nmodule.exports = Users;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/fa/users_fa250a82bd410ffb1909f920e93eed19.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2448\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\models\\\\users.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":4633,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":4630,\"count\":1}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const mongoose = require('mongoose');\\n\\nconst Schema = mongoose.Schema;\\nconst pointSchema = new Schema({\\n type: {\\n type: String,\\n enum: ['Point'],\\n required: true,\\n default: 'Point'\\n },\\n coordinates: {\\n type: [Number],\\n required: true\\n }\\n});\\nconst placeSchema = new Schema({\\n name: {\\n type: String,\\n required: true,\\n unique: true\\n },\\n description: {\\n type: String,\\n required: true\\n },\\n location: {\\n type: pointSchema,\\n index: '2dsphere',\\n required: true\\n },\\n distance: {\\n type: String,\\n required: true\\n },\\n timeToReach: {\\n type: String,\\n required: true\\n },\\n image: {\\n type: String\\n },\\n travellingMethods: [{\\n type: String,\\n enum: ['Bus', 'Car', 'Train', 'Threewheeler', 'Foot']\\n }]\\n}, {\\n timestamps: true\\n});\\nplaceSchema.index({\\n '$**': 'text'\\n});\\nvar Places = mongoose.model('Place', placeSchema);\\nmodule.exports = Places;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInZpc2l0aW5nUGxhY2VzLmpzIl0sIm5hbWVzIjpbIm1vbmdvb3NlIiwicmVxdWlyZSIsIlNjaGVtYSIsInBvaW50U2NoZW1hIiwidHlwZSIsIlN0cmluZyIsImVudW0iLCJyZXF1aXJlZCIsImRlZmF1bHQiLCJjb29yZGluYXRlcyIsIk51bWJlciIsInBsYWNlU2NoZW1hIiwibmFtZSIsInVuaXF1ZSIsImRlc2NyaXB0aW9uIiwibG9jYXRpb24iLCJpbmRleCIsImRpc3RhbmNlIiwidGltZVRvUmVhY2giLCJpbWFnZSIsInRyYXZlbGxpbmdNZXRob2RzIiwidGltZXN0YW1wcyIsIlBsYWNlcyIsIm1vZGVsIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsUUFBUSxHQUFHQyxPQUFPLENBQUMsVUFBRCxDQUF4Qjs7QUFDQSxNQUFNQyxNQUFNLEdBQUdGLFFBQVEsQ0FBQ0UsTUFBeEI7QUFFQSxNQUFNQyxXQUFXLEdBQUcsSUFBSUQsTUFBSixDQUFXO0FBQzNCRSxFQUFBQSxJQUFJLEVBQUU7QUFDRkEsSUFBQUEsSUFBSSxFQUFFQyxNQURKO0FBRUZDLElBQUFBLElBQUksRUFBRSxDQUFDLE9BQUQsQ0FGSjtBQUdGQyxJQUFBQSxRQUFRLEVBQUUsSUFIUjtBQUlGQyxJQUFBQSxPQUFPLEVBQUU7QUFKUCxHQURxQjtBQU8zQkMsRUFBQUEsV0FBVyxFQUFFO0FBQ1RMLElBQUFBLElBQUksRUFBRSxDQUFDTSxNQUFELENBREc7QUFFVEgsSUFBQUEsUUFBUSxFQUFFO0FBRkQ7QUFQYyxDQUFYLENBQXBCO0FBYUEsTUFBTUksV0FBVyxHQUFHLElBQUlULE1BQUosQ0FBVztBQUMzQlUsRUFBQUEsSUFBSSxFQUFFO0FBQ0ZSLElBQUFBLElBQUksRUFBRUMsTUFESjtBQUVGRSxJQUFBQSxRQUFRLEVBQUUsSUFGUjtBQUdGTSxJQUFBQSxNQUFNLEVBQUU7QUFITixHQURxQjtBQU0zQkMsRUFBQUEsV0FBVyxFQUFFO0FBQ1RWLElBQUFBLElBQUksRUFBRUMsTUFERztBQUVURSxJQUFBQSxRQUFRLEVBQUU7QUFGRCxHQU5jO0FBVTNCUSxFQUFBQSxRQUFRLEVBQUU7QUFDTlgsSUFBQUEsSUFBSSxFQUFFRCxXQURBO0FBRU5hLElBQUFBLEtBQUssRUFBRSxVQUZEO0FBR05ULElBQUFBLFFBQVEsRUFBRTtBQUhKLEdBVmlCO0FBZTNCVSxFQUFBQSxRQUFRLEVBQUU7QUFDTmIsSUFBQUEsSUFBSSxFQUFFQyxNQURBO0FBRU5FLElBQUFBLFFBQVEsRUFBRTtBQUZKLEdBZmlCO0FBbUIzQlcsRUFBQUEsV0FBVyxFQUFFO0FBQ1RkLElBQUFBLElBQUksRUFBRUMsTUFERztBQUVURSxJQUFBQSxRQUFRLEVBQUU7QUFGRCxHQW5CYztBQXVCM0JZLEVBQUFBLEtBQUssRUFDTDtBQUNJZixJQUFBQSxJQUFJLEVBQUVDO0FBRFYsR0F4QjJCO0FBMkIzQmUsRUFBQUEsaUJBQWlCLEVBQUUsQ0FDZjtBQUNJaEIsSUFBQUEsSUFBSSxFQUFFQyxNQURWO0FBRUlDLElBQUFBLElBQUksRUFBRSxDQUFDLEtBQUQsRUFBUSxLQUFSLEVBQWUsT0FBZixFQUF3QixjQUF4QixFQUF3QyxNQUF4QztBQUZWLEdBRGU7QUEzQlEsQ0FBWCxFQWlDakI7QUFDQ2UsRUFBQUEsVUFBVSxFQUFFO0FBRGIsQ0FqQ2lCLENBQXBCO0FBcUNBVixXQUFXLENBQUNLLEtBQVosQ0FBa0I7QUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJTSxNQUFNLEdBQUd0QixRQUFRLENBQUN1QixLQUFULENBQWUsT0FBZixFQUF3QlosV0FBeEIsQ0FBYjtBQUVBYSxNQUFNLENBQUNDLE9BQVAsR0FBaUJILE1BQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgbW9uZ29vc2UgPSByZXF1aXJlKCdtb25nb29zZScpO1xyXG5jb25zdCBTY2hlbWEgPSBtb25nb29zZS5TY2hlbWE7XHJcblxyXG5jb25zdCBwb2ludFNjaGVtYSA9IG5ldyBTY2hlbWEoe1xyXG4gICAgdHlwZToge1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICBlbnVtOiBbJ1BvaW50J10sXHJcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXHJcbiAgICAgICAgZGVmYXVsdDogJ1BvaW50J1xyXG4gICAgfSxcclxuICAgIGNvb3JkaW5hdGVzOiB7XHJcbiAgICAgICAgdHlwZTogW051bWJlcl0sXHJcbiAgICAgICAgcmVxdWlyZWQ6IHRydWVcclxuICAgIH1cclxufSk7XHJcblxyXG5jb25zdCBwbGFjZVNjaGVtYSA9IG5ldyBTY2hlbWEoe1xyXG4gICAgbmFtZToge1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgICB1bmlxdWU6IHRydWVcclxuICAgIH0sXHJcbiAgICBkZXNjcmlwdGlvbjoge1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICByZXF1aXJlZDogdHJ1ZVxyXG4gICAgfSxcclxuICAgIGxvY2F0aW9uOiB7XHJcbiAgICAgICAgdHlwZTogcG9pbnRTY2hlbWEsXHJcbiAgICAgICAgaW5kZXg6ICcyZHNwaGVyZScsXHJcbiAgICAgICAgcmVxdWlyZWQ6IHRydWVcclxuICAgIH0sXHJcbiAgICBkaXN0YW5jZToge1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICByZXF1aXJlZDogdHJ1ZVxyXG4gICAgfSxcclxuICAgIHRpbWVUb1JlYWNoOiB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlXHJcbiAgICB9LFxyXG4gICAgaW1hZ2U6XHJcbiAgICB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgfSxcclxuICAgIHRyYXZlbGxpbmdNZXRob2RzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXHJcbiAgICAgICAgICAgIGVudW06IFsnQnVzJywgJ0NhcicsICdUcmFpbicsICdUaHJlZXdoZWVsZXInLCAnRm9vdCddXHJcbiAgICAgICAgfVxyXG4gICAgXVxyXG59LCB7XHJcbiAgICB0aW1lc3RhbXBzOiB0cnVlXHJcbn0pO1xyXG5cclxucGxhY2VTY2hlbWEuaW5kZXgoeyAnJCoqJzogJ3RleHQnIH0pO1xyXG52YXIgUGxhY2VzID0gbW9uZ29vc2UubW9kZWwoJ1BsYWNlJywgcGxhY2VTY2hlbWEpO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBQbGFjZXM7Il19\",\"originalCode\":\"const mongoose = require('mongoose');\\r\\nconst Schema = mongoose.Schema;\\r\\n\\r\\nconst pointSchema = new Schema({\\r\\n type: {\\r\\n type: String,\\r\\n enum: ['Point'],\\r\\n required: true,\\r\\n default: 'Point'\\r\\n },\\r\\n coordinates: {\\r\\n type: [Number],\\r\\n required: true\\r\\n }\\r\\n});\\r\\n\\r\\nconst placeSchema = new Schema({\\r\\n name: {\\r\\n type: String,\\r\\n required: true,\\r\\n unique: true\\r\\n },\\r\\n description: {\\r\\n type: String,\\r\\n required: true\\r\\n },\\r\\n location: {\\r\\n type: pointSchema,\\r\\n index: '2dsphere',\\r\\n required: true\\r\\n },\\r\\n distance: {\\r\\n type: String,\\r\\n required: true\\r\\n },\\r\\n timeToReach: {\\r\\n type: String,\\r\\n required: true\\r\\n },\\r\\n image:\\r\\n {\\r\\n type: String,\\r\\n },\\r\\n travellingMethods: [\\r\\n {\\r\\n type: String,\\r\\n enum: ['Bus', 'Car', 'Train', 'Threewheeler', 'Foot']\\r\\n }\\r\\n ]\\r\\n}, {\\r\\n timestamps: true\\r\\n});\\r\\n\\r\\nplaceSchema.index({ '$**': 'text' });\\r\\nvar Places = mongoose.model('Place', placeSchema);\\r\\n\\r\\nmodule.exports = Places;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/c4/visitingPlaces_c4ccc91c117df8c4aeada72a82534688.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2459\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\models\\\\visitingPlaces.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":4920,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":4917,\"count\":1}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"var passport = require('passport');\\n\\nvar LocalStrategy = require('passport-local').Strategy;\\n\\nvar User = require('../models/users');\\n\\nvar JwtStrategy = require('passport-jwt').Strategy;\\n\\nvar ExtractJwt = require('passport-jwt').ExtractJwt;\\n\\nvar jwt = require('jsonwebtoken');\\n\\npassport.use(new LocalStrategy(User.authenticate()));\\npassport.serializeUser(User.serializeUser());\\npassport.deserializeUser(User.deserializeUser());\\n\\nexports.getToken = user => {\\n return jwt.sign(user, process.env.secretKey, {\\n expiresIn: 3600\\n });\\n};\\n\\nvar opts = {};\\nopts.jwtFromRequest = ExtractJwt.fromAuthHeaderAsBearerToken();\\nopts.secretOrKey = process.env.secretKey;\\nexports.jwtPassport = passport.use(new JwtStrategy(opts, (jwt_payload, done) => {\\n User.findOne({\\n _id: jwt_payload._id\\n }, (err, user) => {\\n if (err) {\\n return done(err, false);\\n } else if (user) {\\n return done(null, user);\\n } else {\\n return done(null, false);\\n }\\n });\\n}));\\nexports.verifyUser = passport.authenticate('jwt', {\\n session: false\\n});\\n\\nexports.verifyAdmin = (req, res, next) => {\\n if (req.user.role == 'admin') {\\n return next();\\n } else if (req.user.role != 'admin') {\\n err = new Error('You are not authorized to perform this operation!');\\n err.status = 403;\\n return next(err);\\n } else {\\n err = new Error('Admin Verification Failed!');\\n err.status = 500;\\n return next(err);\\n }\\n};\\n\\nexports.verifyModerater = (req, res, next) => {\\n if (req.user.role != 'user') {\\n return next();\\n } else if (req.user.role == 'user') {\\n err = new Error('You are not authorized to perform this operation!');\\n err.status = 403;\\n return next(err);\\n }\\n};\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF1dGhlbnRpY2F0ZS5qcyJdLCJuYW1lcyI6WyJwYXNzcG9ydCIsInJlcXVpcmUiLCJMb2NhbFN0cmF0ZWd5IiwiU3RyYXRlZ3kiLCJVc2VyIiwiSnd0U3RyYXRlZ3kiLCJFeHRyYWN0Snd0Iiwiand0IiwidXNlIiwiYXV0aGVudGljYXRlIiwic2VyaWFsaXplVXNlciIsImRlc2VyaWFsaXplVXNlciIsImV4cG9ydHMiLCJnZXRUb2tlbiIsInVzZXIiLCJzaWduIiwicHJvY2VzcyIsImVudiIsInNlY3JldEtleSIsImV4cGlyZXNJbiIsIm9wdHMiLCJqd3RGcm9tUmVxdWVzdCIsImZyb21BdXRoSGVhZGVyQXNCZWFyZXJUb2tlbiIsInNlY3JldE9yS2V5Iiwiand0UGFzc3BvcnQiLCJqd3RfcGF5bG9hZCIsImRvbmUiLCJmaW5kT25lIiwiX2lkIiwiZXJyIiwidmVyaWZ5VXNlciIsInNlc3Npb24iLCJ2ZXJpZnlBZG1pbiIsInJlcSIsInJlcyIsIm5leHQiLCJyb2xlIiwiRXJyb3IiLCJzdGF0dXMiLCJ2ZXJpZnlNb2RlcmF0ZXIiXSwibWFwcGluZ3MiOiJBQUFBLElBQUlBLFFBQVEsR0FBR0MsT0FBTyxDQUFDLFVBQUQsQ0FBdEI7O0FBQ0EsSUFBSUMsYUFBYSxHQUFHRCxPQUFPLENBQUMsZ0JBQUQsQ0FBUCxDQUEwQkUsUUFBOUM7O0FBQ0EsSUFBSUMsSUFBSSxHQUFHSCxPQUFPLENBQUMsaUJBQUQsQ0FBbEI7O0FBRUEsSUFBSUksV0FBVyxHQUFHSixPQUFPLENBQUMsY0FBRCxDQUFQLENBQXdCRSxRQUExQzs7QUFDQSxJQUFJRyxVQUFVLEdBQUdMLE9BQU8sQ0FBQyxjQUFELENBQVAsQ0FBd0JLLFVBQXpDOztBQUNBLElBQUlDLEdBQUcsR0FBR04sT0FBTyxDQUFDLGNBQUQsQ0FBakI7O0FBR0FELFFBQVEsQ0FBQ1EsR0FBVCxDQUFhLElBQUlOLGFBQUosQ0FBa0JFLElBQUksQ0FBQ0ssWUFBTCxFQUFsQixDQUFiO0FBQ0FULFFBQVEsQ0FBQ1UsYUFB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dCI6WyJ2YXIgcGFzc3BvcnQgPSByZXF1aXJlKCdwYXNzcG9ydCcpO1xyXG52YXIgTG9jYWxTdHJhdGVneSA9IHJlcXVpcmUoJ3Bhc3Nwb3J0LWxvY2FsJykuU3RyYXRlZ3k7XHJcbnZhciBVc2VyID0gcmVxdWlyZSgnLi4vbW9kZWxzL3VzZXJzJyk7XHJcblxyXG52YXIgSnd0U3RyYXRlZ3kgPSByZXF1aXJlKCdwYXNzcG9ydC1qd3QnKS5TdHJhdGVneTtcclxudmFyIEV4dHJhY3RKd3QgPSByZXF1aXJlKCdwYXNzcG9ydC1qd3QnKS5FeHRyYWN0Snd0O1xyXG52YXIgand0ID0gcmVxdWlyZSgnanNvbndlYnRva2VuJyk7XHJcblxyXG5cclxucGFzc3BvcnQudXNlKG5ldyBMb2NhbFN0cmF0ZWd5KFVzZXIuYXV0aGVudGljYXRlKCkpKTtcclxucGFzc3BvcnQuc2VyaWFsaXplVXNlcihVc2VyLnNlcmlhbGl6ZVVzZXIoKSk7XHJcbnBhc3Nwb3J0LmRlc2VyaWFsaXplVXNlcihVc2VyLmRlc2VyaWFsaXplVXNlcigpKTtcclxuXHJcbmV4cG9ydHMuZ2V0VG9rZW4gPSAodXNlcikgPT4ge1xyXG4gICAgcmV0dXJuIGp3dC5zaWduKHVzZXIsIHByb2Nlc3MuZW52LnNlY3JldEtleSxcclxuICAgICAgICB7IGV4cGlyZXNJbjogMzYwMCB9KTtcclxufTtcclxuXHJcbnZhciBvcHRzID0ge307XHJcbm9wdHMuand0RnJvbVJlcXVlc3QgPSBFeHRyYWN0Snd0LmZyb21BdXRoSGVhZGVyQXNCZWFyZXJUb2tlbigpO1xyXG5vcHRzLnNlY3JldE9yS2V5ID0gcHJvY2Vzcy5lbnYuc2VjcmV0S2V5O1xyXG5cclxuZXhwb3J0cy5qd3RQYXNzcG9ydCA9IHBhc3Nwb3J0LnVzZShuZXcgSnd0U3RyYXRlZ3kob3B0cyxcclxuICAgIChqd3RfcGF5bG9hZCwgZG9uZSkgPT4ge1xyXG4gICAgICAgIFVzZXIuZmluZE9uZSh7IF9pZDogand0X3BheWxvYWQuX2lkIH0sIChlcnIsIHVzZXIpID0+IHtcclxuICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRvbmUoZXJyLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAodXNlcikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRvbmUobnVsbCwgdXNlcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZG9uZShudWxsLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH0pKTtcclxuXHJcbmV4cG9ydHMudmVyaWZ5VXNlciA9IHBhc3Nwb3J0LmF1dGhlbnRpY2F0ZSgnand0JywgeyBzZXNzaW9uOiBmYWxzZSB9KTtcclxuXHJcbmV4cG9ydHMudmVyaWZ5QWRtaW4gPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIGlmIChyZXEudXNlci5yb2xlID09ICdhZG1pbicpIHtcclxuICAgICAgICByZXR1cm4gbmV4dCgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAocmVxLnVzZXIucm9sZSAhPSAnYWRtaW4nKSB7XHJcbiAgICAgICAgZXJyID0gbmV3IEVycm9yKCdZb3UgYXJlIG5vdCBhdXRob3JpemVkIHRvIHBlcmZvcm0gdGhpcyBvcGVyYXRpb24hJyk7XHJcbiAgICAgICAgZXJyLnN0YXR1cyA9IDQwMztcclxuICAgICAgICByZXR1cm4gbmV4dChlcnIpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgZXJyID0gbmV3IEVycm9yKCdBZG1pbiBWZXJpZmljYXRpb24gRmFpbGVkIScpO1xyXG4gICAgICAgIGVyci5zdGF0dXMgPSA1MDA7XHJcbiAgICAgICAgcmV0dXJuIG5leHQoZXJyKTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0cy52ZXJpZnlNb2RlcmF0ZXIgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIGlmIChyZXEudXNlci5yb2xlICE9ICd1c2VyJykge1xyXG4gICAgICAgIHJldHVybiBuZXh0KCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChyZXEudXNlci5yb2xlID09ICd1c2VyJykge1xyXG4gICAgICAgIGVyciA9IG5ldyBFcnJvcignWW91IGFyZSBub3QgYXV0aG9yaXplZCB0byBwZXJmb3JtIHRoaXMgb3BlcmF0aW9uIScpO1xyXG4gICAgICAgIGVyci5zdGF0dXMgPSA0MDM7XHJcbiAgICAgICAgcmV0dXJuIG5leHQoZXJyKTtcclxuICAgIH1cclxufVxyXG4iXX0=\",\"originalCode\":\"var passport = require('passport');\\r\\nvar LocalStrategy = require('passport-local').Strategy;\\r\\nvar User = require('../models/users');\\r\\n\\r\\nvar JwtStrategy = require('passport-jwt').Strategy;\\r\\nvar ExtractJwt = require('passport-jwt').ExtractJwt;\\r\\nvar jwt = require('jsonwebtoken');\\r\\n\\r\\n\\r\\npassport.use(new LocalStrategy(User.authenticate()));\\r\\npassport.serializeUser(User.serializeUser());\\r\\npassport.deserializeUser(User.deserializeUser());\\r\\n\\r\\nexports.getToken = (user) => {\\r\\n return jwt.sign(user, process.env.secretKey,\\r\\n { expiresIn: 3600 });\\r\\n};\\r\\n\\r\\nvar opts = {};\\r\\nopts.jwtFromRequest = ExtractJwt.fromAuthHeaderAsBearerToken();\\r\\nopts.secretOrKey = process.env.secretKey;\\r\\n\\r\\nexports.jwtPassport = passport.use(new JwtStrategy(opts,\\r\\n (jwt_payload, done) => {\\r\\n User.findOne({ _id: jwt_payload._id }, (err, user) => {\\r\\n if (err) {\\r\\n return done(err, false);\\r\\n }\\r\\n else if (user) {\\r\\n return done(null, user);\\r\\n }\\r\\n else {\\r\\n return done(null, false);\\r\\n }\\r\\n });\\r\\n }));\\r\\n\\r\\nexports.verifyUser = passport.authenticate('jwt', { session: false });\\r\\n\\r\\nexports.verifyAdmin = (req, res, next) => {\\r\\n if (req.user.role == 'admin') {\\r\\n return next();\\r\\n }\\r\\n else if (req.user.role != 'admin') {\\r\\n err = new Error('You are not authorized to perform this operation!');\\r\\n err.status = 403;\\r\\n return next(err);\\r\\n }\\r\\n else {\\r\\n err = new Error('Admin Verification Failed!');\\r\\n err.status = 500;\\r\\n return next(err);\\r\\n }\\r\\n}\\r\\n\\r\\nexports.verifyModerater = (req, res, next) => {\\r\\n if (req.user.role != 'user') {\\r\\n return next();\\r\\n }\\r\\n else if (req.user.role == 'user') {\\r\\n err = new Error('You are not authorized to perform this operation!');\\r\\n err.status = 403;\\r\\n return next(err);\\r\\n }\\r\\n}\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/17/authenticate_1749ed24acd3b9174e3e8d9c003de68d.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2460\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\middleware\\\\authenticate.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":8164,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":8161,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
.exports.getToken\",\"ranges\":[{\"startOffset\":536,\"endOffset\":622,\"count\":2}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":803,\"endOffset\":1050,\"count\":7}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":875,\"endOffset\":1046,\"count\":7}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
.exports.verifyAdmin\",\"ranges\":[{\"startOffset\":1150,\"endOffset\":1495,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
.exports.verifyModerater\",\"ranges\":[{\"startOffset\":1524,\"endOffset\":1761,\"count\":4}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"var validationRules = {\\n id: {\\n in: ['params', 'query'],\\n errorMessage: 'ID is wrong',\\n isInt: true,\\n toInt: true\\n },\\n name: {\\n errorMessage: 'Name should be at least 2 chars long and maximum of 50 chars',\\n isLength: {\\n options: {\\n min: 2,\\n max: 50\\n }\\n },\\n trim: true\\n },\\n description: {\\n errorMessage: 'Description should be at least 2 chars long and maximum of 200 chars',\\n isLength: {\\n options: {\\n min: 2,\\n max: 200\\n }\\n },\\n trim: true\\n },\\n distance: {\\n errorMessage: 'Distance should be at least 1 chars long and maximum of 200 chars',\\n isLength: {\\n options: {\\n min: 1,\\n max: 200\\n }\\n },\\n trim: true\\n },\\n timeToReach: {\\n errorMessage: 'Time To Reach should be at least 2 chars long and maximum of 200 chars',\\n isLength: {\\n options: {\\n min: 2,\\n max: 200\\n }\\n },\\n trim: true\\n },\\n firstname: {\\n errorMessage: 'First Name should be at least 3 chars long and maximum of 50 chars',\\n isLength: {\\n options: {\\n min: 3,\\n max: 50\\n }\\n },\\n trim: true\\n },\\n lastname: {\\n errorMessage: 'Last Name should be at least 3 chars long and maximum of 50 chars',\\n isLength: {\\n options: {\\n min: 3,\\n max: 50\\n }\\n },\\n trim: true\\n },\\n email: {\\n errorMessage: 'Please enter a valid email address',\\n isEmail: true,\\n trim: true\\n },\\n mobile: {\\n errorMessage: 'Please enter Phone Number in 10 digits',\\n isLength: {\\n options: {\\n min: 10,\\n max: 10\\n }\\n },\\n matches: {\\n options: [/^\\\\d{10}$/],\\n errorMessage: \\\"Please enter digits\\\"\\n },\\n trim: true\\n },\\n password: {\\n isLength: {\\n errorMessage: 'Password should be at least 6 chars long',\\n options: {\\n min: 6\\n }\\n }\\n },\\n confirm_password: {\\n errorMessage: 'Must have the same value as the password field',\\n custom: {\\n options: (value, {\\n req\\n }) => value === req.body.password\\n }\\n },\\n suite: {\\n errorMessage: 'Please select suite type',\\n isIn: {\\n options: [['gold', 'luxury', 'platinum']]\\n }\\n },\\n roomnumber: {\\n errorMessage: 'Room Number should be at least 3 chars long and maximum of 50 chars',\\n isLength: {\\n options: {\\n min: 3,\\n max: 50\\n }\\n },\\n trim: true\\n },\\n state: {\\n errorMessage: 'Please select correct state',\\n isIn: {\\n options: [[\\\"new\\\", \\\"not-completed\\\", \\\"canceled\\\", \\\"completed\\\"]]\\n }\\n },\\n method: {\\n errorMessage: 'Please select correct travelling method',\\n isIn: {\\n options: [['Bus', 'Car', 'Train', 'Threewheeler', 'Foot']]\\n }\\n }\\n};\\nexports.validationRules = validationRules;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInZhbGlkYXRpb24uanMiXSwibmFtZXMiOlsidmFsaWRhdGlvblJ1bGVzIiwiaWQiLCJpbiIsImVycm9yTWVzc2FnZSIsImlzSW50IiwidG9JbnQiLCJuYW1lIiwiaXNMZW5ndGgiLCJvcHRpb25zIiwibWluIiwibWF4IiwidHJpbSIsImRlc2NyaXB0aW9uIiwiZGlzdGFuY2UiLCJ0aW1lVG9SZWFjaCIsImZpcnN0bmFtZSIsImxhc3RuYW1lIiwiZW1haWwiLCJpc0VtYWlsIiwibW9iaWxlIiwibWF0Y2hlcyIsInBhc3N3b3JkIiwiY29uZmlybV9wYXNzd29yZCIsImN1c3RvbSIsInZhbHVlIiwicmVxIiwiYm9keSIsInN1aXRlIiwiaXNJbiIsInJvb21udW1iZXIiLCJzdGF0ZSIsIm1ldGhvZCIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLElBQUlBLGVBQWUsR0FBRztBQUNsQkMsRUFBQUEsRUFBRSxFQUFFO0FBQ0FDLElBQUFBLEVBQUUsRUFBRSxDQUFDLFFBQUQsRUFBVyxPQUFYLENBREo7QUFFQUMsSUFBQUEsWUFBWSxFQUFFLGFBRmQ7QUFHQUMsSUFBQUEsS0FBSyxFQUFFLElBSFA7QUFJQUMsSUFBQUEsS0FBSyxFQUFFO0FBSlAsR0FEYztBQU9sQkMsRUFBQUEsSUFBSSxFQUFFO0FBQ0ZILElBQUFBLFlBQVksRUFBRSw4REFEWjtBQUVGSSxJQUFBQSxRQUFRLEVBQUU7QUFDTkMsTUFBQUEsT0FBTyxFQUFFO0FBQUVDLFFBQUFBLEdBQUcsRUFBRSxDQUFQO0FBQVVDLFFBQUFBLEdBQUcsRUFBRTtBQUFmO0FBREgsS0FGUjtBQUtGQyxJQUFBQSxJQUFJLEVBQUU7QUFMSixHQVBZO0FBY2xCQyxFQUFBQSxXQUFXLEVBQUU7QUFDVFQsSUFBQUEsWUFBWSxFQUFFLHNFQURMO0FBRVRJLElBQUFBLFFBQVEsRUFBRTtBQUNOQyxNQUFBQSxPQUFPLEVBQUU7QUFBRUMsUUFBQUEsR0FBRyxFQUFFLENBQVA7QUFBVUMsUUFBQUEsR0FBRyxFQUFFO0FBQWY7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RTtBQUFFQyxRQUFBQSxHQUFHLEVBQUUsQ0FBUDtBQUFVQyxRQUFBQSxHQUFHLEVBQUU7QUFBZjtBQURILEtBRkY7QUFLUkMsSUFBQUEsSUFBSSxFQUFFO0FBTEUsR0FuRk07QUEwRmxCbUIsRUFBQUEsS0FBSyxFQUFFO0FBQ0gzQixJQUFBQSxZQUFZLEVBQUUsNkJBRFg7QUFFSHlCLElBQUFBLElBQUksRUFBRTtBQUNGcEIsTUFBQUEsT0FBTyxFQUFFLENBQUMsQ0FBQyxLQUFELEVBQVEsZUFBUixFQUF5QixVQUF6QixFQUFxQyxXQUFyQyxDQUFEO0FBRFA7QUFGSCxHQTFGVztBQWdHbEJ1QixFQUFBQSxNQUFNLEVBQUU7QUFDSjVCLElBQUFBLFlBQVksRUFBRSx5Q0FEVjtBQUVKeUIsSUFBQUEsSUFBSSxFQUFFO0FBQ0ZwQixNQUFBQSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEtBQUQsRUFBUSxLQUFSLEVBQWUsT0FBZixFQUF3QixjQUF4QixFQUF3QyxNQUF4QyxDQUFEO0FBRFA7QUFGRjtBQWhHVSxDQUF0QjtBQXdHQXdCLE9BQU8sQ0FBQ2hDLGVBQVIsR0FBMEJBLGVBQTFCIiwic291cmNlc0NvbnRlbnQiOlsidmFyIHZhbGlkYXRpb25SdWxlcyA9IHtcclxuICAgIGlkOiB7XHJcbiAgICAgICAgaW46IFsncGFyYW1zJywgJ3F1ZXJ5J10sXHJcbiAgICAgICAgZXJyb3JNZXNzYWdlOiAnSUQgaXMgd3JvbmcnLFxyXG4gICAgICAgIGlzSW50OiB0cnVlLFxyXG4gICAgICAgIHRvSW50OiB0cnVlLFxyXG4gICAgfSxcclxuICAgIG5hbWU6IHtcclxuICAgICAgICBlcnJvck1lc3NhZ2U6ICdOYW1lIHNob3VsZCBiZSBhdCBsZWFzdCAyIGNoYXJzIGxvbmcgYW5kIG1heGltdW0gb2YgNTAgY2hhcnMnLFxyXG4gICAgICAgIGlzTGVuZ3RoOiB7XHJcbiAgICAgICAgICAgIG9wdGlvbnM6IHsgbWluOiAyLCBtYXg6IDUwIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHRyaW06IHRydWVcclxuICAgIH0sXHJcbiAgICBkZXNjcmlwdGlvbjoge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ0Rlc2NyaXB0aW9uIHNob3VsZCBiZSBhdCBsZWFzdCAyIGNoYXJzIGxvbmcgYW5kIG1heGltdW0gb2YgMjAwIGNoYXJzJyxcclxuICAgICAgICBpc0xlbmd0aDoge1xyXG4gICAgICAgICAgICBvcHRpb25zOiB7IG1pbjogMiwgbWF4OiAyMDAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHJpbTogdHJ1ZVxyXG4gICAgfSxcclxuICAgIGRpc3RhbmNlOiB7XHJcbiAgICAgICAgZXJyb3JNZXNzYWdlOiAnRGlzdGFuY2Ugc2hvdWxkIGJlIGF0IGxlYXN0IDEgY2hhcnMgbG9uZyBhbmQgbWF4aW11bSBvZiAyMDAgY2hhcnMnLFxyXG4gICAgICAgIGlzTGVuZ3RoOiB7XHJcbiAgICAgICAgICAgIG9wdGlvbnM6IHsgbWluOiAxLCBtYXg6IDIwMCB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICB0cmltOiB0cnVlXHJcbiAgICB9LFxyXG4gICAgdGltZVRvUmVhY2g6IHtcclxuICAgICAgICBlcnJvck1lc3NhZ2U6ICdUaW1lIFRvIFJlYWNoIHNob3VsZCBiZSBhdCBsZWFzdCAyIGNoYXJzIGxvbmcgYW5kIG1heGltdW0gb2YgMjAwIGNoYXJzJyxcclxuICAgICAgICBpc0xlbmd0aDoge1xyXG4gICAgICAgICAgICBvcHRpb25zOiB7IG1pbjogMiwgbWF4OiAyMDAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHJpbTogdHJ1ZVxyXG4gICAgfSxcclxuICAgIGZpcnN0bmFtZToge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ0ZpcnN0IE5hbWUgc2hvdWxkIGJlIGF0IGxlYXN0IDMgY2hhcnMgbG9uZyBhbmQgbWF4aW11bSBvZiA1MCBjaGFycycsXHJcbiAgICAgICAgaXNMZW5ndGg6IHtcclxuICAgICAgICAgICAgb3B0aW9uczogeyBtaW46IDMsIG1heDogNTAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHJpbTogdHJ1ZVxyXG4gICAgfSxcclxuICAgIGxhc3RuYW1lOiB7XHJcbiAgICAgICAgZXJyb3JNZXNzYWdlOiAnTGFzdCBOYW1lIHNob3VsZCBiZSBhdCBsZWFzdCAzIGNoYXJzIGxvbmcgYW5kIG1heGltdW0gb2YgNTAgY2hhcnMnLFxyXG4gICAgICAgIGlzTGVuZ3RoOiB7XHJcbiAgICAgICAgICAgIG9wdGlvbnM6IHsgbWluOiAzLCBtYXg6IDUwIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHRyaW06IHRydWVcclxuICAgIH0sXHJcbiAgICBlbWFpbDoge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ1BsZWFzZSBlbnRlciBhIHZhbGlkIGVtYWlsIGFkZHJlc3MnLFxyXG4gICAgICAgIGlzRW1haWw6IHRydWUsXHJcbiAgICAgICAgdHJpbTogdHJ1ZSxcclxuICAgIH0sXHJcbiAgICBtb2JpbGU6IHtcclxuICAgICAgICBlcnJvck1lc3NhZ2U6ICdQbGVhc2UgZW50ZXIgUGhvbmUgTnVtYmVyIGluIDEwIGRpZ2l0cycsXHJcbiAgICAgICAgaXNMZW5ndGg6IHtcclxuICAgICAgICAgICAgb3B0aW9uczogeyBtaW46IDEwLCBtYXg6IDEwIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIG1hdGNoZXM6IHtcclxuICAgICAgICAgICAgb3B0aW9uczogWy9eXFxkezEwfSQvXSxcclxuICAgICAgICAgICAgZXJyb3JNZXNzYWdlOiBcIlBsZWFzZSBlbnRlciBkaWdpdHNcIlxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHJpbTogdHJ1ZVxyXG4gICAgfSxcclxuICAgIHBhc3N3b3JkOiB7XHJcbiAgICAgICAgaXNMZW5ndGg6IHtcclxuICAgICAgICAgICAgZXJyb3JNZXNzYWdlOiAnUGFzc3dvcmQgc2hvdWxkIGJlIGF0IGxlYXN0IDYgY2hhcnMgbG9uZycsXHJcbiAgICAgICAgICAgIG9wdGlvbnM6IHsgbWluOiA2IH1cclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgY29uZmlybV9wYXNzd29yZDoge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ011c3QgaGF2ZSB0aGUgc2FtZSB2YWx1ZSBhcyB0aGUgcGFzc3dvcmQgZmllbGQnLFxyXG4gICAgICAgIGN1c3RvbToge1xyXG4gICAgICAgICAgICBvcHRpb25zOiAodmFsdWUsIHsgcmVxIH0pID0+IHZhbHVlID09PSByZXEuYm9keS5wYXNzd29yZFxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICBzdWl0ZToge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ1BsZWFzZSBzZWxlY3Qgc3VpdGUgdHlwZScsXHJcbiAgICAgICAgaXNJbjoge1xyXG4gICAgICAgICAgICBvcHRpb25zOiBbWydnb2xkJywgJ2x1eHVyeScsICdwbGF0aW51bSddXSxcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgcm9vbW51bWJlcjoge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ1Jvb20gTnVtYmVyIHNob3VsZCBiZSBhdCBsZWFzdCAzIGNoYXJzIGxvbmcgYW5kIG1heGltdW0gb2YgNTAgY2hhcnMnLFxyXG4gICAgICAgIGlzTGVuZ3RoOiB7XHJcbiAgICAgICAgICAgIG9wdGlvbnM6IHsgbWluOiAzLCBtYXg6IDUwIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHRyaW06IHRydWVcclxuICAgIH0sXHJcbiAgICBzdGF0ZToge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ1BsZWFzZSBzZWxlY3QgY29ycmVjdCBzdGF0ZScsXHJcbiAgICAgICAgaXNJbjoge1xyXG4gICAgICAgICAgICBvcHRpb25zOiBbW1wibmV3XCIsIFwibm90LWNvbXBsZXRlZFwiLCBcImNhbmNlbGVkXCIsIFwiY29tcGxldGVkXCJdXSxcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgbWV0aG9kOiB7XHJcbiAgICAgICAgZXJyb3JNZXNzYWdlOiAnUGxlYXNlIHNlbGVjdCBjb3JyZWN0IHRyYXZlbGxpbmcgbWV0aG9kJyxcclxuICAgICAgICBpc0luOiB7XHJcbiAgICAgICAgICAgIG9wdGlvbnM6IFtbJ0J1cycsICdDYXInLCAnVHJhaW4nLCAnVGhyZWV3aGVlbGVyJywgJ0Zvb3QnXV0sXHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxufVxyXG5cclxuZXhwb3J0cy52YWxpZGF0aW9uUnVsZXMgPSB2YWxpZGF0aW9uUnVsZXM7Il19\",\"originalCode\":\"var validationRules = {\\r\\n id: {\\r\\n in: ['params', 'query'],\\r\\n errorMessage: 'ID is wrong',\\r\\n isInt: true,\\r\\n toInt: true,\\r\\n },\\r\\n name: {\\r\\n errorMessage: 'Name should be at least 2 chars long and maximum of 50 chars',\\r\\n isLength: {\\r\\n options: { min: 2, max: 50 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n description: {\\r\\n errorMessage: 'Description should be at least 2 chars long and maximum of 200 chars',\\r\\n isLength: {\\r\\n options: { min: 2, max: 200 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n distance: {\\r\\n errorMessage: 'Distance should be at least 1 chars long and maximum of 200 chars',\\r\\n isLength: {\\r\\n options: { min: 1, max: 200 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n timeToReach: {\\r\\n errorMessage: 'Time To Reach should be at least 2 chars long and maximum of 200 chars',\\r\\n isLength: {\\r\\n options: { min: 2, max: 200 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n firstname: {\\r\\n errorMessage: 'First Name should be at least 3 chars long and maximum of 50 chars',\\r\\n isLength: {\\r\\n options: { min: 3, max: 50 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n lastname: {\\r\\n errorMessage: 'Last Name should be at least 3 chars long and maximum of 50 chars',\\r\\n isLength: {\\r\\n options: { min: 3, max: 50 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n email: {\\r\\n errorMessage: 'Please enter a valid email address',\\r\\n isEmail: true,\\r\\n trim: true,\\r\\n },\\r\\n mobile: {\\r\\n errorMessage: 'Please enter Phone Number in 10 digits',\\r\\n isLength: {\\r\\n options: { min: 10, max: 10 }\\r\\n },\\r\\n matches: {\\r\\n options: [/^\\\\d{10}$/],\\r\\n errorMessage: \\\"Please enter digits\\\"\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n password: {\\r\\n isLength: {\\r\\n errorMessage: 'Password should be at least 6 chars long',\\r\\n options: { min: 6 }\\r\\n }\\r\\n },\\r\\n confirm_password: {\\r\\n errorMessage: 'Must have the same value as the password field',\\r\\n custom: {\\r\\n options: (value, { req }) => value === req.body.password\\r\\n }\\r\\n },\\r\\n suite: {\\r\\n errorMessage: 'Please select suite type',\\r\\n isIn: {\\r\\n options: [['gold', 'luxury', 'platinum']],\\r\\n }\\r\\n },\\r\\n roomnumber: {\\r\\n errorMessage: 'Room Number should be at least 3 chars long and maximum of 50 chars',\\r\\n isLength: {\\r\\n options: { min: 3, max: 50 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n state: {\\r\\n errorMessage: 'Please select correct state',\\r\\n isIn: {\\r\\n options: [[\\\"new\\\", \\\"not-completed\\\", \\\"canceled\\\", \\\"completed\\\"]],\\r\\n }\\r\\n },\\r\\n method: {\\r\\n errorMessage: 'Please select correct travelling method',\\r\\n isIn: {\\r\\n options: [['Bus', 'Car', 'Train', 'Threewheeler', 'Foot']],\\r\\n }\\r\\n },\\r\\n}\\r\\n\\r\\nexports.validationRules = validationRules;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/4b/validation_4b7a8ff68e044daa8c6daa8312a761dc.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2493\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\middleware\\\\validation.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":11520,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":11517,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"options\",\"ranges\":[{\"startOffset\":2073,\"endOffset\":2134,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"var express = require('express');\\n\\nvar router = express.Router();\\n\\nvar Users = require('../models/users');\\n\\nvar passport = require('passport');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nconst signupAdmin = (req, res, next) => {\\n var admin = {\\n username: req.body.email,\\n firstname: req.body.firstname,\\n lastname: req.body.lastname,\\n email: req.body.email,\\n role: 'admin'\\n };\\n Users.register(new Users(admin), req.body.password, (err, user) => {\\n if (err) {\\n res.statusCode = 403;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n status: 'Registration Unsuccessful!'\\n });\\n } else {\\n if (req.body.firstname) user.firstname = req.body.firstname;\\n if (req.body.lastname) user.lastname = req.body.lastname;\\n user.save((err, user) => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n status: 'Registration Successful!'\\n });\\n });\\n }\\n });\\n};\\n\\nconst login = (req, res, next) => {\\n passport.authenticate('local', (err, user, info) => {\\n if (!user) {\\n res.statusCode = 401;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n status: 'Login Unsuccessful!',\\n err: info\\n });\\n return next(err);\\n }\\n\\n req.logIn(user, err => {\\n var token = authenticate.getToken({\\n _id: req.user._id,\\n role: user.role\\n });\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n status: 'Login Successful!',\\n token: token\\n });\\n });\\n })(req, res, next);\\n};\\n\\nconst changePassoword = (req, res, next) => {\\n var userId = req.params.id;\\n var newPasswordString = req.body.password;\\n Users.findById(userId).then(function (sanitizedUser) {\\n if (sanitizedUser) {\\n sanitizedUser.setPassword(newPasswordString, function () {\\n sanitizedUser.save();\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n message: 'password reset successful'\\n });\\n });\\n } else {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'This user does not exist'\\n });\\n }\\n }, function (err) {\\n next(err);\\n });\\n};\\n\\nconst logout = (req, res) => {\\n if (req.session) {\\n req.session.destroy();\\n res.clearCookie('session-id');\\n } else {\\n var err = new Error('You are not logged in!');\\n err.status = 403;\\n }\\n};\\n\\nexports.signupAdmin = signupAdmin;\\nexports.login = login;\\nexports.logout = logout;\\nexports.changePassoword = changePassoword;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVzZXJDb250cm9sbGVyLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwicm91dGVyIiwiUm91dGVyIiwiVXNlcnMiLCJwYXNzcG9ydCIsImF1dGhlbnRpY2F0ZSIsInNpZ251cEFkbWluIiwicmVxIiwicmVzIiwibmV4dCIsImFkbWluIiwidXNlcm5hbWUiLCJib2R5IiwiZW1haWwiLCJmaXJzdG5hbWUiLCJsYXN0bmFtZSIsInJvbGUiLCJyZWdpc3RlciIsInBhc3N3b3JkIiwiZXJyIiwidXNlciIsInN0YXR1c0NvZGUiLCJzZXRIZWFkZXIiLCJqc29uIiwic3VjY2VzcyIsInN0YXR1cyIsInNhdmUiLCJsb2dpbiIsImluZm8iLCJsb2dJbiIsInRva2VuIiwiZ2V0VG9rZW4iLCJfaWQiLCJjaGFuZ2VQYXNzb3dvcmQiLCJ1c2VySWQiLCJwYXJhbXMiLCJpZCIsIm5ld1Bhc3N3b3JkU3RyaW5nIiwiZmluZEJ5SWQiLCJ0aGVuIiwic2FuaXRpemVkVXNlciIsInNldFBhc3N3b3JkIiwibWVzc2FnZSIsImxvZ291dCIsInNlc3Npb24iLCJkZXN0cm95IiwiY2xlYXJDb29raWUiLCJFcnJvciIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLElBQUlBLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBckI7O0FBQ0EsSUFBSUMsTUFBTSxHQUFHRixPQUFPLENBQUNHLE1BQVIsRUFBYjs7QUFFQSxJQUFJQyxLQUFLLEdBQUdILE9BQU8sQ0FBQyxpQkFBRCxDQUFuQjs7QUFDQSxJQUFJSSxRQUFRLEdBQUdKLE9BQU8sQ0FBQyxVQUFELENBQXRCOztBQUNBLElBQUlLLFlBQVksR0FBR0wsT0FBTyxDQUFDLDRCQUFELENBQTFCOztBQUdBLE1BQU1NLFdBQVcsR0FBRyxDQUFDQyxHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUNwQyxNQUFJQyxLQUFLLEdBQUc7QUFDUkMsSUFBQUEsUUFBUSxFQUFFSixHQUFHLENBQUNLLElBQUos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YkQsRUFhRyxVQUFVdkIsR0FBVixFQUFlO0FBQ2RWLElBQUFBLElBQUksQ0FBQ1UsR0FBRCxDQUFKO0FBQ0gsR0FmRDtBQWdCSCxDQW5CRDs7QUFxQkEsTUFBTXdCLE1BQU0sR0FBRyxDQUFDcEMsR0FBRCxFQUFNQyxHQUFOLEtBQWM7QUFDekIsTUFBSUQsR0FBRyxDQUFDcUMsT0FBUixFQUFpQjtBQUNickMsSUFBQUEsR0FBRyxDQUFDcUMsT0FBSixDQUFZQyxPQUFaO0FBQ0FyQyxJQUFBQSxHQUFHLENBQUNzQyxXQUFKLENBQWdCLFlBQWhCO0FBQ0gsR0FIRCxNQUlLO0FBQ0QsUUFBSTNCLEdBQUcsR0FBRyxJQUFJNEIsS0FBSixDQUFVLHdCQUFWLENBQVY7QUFDQTVCLElBQUFBLEdBQUcsQ0FBQ00sTUFBSixHQUFhLEdBQWI7QUFDSDtBQUNKLENBVEQ7O0FBV0F1QixPQUFPLENBQUMxQyxXQUFSLEdBQXNCQSxXQUF0QjtBQUNBMEMsT0FBTyxDQUFDckIsS0FBUixHQUFnQkEsS0FBaEI7QUFDQXFCLE9BQU8sQ0FBQ0wsTUFBUixHQUFpQkEsTUFBakI7QUFDQUssT0FBTyxDQUFDZixlQUFSLEdBQTBCQSxlQUExQiIsInNvdXJjZXNDb250ZW50IjpbInZhciBleHByZXNzID0gcmVxdWlyZSgnZXhwcmVzcycpO1xyXG52YXIgcm91dGVyID0gZXhwcmVzcy5Sb3V0ZXIoKTtcclxuXHJcbnZhciBVc2VycyA9IHJlcXVpcmUoJy4uL21vZGVscy91c2VycycpO1xyXG52YXIgcGFzc3BvcnQgPSByZXF1aXJlKCdwYXNzcG9ydCcpO1xyXG52YXIgYXV0aGVudGljYXRlID0gcmVxdWlyZSgnLi4vbWlkZGxld2FyZS9hdXRoZW50aWNhdGUnKTtcclxuXHJcblxyXG5jb25zdCBzaWdudXBBZG1pbiA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgdmFyIGFkbWluID0ge1xyXG4gICAgICAgIHVzZXJuYW1lOiByZXEuYm9keS5lbWFpbCxcclxuICAgICAgICBmaXJzdG5hbWU6IHJlcS5ib2R5LmZpcnN0bmFtZSxcclxuICAgICAgICBsYXN0bmFtZTogcmVxLmJvZHkubGFzdG5hbWUsXHJcbiAgICAgICAgZW1haWw6IHJlcS5ib2R5LmVtYWlsLFxyXG4gICAgICAgIHJvbGU6ICdhZG1pbidcclxuICAgIH1cclxuICAgIFVzZXJzLnJlZ2lzdGVyKG5ldyBVc2VycyhhZG1pbiksXHJcbiAgICAgICAgcmVxLmJvZHkucGFzc3dvcmQsIChlcnIsIHVzZXIpID0+IHtcclxuICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgc3RhdHVzOiAnUmVnaXN0cmF0aW9uIFVuc3VjY2Vzc2Z1bCEnIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlcS5ib2R5LmZpcnN0bmFtZSlcclxuICAgICAgICAgICAgICAgICAgICB1c2VyLmZpcnN0bmFtZSA9IHJlcS5ib2R5LmZpcnN0bmFtZTtcclxuICAgICAgICAgICAgICAgIGlmIChyZXEuYm9keS5sYXN0bmFtZSlcclxuICAgICAgICAgICAgICAgICAgICB1c2VyLmxhc3RuYW1lID0gcmVxLmJvZHkubGFzdG5hbWU7XHJcbiAgICAgICAgICAgICAgICB1c2VyLnNhdmUoKGVyciwgdXNlcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCBzdGF0dXM6ICdSZWdpc3RyYXRpb24gU3VjY2Vzc2Z1bCEnIH0pO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxufVxyXG5cclxuY29uc3QgbG9naW4gPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHBhc3Nwb3J0LmF1dGhlbnRpY2F0ZSgnbG9jYWwnLCAoZXJyLCB1c2VyLCBpbmZvKSA9PiB7XHJcblxyXG4gICAgICAgIGlmICghdXNlcikge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwMTtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgc3RhdHVzOiAnTG9naW4gVW5zdWNjZXNzZnVsIScsIGVycjogaW5mbyB9KTtcclxuICAgICAgICAgICAgcmV0dXJuIG5leHQoZXJyKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmVxLmxvZ0luKHVzZXIsIChlcnIpID0+IHtcclxuICAgICAgICAgICAgdmFyIHRva2VuID0gYXV0aGVudGljYXRlLmdldFRva2VuKHsgX2lkOiByZXEudXNlci5faWQsIHJvbGU6IHVzZXIucm9sZSB9KTtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgc3RhdHVzOiAnTG9naW4gU3VjY2Vzc2Z1bCEnLCB0b2tlbjogdG9rZW4sIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSkocmVxLCByZXMsIG5leHQpO1xyXG59XHJcblxyXG5jb25zdCBjaGFuZ2VQYXNzb3dvcmQgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHZhciB1c2VySWQgPSByZXEucGFyYW1zLmlkO1xyXG4gICAgdmFyIG5ld1Bhc3N3b3JkU3RyaW5nID0gcmVxLmJvZHkucGFzc3dvcmQ7XHJcbiAgICBVc2Vycy5maW5kQnlJZCh1c2VySWQpLnRoZW4oZnVuY3Rpb24gKHNhbml0aXplZFVzZXIpIHtcclxuICAgICAgICBpZiAoc2FuaXRpemVkVXNlcikge1xyXG4gICAgICAgICAgICBzYW5pdGl6ZWRVc2VyLnNldFBhc3N3b3JkKG5ld1Bhc3N3b3JkU3RyaW5nLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICBzYW5pdGl6ZWRVc2VyLnNhdmUoKTtcclxuICAgICAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgbWVzc2FnZTogJ3Bhc3N3b3JkIHJlc2V0IHN1Y2Nlc3NmdWwnIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwNDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogJ1RoaXMgdXNlciBkb2VzIG5vdCBleGlzdCcgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSwgZnVuY3Rpb24gKGVycikge1xyXG4gICAgICAgIG5leHQoZXJyKTtcclxuICAgIH0pO1xyXG59XHJcblxyXG5jb25zdCBsb2dvdXQgPSAocmVxLCByZXMpID0+IHtcclxuICAgIGlmIChyZXEuc2Vzc2lvbikge1xyXG4gICAgICAgIHJlcS5zZXNzaW9uLmRlc3Ryb3koKTtcclxuICAgICAgICByZXMuY2xlYXJDb29raWUoJ3Nlc3Npb24taWQnKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoJ1lvdSBhcmUgbm90IGxvZ2dlZCBpbiEnKTtcclxuICAgICAgICBlcnIuc3RhdHVzID0gNDAzO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnRzLnNpZ251cEFkbWluID0gc2lnbnVwQWRtaW47XHJcbmV4cG9ydHMubG9naW4gPSBsb2dpbjtcclxuZXhwb3J0cy5sb2dvdXQgPSBsb2dvdXQ7XHJcbmV4cG9ydHMuY2hhbmdlUGFzc293b3JkID0gY2hhbmdlUGFzc293b3JkOyJdfQ==\",\"originalCode\":\"var express = require('express');\\r\\nvar router = express.Router();\\r\\n\\r\\nvar Users = require('../models/users');\\r\\nvar passport = require('passport');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\n\\r\\n\\r\\nconst signupAdmin = (req, res, next) => {\\r\\n var admin = {\\r\\n username: req.body.email,\\r\\n firstname: req.body.firstname,\\r\\n lastname: req.body.lastname,\\r\\n email: req.body.email,\\r\\n role: 'admin'\\r\\n }\\r\\n Users.register(new Users(admin),\\r\\n req.body.password, (err, user) => {\\r\\n if (err) {\\r\\n res.statusCode = 403;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, status: 'Registration Unsuccessful!' });\\r\\n }\\r\\n else {\\r\\n if (req.body.firstname)\\r\\n user.firstname = req.body.firstname;\\r\\n if (req.body.lastname)\\r\\n user.lastname = req.body.lastname;\\r\\n user.save((err, user) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, status: 'Registration Successful!' });\\r\\n });\\r\\n }\\r\\n });\\r\\n}\\r\\n\\r\\nconst login = (req, res, next) => {\\r\\n passport.authenticate('local', (err, user, info) => {\\r\\n\\r\\n if (!user) {\\r\\n res.statusCode = 401;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, status: 'Login Unsuccessful!', err: info });\\r\\n return next(err);\\r\\n }\\r\\n req.logIn(user, (err) => {\\r\\n var token = authenticate.getToken({ _id: req.user._id, role: user.role });\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, status: 'Login Successful!', token: token, });\\r\\n });\\r\\n })(req, res, next);\\r\\n}\\r\\n\\r\\nconst changePassoword = (req, res, next) => {\\r\\n var userId = req.params.id;\\r\\n var newPasswordString = req.body.password;\\r\\n Users.findById(userId).then(function (sanitizedUser) {\\r\\n if (sanitizedUser) {\\r\\n sanitizedUser.setPassword(newPasswordString, function () {\\r\\n sanitizedUser.save();\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, message: 'password reset successful' });\\r\\n });\\r\\n } else {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'This user does not exist' });\\r\\n }\\r\\n }, function (err) {\\r\\n next(err);\\r\\n });\\r\\n}\\r\\n\\r\\nconst logout = (req, res) => {\\r\\n if (req.session) {\\r\\n req.session.destroy();\\r\\n res.clearCookie('session-id');\\r\\n }\\r\\n else {\\r\\n var err = new Error('You are not logged in!');\\r\\n err.status = 403;\\r\\n }\\r\\n}\\r\\n\\r\\nexports.signupAdmin = signupAdmin;\\r\\nexports.login = login;\\r\\nexports.logout = logout;\\r\\nexports.changePassoword = changePassoword;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/df/userController_dfcc3c245d97ff3aba4c4e3eb1674b0e.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2494\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\userController.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":12954,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":12951,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"signupAdmin\",\"ranges\":[{\"startOffset\":313,\"endOffset\":1156,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":553,\"endOffset\":1152,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":926,\"endOffset\":1140,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"login\",\"ranges\":[{\"startOffset\":1173,\"endOffset\":1848,\"count\":2}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1228,\"endOffset\":1828,\"count\":2}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1512,\"endOffset\":1822,\"count\":2}],\"isBlockCoverage\":false},{\"functionName\":\"changePassoword\",\"ranges\":[{\"startOffset\":1875,\"endOffset\":2594,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"logout\",\"ranges\":[{\"startOffset\":2612,\"endOffset\":2800,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const express = require('express');\\n\\nconst cors = require('cors');\\n\\nconst app = express();\\n\\nconst util = require('util');\\n\\nconst whitelist = ['http://localhost:3000', 'http://localhost:3001', 'https://localhost:5000'];\\n\\nvar corsOptionsDelegate = (req, callback) => {\\n var corsOptions;\\n\\n if (whitelist.indexOf(req.header('Origin')) !== -1) {\\n corsOptions = {\\n origin: true\\n };\\n } else {\\n corsOptions = {\\n origin: false\\n };\\n }\\n\\n callback(null, corsOptions);\\n}; // if we want to allow all origins\\n\\n\\nexports.cors = cors(); // if we want to allow only the whitelisted origins\\n\\nexports.corsWithOptions = cors(corsOptionsDelegate);\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvcnMuanMiXSwibmFtZXMiOlsiZXhwcmVzcyIsInJlcXVpcmUiLCJjb3JzIiwiYXBwIiwidXRpbCIsIndoaXRlbGlzdCIsImNvcnNPcHRpb25zRGVsZWdhdGUiLCJyZXEiLCJjYWxsYmFjayIsImNvcnNPcHRpb25zIiwiaW5kZXhPZiIsImhlYWRlciIsIm9yaWdpbiIsImV4cG9ydHMiLCJjb3JzV2l0aE9wdGlvbnMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBdkI7O0FBQ0EsTUFBTUMsSUFBSSxHQUFHRCxPQUFPLENBQUMsTUFBRCxDQUFwQjs7QUFDQSxNQUFNRSxHQUFHLEdBQUdILE9BQU8sRUFBbkI7O0FBQ0EsTUFBTUksSUFBSSxHQUFHSCxPQUFPLENBQUMsTUFBRCxDQUFwQjs7QUFFQSxNQUFNSSxTQUFTLEdBQUcsQ0FBQyx1QkFBRCxFQUEwQix1QkFBMUIsRUFBbUQsd0JBQW5ELENBQWxCOztBQUNBLElBQUlDLG1CQUFtQixHQUFHLENBQUNDLEdBQUQsRUFBTUMsUUFBTixLQUFtQjtBQUN6QyxNQUFJQyxXQUFKOztBQUNBLE1BQUdKLFNBQVMsQ0FBQ0ssT0FBVixDQUFrQkgsR0FBRyxDQUFDSSxNQUFKLENBQVcsUUFBWCxDQUFsQixNQUE0QyxDQUFDLENBQWhELEVBQW1EO0FBQy9DRixJQUFBQSxXQUFXLEdBQUc7QUFBRUcsTUFBQUEsTUFBTSxFQUFFO0FBQVYsS0FBZDtBQUNILEdBRkQsTUFHSztBQUNESCxJQUFBQSxXQUFXLEdBQUc7QUFBRUcsTUFBQUEsTUFBTSxFQUFFO0FBQVYsS0FBZDtBQUNIOztBQUNESixFQUFBQSxRQUFRLENBQUMsSUFBRCxFQUFPQyxXQUFQLENBQVI7QUFDSCxDQVRELEMsQ0FXQTs7O0FBQ0FJLE9BQU8sQ0FBQ1gsSUFBUixHQUFlQSxJQUFJLEVBQW5CLEMsQ0FFQTs7QUFDQVcsT0FBTyxDQUFDQyxlQUFSLEdBQTBCWixJQUFJLENBQUNJLG1CQUFELENBQTlCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZXhwcmVzcyA9IHJlcXVpcmUoJ2V4cHJlc3MnKTtcclxuY29uc3QgY29ycyA9IHJlcXVpcmUoJ2NvcnMnKTtcclxuY29uc3QgYXBwID0gZXhwcmVzcygpO1xyXG5jb25zdCB1dGlsID0gcmVxdWlyZSgndXRpbCcpO1xyXG5cclxuY29uc3Qgd2hpdGVsaXN0ID0gWydodHRwOi8vbG9jYWxob3N0OjMwMDAnLCAnaHR0cDovL2xvY2FsaG9zdDozMDAxJywgJ2h0dHBzOi8vbG9jYWxob3N0OjUwMDAnXTtcclxudmFyIGNvcnNPcHRpb25zRGVsZWdhdGUgPSAocmVxLCBjYWxsYmFjaykgPT4ge1xyXG4gICAgdmFyIGNvcnNPcHRpb25zO1xyXG4gICAgaWYod2hpdGVsaXN0LmluZGV4T2YocmVxLmhlYWRlcignT3JpZ2luJykpICE9PSAtMSkge1xyXG4gICAgICAgIGNvcnNPcHRpb25zID0geyBvcmlnaW46IHRydWUgfTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGNvcnNPcHRpb25zID0geyBvcmlnaW46IGZhbHNlIH07XHJcbiAgICB9XHJcbiAgICBjYWxsYmFjayhudWxsLCBjb3JzT3B0aW9ucyk7XHJcbn07XHJcblxyXG4vLyBpZiB3ZSB3YW50IHRvIGFsbG93IGFsbCBvcmlnaW5zXHJcbmV4cG9ydHMuY29ycyA9IGNvcnMoKTtcclxuXHJcbi8vIGlmIHdlIHdhbnQgdG8gYWxsb3cgb25seSB0aGUgd2hpdGVsaXN0ZWQgb3JpZ2luc1xyXG5leHBvcnRzLmNvcnNXaXRoT3B0aW9ucyA9IGNvcnMoY29yc09wdGlvbnNEZWxlZ2F0ZSk7Il19\",\"originalCode\":\"const express = require('express');\\r\\nconst cors = require('cors');\\r\\nconst app = express();\\r\\nconst util = require('util');\\r\\n\\r\\nconst whitelist = ['http://localhost:3000', 'http://localhost:3001', 'https://localhost:5000'];\\r\\nvar corsOptionsDelegate = (req, callback) => {\\r\\n var corsOptions;\\r\\n if(whitelist.indexOf(req.header('Origin')) !== -1) {\\r\\n corsOptions = { origin: true };\\r\\n }\\r\\n else {\\r\\n corsOptions = { origin: false };\\r\\n }\\r\\n callback(null, corsOptions);\\r\\n};\\r\\n\\r\\n// if we want to allow all origins\\r\\nexports.cors = cors();\\r\\n\\r\\n// if we want to allow only the whitelisted origins\\r\\nexports.corsWithOptions = cors(corsOptionsDelegate);\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/34/cors_34beef0e65d7cfb3f2bb7a05fb9de802.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2495\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\cors.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":2982,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":2979,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"corsOptionsDelegate\",\"ranges\":[{\"startOffset\":335,\"endOffset\":573,\"count\":11}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const express = require('express');\\n\\nconst bodyParser = require('body-parser');\\n\\nconst {\\n checkSchema\\n} = require('express-validator');\\n\\nconst cors = require('./cors');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nvar validationRules = require('../middleware/validation');\\n\\nconst employeeController = require('../controllers/employeeController');\\n\\nconst employeeRouter = express.Router();\\nemployeeRouter.use(bodyParser.json()); // **********************************************************************************\\n// \\n// Employee Routes\\n// \\n// **********************************************************************************\\n\\nemployeeRouter.route('/').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.getAllEmployees).post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.addEmployee).put(cors.corsWithOptions, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('PUT operation not supported on /employees');\\n}).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.deleteAllEmployees);\\nemployeeRouter.route('/search').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.getAllEmployeesByName); // **********************************************************************************\\n// \\n// Employee Routes Specified by ID\\n// \\n// **********************************************************************************\\n\\nemployeeRouter.route('/:employeeId').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.getEmployeeDetailsById).post(cors.corsWithOptions, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('POST operation not supported on /employees/' + req.params.employeeId);\\n}).put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.updateEmployeeDetailsById).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.deleteAEmployeeById);\\nmodule.exports = employeeRouter;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImVtcGxveWVlUm91dGVyLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwiYm9keVBhcnNlciIsImNoZWNrU2NoZW1hIiwiY29ycyIsImF1dGhlbnRpY2F0ZSIsInZhbGlkYXRpb25SdWxlcyIsImVtcGxveWVlQ29udHJvbGxlciIsImVtcGxveWVlUm91dGVyIiwiUm91dGVyIiwidXNlIiwianNvbiIsInJvdXRlIiwib3B0aW9ucyIsImNvcnNXaXRoT3B0aW9ucyIsInJlcSIsInJlcyIsInNlbmRTdGF0dXMiLCJnZXQiLCJ2ZXJpZnlVc2VyIiwidmVyaWZ5QWRtaW4iLCJnZXRBbGxFbXBsb3llZXMiLCJwb3N0IiwiYWRkRW1wbG95ZWUiLCJwdXQiLCJuZXh0Iiwic3RhdHVzQ29kZSIsImVuZCIsImRlbGV0ZSIsImRlbGV0ZUFsbEVtcGxveWVlcyIsImdldEFsbEVtcGxveWVlc0J5TmFtZSIsImdldEVtcGxveWVlRGV0YWlsc0J5SWQiLCJwYXJhbXMiLCJlbXBsb3llZUlkIiwidXBkYXRlRW1wbG95ZWVEZXRhaWxzQnlJZCIsImRlbGV0ZUFFbXBsb3llZUJ5SWQiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxPQUFPLEdBQUdDLE9BQU8sQ0FBQyxTQUFELENBQXZCOztBQUNBLE1BQU1DLFVBQVUsR0FBR0QsT0FBTyxDQUFDLGFBQUQsQ0FBMUI7O0FBQ0EsTUFBTTtBQUFFRSxFQUFBQTtBQUFGLElBQWtCRixPQUFPLENBQUMsbUJBQUQsQ0FBL0I7O0FBQ0EsTUFBTUcsSUFBSSxHQUFHSCxPQUFPLENBQUMsUUFBRCxDQUFwQjs7QUFDQSxJQUFJSSxZQUFZLEdBQUdKLE9BQU8sQ0FBQyw0QkFBRCxDQUExQjs7QUFDQSxJQUFJSyxlQUFlLEdBQUdMLE9BQU8sQ0FBQywwQkFBRCxDQUE3Qjs7QUFDQSxNQUFNTSxrQkFBa0IsR0FBR04sT0FBTyxDQUFDLG1DQUFELENBQWxDOztBQUVBLE1BQU1PLGNBQWMsR0FBR1IsT0FB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cHJlc3MnKTtcclxuY29uc3QgYm9keVBhcnNlciA9IHJlcXVpcmUoJ2JvZHktcGFyc2VyJyk7XHJcbmNvbnN0IHsgY2hlY2tTY2hlbWEgfSA9IHJlcXVpcmUoJ2V4cHJlc3MtdmFsaWRhdG9yJyk7XHJcbmNvbnN0IGNvcnMgPSByZXF1aXJlKCcuL2NvcnMnKTtcclxudmFyIGF1dGhlbnRpY2F0ZSA9IHJlcXVpcmUoJy4uL21pZGRsZXdhcmUvYXV0aGVudGljYXRlJyk7XHJcbnZhciB2YWxpZGF0aW9uUnVsZXMgPSByZXF1aXJlKCcuLi9taWRkbGV3YXJlL3ZhbGlkYXRpb24nKTtcclxuY29uc3QgZW1wbG95ZWVDb250cm9sbGVyID0gcmVxdWlyZSgnLi4vY29udHJvbGxlcnMvZW1wbG95ZWVDb250cm9sbGVyJyk7XHJcblxyXG5jb25zdCBlbXBsb3llZVJvdXRlciA9IGV4cHJlc3MuUm91dGVyKCk7XHJcblxyXG5lbXBsb3llZVJvdXRlci51c2UoYm9keVBhcnNlci5qc29uKCkpO1xyXG5cclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyBcclxuLy8gICAgICAgICAgICAgIEVtcGxveWVlIFJvdXRlc1xyXG4vLyBcclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuZW1wbG95ZWVSb3V0ZXIucm91dGUoJy8nKVxyXG4gICAgLm9wdGlvbnMoY29ycy5jb3JzV2l0aE9wdGlvbnMsIChyZXEsIHJlcykgPT4geyByZXMuc2VuZFN0YXR1cygyMDApOyB9KVxyXG4gICAgLmdldChjb3JzLmNvcnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCBhdXRoZW50aWNhdGUudmVyaWZ5QWRtaW4sICBlbXBsb3llZUNvbnRyb2xsZXIuZ2V0QWxsRW1wbG95ZWVzKVxyXG4gICAgLnBvc3QoY29ycy5jb3JzV2l0aE9wdGlvbnMsYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgZW1wbG95ZWVDb250cm9sbGVyLmFkZEVtcGxveWVlKVxyXG4gICAgLnB1dChjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgcmVzLmVuZCgnUFVUIG9wZXJhdGlvbiBub3Qgc3VwcG9ydGVkIG9uIC9lbXBsb3llZXMnKTtcclxuICAgIH0pXHJcbiAgICAuZGVsZXRlKGNvcnMuY29yc1dpdGhPcHRpb25zLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeUFkbWluLCAgZW1wbG95ZWVDb250cm9sbGVyLmRlbGV0ZUFsbEVtcGxveWVlcyk7XHJcbmVtcGxveWVlUm91dGVyLnJvdXRlKCcvc2VhcmNoJylcclxuICAgIC5vcHRpb25zKGNvcnMuY29yc1dpdGhPcHRpb25zLCAocmVxLCByZXMpID0+IHsgcmVzLnNlbmRTdGF0dXMoMjAwKTsgfSlcclxuICAgIC5wb3N0KGNvcnMuY29yc1dpdGhPcHRpb25zLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeUFkbWluLCBlbXBsb3llZUNvbnRyb2xsZXIuZ2V0QWxsRW1wbG95ZWVzQnlOYW1lKTtcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuLy8gXHJcbi8vICAgICAgICAgICAgICBFbXBsb3llZSBSb3V0ZXMgU3BlY2lmaWVkIGJ5IElEXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG5lbXBsb3llZVJvdXRlci5yb3V0ZSgnLzplbXBsb3llZUlkJylcclxuICAgIC5vcHRpb25zKGNvcnMuY29yc1dpdGhPcHRpb25zLCAocmVxLCByZXMpID0+IHsgcmVzLnNlbmRTdGF0dXMoMjAwKTsgfSlcclxuICAgIC5nZXQoY29ycy5jb3JzLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeUFkbWluLCAgZW1wbG95ZWVDb250cm9sbGVyLmdldEVtcGxveWVlRGV0YWlsc0J5SWQpXHJcbiAgICAucG9zdChjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgcmVzLmVuZCgnUE9TVCBvcGVyYXRpb24gbm90IHN1cHBvcnRlZCBvbiAvZW1wbG95ZWVzLycgKyByZXEucGFyYW1zLmVtcGxveWVlSWQpO1xyXG4gICAgfSlcclxuICAgIC5wdXQoY29ycy5jb3JzV2l0aE9wdGlvbnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCBhdXRoZW50aWNhdGUudmVyaWZ5QWRtaW4sICBlbXBsb3llZUNvbnRyb2xsZXIudXBkYXRlRW1wbG95ZWVEZXRhaWxzQnlJZClcclxuICAgIC5kZWxldGUoY29ycy5jb3JzV2l0aE9wdGlvbnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCBhdXRoZW50aWNhdGUudmVyaWZ5QWRtaW4sICBlbXBsb3llZUNvbnRyb2xsZXIuZGVsZXRlQUVtcGxveWVlQnlJZCk7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IGVtcGxveWVlUm91dGVyOyJdfQ==\",\"originalCode\":\"const express = require('express');\\r\\nconst bodyParser = require('body-parser');\\r\\nconst { checkSchema } = require('express-validator');\\r\\nconst cors = require('./cors');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\nvar validationRules = require('../middleware/validation');\\r\\nconst employeeController = require('../controllers/employeeController');\\r\\n\\r\\nconst employeeRouter = express.Router();\\r\\n\\r\\nemployeeRouter.use(bodyParser.json());\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Employee Routes\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nemployeeRouter.route('/')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.getAllEmployees)\\r\\n .post(cors.corsWithOptions,authenticate.verifyUser, authenticate.verifyAdmin, employeeController.addEmployee)\\r\\n .put(cors.corsWithOptions, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('PUT operation not supported on /employees');\\r\\n })\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.deleteAllEmployees);\\r\\nemployeeRouter.route('/search')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.getAllEmployeesByName);\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Employee Routes Specified by ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nemployeeRouter.route('/:employeeId')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.getEmployeeDetailsById)\\r\\n .post(cors.corsWithOptions, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('POST operation not supported on /employees/' + req.params.employeeId);\\r\\n })\\r\\n .put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.updateEmployeeDetailsById)\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.deleteAEmployeeById);\\r\\n\\r\\nmodule.exports = employeeRouter;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/3b/employeeRouter_3bb83cd3174a28ed34e0f44c133b9b42.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2496\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\employeeRouter.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":9455,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":9452,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":802,\"endOffset\":842,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1082,\"endOffset\":1185,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1369,\"endOffset\":1409,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1828,\"endOffset\":1868,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":2006,\"endOffset\":2135,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const Employees = require('../models/users');\\n\\nconst utils = require('../utils/utils'); // **********************************************************************************\\n// \\n// Employee Operations \\n// \\n// **********************************************************************************\\n\\n/**\\r\\n * @description get details of the assistants\\r\\n * @param {*} req \\r\\n * @param {*} res \\r\\n * @param {*} next \\r\\n * @returns {array} list of employees\\r\\n */\\n\\n\\nconst getAllEmployees = (req, res, next) => {\\n var query = {\\n \\\"role\\\": \\\"moderater\\\"\\n };\\n Employees.find(query).then(employees => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n employees: employees\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst getAllEmployeesByName = (req, res, next) => {\\n var query = {\\n \\\"role\\\": \\\"moderater\\\"\\n }; // if (req.body.similarTo) {\\n // var searchBy = req.body.similarTo || {}\\n // query = { \\\"role\\\": \\\"moderater\\\", $text: { $search: searchBy } }\\n // }\\n\\n if (req.body.similarTo) {\\n var searchBy = req.body.similarTo || {};\\n query = {\\n \\\"role\\\": \\\"moderater\\\",\\n firstname: {\\n $regex: `${searchBy}`,\\n $options: \\\"i\\\"\\n }\\n };\\n }\\n\\n var sortby = req.body.sortBy || {};\\n Employees.find(query).sort(sortby).then(employees => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n employees: employees\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst addEmployee = async (req, res, next) => {\\n const randomPassword = utils.password_generator(10);\\n var employee = {\\n username: req.body.email,\\n firstname: req.body.firstname,\\n lastname: req.body.lastname,\\n email: req.body.email,\\n role: 'moderater'\\n };\\n\\n try {\\n Employees.register(new Employees(employee), randomPassword, (err, employee) => {\\n if (err) {\\n res.statusCode = 403;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: err.message\\n });\\n } else {\\n employee.save((err, employee) => {\\n if (err) {\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Error while Saving new user.'\\n });\\n }\\n\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n email: employee.email,\\n password: randomPassword\\n });\\n });\\n }\\n });\\n } catch (error) {\\n var err = new Error(\\\"Error while registering new user.\\\");\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: err.message\\n });\\n }\\n};\\n\\nconst deleteAllEmployees = (req, res, next) => {\\n Employees.remove({\\n \\\"role\\\": \\\"moderater\\\"\\n }).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json(resp);\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nexports.getAllEmployees = getAllEmployees;\\nexports.getAllEmployeesByName = getAllEmployeesByName;\\nexports.addEmployee = addEmployee;\\nexports.deleteAllEmployees = deleteAllEmployees; // **********************************************************************************\\n// \\n// Employee Operations Specified by ID\\n// \\n// **********************************************************************************\\n\\nconst getEmployeeDetailsById = (req, res, next) => {\\n Employees.findById(req.params.employeeId).then(employee => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n employee: employee\\n });\\n }, err => {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Could not find employee with given ID'\\n });\\n }).catch(err => next(err));\\n};\\n\\nconst updateEmployeeDetailsById = (req, res, next) => {\\n var employee = {\\n username: req.body.email,\\n firstname: req.body.firstname,\\n lastname: req.body.lastname,\\n email: req.body.email,\\n role: 'moderater'\\n };\\n Employees.findByIdAndUpdate(req.params.employeeId, {\\n $set: employee\\n }, {\\n new: true\\n }).then(employee => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n employee: employee\\n });\\n }, err => next(err)).catch(err => {\\n var err = new Error(\\\"Error while updating.\\\");\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: err.message\\n });\\n });\\n};\\n\\nconst deleteAEmployeeById = (req, res, next) => {\\n Employees.findByIdAndRemove(req.params.employeeId).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json(resp);\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nexports.getEmployeeDetailsById = getEmployeeDetailsById;\\nexports.updateEmployeeDetailsById = updateEmployeeDetailsById;\\nexports.deleteAEmployeeById = deleteAEmployeeById;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImVtcGxveWVlQ29udHJvbGxlci5qcyJdLCJuYW1lcyI6WyJFbXBsb3llZXMiLCJyZXF1aXJlIiwidXRpbHMiLCJnZXRBbGxFbXBsb3llZXMiLCJyZXEiLCJyZXMiLCJuZXh0IiwicXVlcnkiLCJmaW5kIiwidGhlbiIsImVtcGxveWVlcyIsInN0YXR1c0NvZGUiLCJzZXRIZWFkZXIiLCJqc29uIiwic3VjY2VzcyIsImVyciIsImNhdGNoIiwiZ2V0QWxsRW1wbG95ZWVzQnlOYW1lIiwiYm9keSIsInNpbWlsYXJUbyIsInNlYXJjaEJ5IiwiZmlyc3RuYW1lIiwiJHJlZ2V4IiwiJG9wdGlvbnMiLCJzb3J0YnkiLCJzb3J0QnkiLCJzb3J0IiwiYWRkRW1wbG95ZWUiLCJyYW5kb21QYXNzd29yZCIsInBhc3N3b3JkX2dlbmVyYXRvciIsImVtcGxveWVlIiwidXNlcm5hbWUiLCJlbWFpbCIsImxhc3RuYW1lIiwicm9sZSIsInJlZ2lzdGVyIiwibWVzc2FnZSIsInNhdmUiLCJwYXNzd29yZCIsImVycm9yIiwiRXJyb3IiLCJkZWxldGVBbGxFbXBsb3llZXMiLCJyZW1vdmUiLCJyZXNwIiwiZXhwb3J0cyIsImdldEVtcGxveWVlRGV0YWlsc0J5SWQiLCJmaW5kQnlJZCIsInBhcmFtcyIsImVtcGxveWVlSWQiLCJ1cGRhdGVFbXBsb3llZURldGFpbHNCeUlkIiwiZmluZEJ5SWRBbmRVcGRhdGUiLCIkc2V0IiwibmV3IiwiZGVsZXRlQUVtcGxveWVlQnlJZCIsImZpbmRCeUlkQW5kUmVtb3ZlIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxTQUFTLEdBQUdDLE9BQU8sQ0FBQyxpQkFBRCxDQUF6Qjs7QUFDQSxNQUFNQyxLQUFLLEdBQUdELE9BQU8sQ0FBQyxnQkFBRCxDQUFyQixDLENBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0EsTUFBTUUsZUFBZSxHQUFHLENBQUNDLEdBQUQsRUFBTUMsR0FBTixF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SSxDQUFDUyxHQUFELENBTHBCLEVBTUtDLEtBTkwsQ0FNWUQsR0FBRCxJQUFTVCxJQUFJLENBQUNTLEdBQUQsQ0FOeEI7QUFPSCxDQVJEOztBQVVBNkIsT0FBTyxDQUFDQyxzQkFBUixHQUFpQ0Esc0JBQWpDO0FBQ0FELE9BQU8sQ0FBQ0sseUJBQVIsR0FBb0NBLHlCQUFwQztBQUNBTCxPQUFPLENBQUNTLG1CQUFSLEdBQThCQSxtQkFBOUIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBFbXBsb3llZXMgPSByZXF1aXJlKCcuLi9tb2RlbHMvdXNlcnMnKTtcclxuY29uc3QgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscy91dGlscycpO1xyXG5cclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyBcclxuLy8gICAgICAgICAgICAgIEVtcGxveWVlIE9wZXJhdGlvbnMgXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG4vKipcclxuICogQGRlc2NyaXB0aW9uIGdldCBkZXRhaWxzIG9mIHRoZSBhc3Npc3RhbnRzXHJcbiAqIEBwYXJhbSB7Kn0gcmVxIFxyXG4gKiBAcGFyYW0geyp9IHJlcyBcclxuICogQHBhcmFtIHsqfSBuZXh0IFxyXG4gKiBAcmV0dXJucyB7YXJyYXl9IGxpc3Qgb2YgZW1wbG95ZWVzXHJcbiAqL1xyXG5jb25zdCBnZXRBbGxFbXBsb3llZXMgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHZhciBxdWVyeSA9IHsgXCJyb2xlXCI6IFwibW9kZXJhdGVyXCIgfTtcclxuICAgIEVtcGxveWVlcy5maW5kKHF1ZXJ5KVxyXG4gICAgICAgIC50aGVuKChlbXBsb3llZXMpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgZW1wbG95ZWVzOiBlbXBsb3llZXMgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpO1xyXG59XHJcblxyXG5jb25zdCBnZXRBbGxFbXBsb3llZXNCeU5hbWUgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHZhciBxdWVyeSA9IHsgXCJyb2xlXCI6IFwibW9kZXJhdGVyXCIgfTtcclxuICAgIC8vIGlmIChyZXEuYm9keS5zaW1pbGFyVG8pIHtcclxuICAgIC8vICAgICB2YXIgc2VhcmNoQnkgPSByZXEuYm9keS5zaW1pbGFyVG8gfHwge31cclxuICAgIC8vICAgICBxdWVyeSA9IHsgXCJyb2xlXCI6IFwibW9kZXJhdGVyXCIsICR0ZXh0OiB7ICRzZWFyY2g6IHNlYXJjaEJ5IH0gfVxyXG4gICAgLy8gfVxyXG4gICAgaWYgKHJlcS5ib2R5LnNpbWlsYXJUbykge1xyXG4gICAgICAgIHZhciBzZWFyY2hCeSA9IHJlcS5ib2R5LnNpbWlsYXJUbyB8fCB7fVxyXG4gICAgICAgIHF1ZXJ5ID0geyBcInJvbGVcIjogXCJtb2RlcmF0ZXJcIiwgZmlyc3RuYW1lOiB7ICRyZWdleDogYCR7c2VhcmNoQnl9YCwgJG9wdGlvbnM6IFwiaVwiIH0gfVxyXG4gICAgfVxyXG4gICAgdmFyIHNvcnRieSA9IHJlcS5ib2R5LnNvcnRCeSB8fCB7fTtcclxuICAgIEVtcGxveWVlcy5maW5kKHF1ZXJ5KS5zb3J0KHNvcnRieSlcclxuICAgICAgICAudGhlbigoZW1wbG95ZWVzKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIGVtcGxveWVlczogZW1wbG95ZWVzIH0pO1xyXG4gICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuY29uc3QgYWRkRW1wbG95ZWUgPSBhc3luYyAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIGNvbnN0IHJhbmRvbVBhc3N3b3JkID0gdXRpbHMucGFzc3dvcmRfZ2VuZXJhdG9yKDEwKTtcclxuICAgIHZhciBlbXBsb3llZSA9IHtcclxuICAgICAgICB1c2VybmFtZTogcmVxLmJvZHkuZW1haWwsXHJcbiAgICAgICAgZmlyc3RuYW1lOiByZXEuYm9keS5maXJzdG5hbWUsXHJcbiAgICAgICAgbGFzdG5hbWU6IHJlcS5ib2R5Lmxhc3RuYW1lLFxyXG4gICAgICAgIGVtYWlsOiByZXEuYm9keS5lbWFpbCxcclxuICAgICAgICByb2xlOiAnbW9kZXJhdGVyJ1xyXG4gICAgfVxyXG4gICAgdHJ5IHtcclxuICAgICAgICBFbXBsb3llZXMucmVnaXN0ZXIobmV3IEVtcGxveWVlcyhlbXBsb3llZSksXHJcbiAgICAgICAgICAgIHJhbmRvbVBhc3N3b3JkLCAoZXJyLCBlbXBsb3llZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNDAzO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogZXJyLm1lc3NhZ2UgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBlbXBsb3llZS5zYXZlKChlcnIsIGVtcGxveWVlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNTAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IGZhbHNlLCBtZXNzYWdlOiAnRXJyb3Igd2hpbGUgU2F2aW5nIG5ldyB1c2VyLicgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgZW1haWw6IGVtcGxveWVlLmVtYWlsLCBwYXNzd29yZDogcmFuZG9tUGFzc3dvcmQgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICB2YXIgZXJyID0gbmV3IEVycm9yKFwiRXJyb3Igd2hpbGUgcmVnaXN0ZXJpbmcgbmV3IHVzZXIuXCIpO1xyXG4gICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNTAwO1xyXG4gICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogZXJyLm1lc3NhZ2UgfSk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmNvbnN0IGRlbGV0ZUFsbEVtcGxveWVlcyA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgRW1wbG95ZWVzLnJlbW92ZSh7IFwicm9sZVwiOiBcIm1vZGVyYXRlclwiIH0pXHJcbiAgICAgICAgLnRoZW4oKHJlc3ApID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHJlc3ApO1xyXG4gICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuZXhwb3J0cy5nZXRBbGxFbXBsb3llZXMgPSBnZXRBbGxFbXBsb3llZXM7XHJcbmV4cG9ydHMuZ2V0QWxsRW1wbG95ZWVzQnlOYW1lID0gZ2V0QWxsRW1wbG95ZWVzQnlOYW1lO1xyXG5leHBvcnRzLmFkZEVtcGxveWVlID0gYWRkRW1wbG95ZWU7XHJcbmV4cG9ydHMuZGVsZXRlQWxsRW1wbG95ZWVzID0gZGVsZXRlQWxsRW1wbG95ZWVzO1xyXG5cclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyBcclxuLy8gICAgICAgICAgICAgIEVtcGxveWVlIE9wZXJhdGlvbnMgU3BlY2lmaWVkIGJ5IElEXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG5jb25zdCBnZXRFbXBsb3llZURldGFpbHNCeUlkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICBFbXBsb3llZXMuZmluZEJ5SWQocmVxLnBhcmFtcy5lbXBsb3llZUlkKVxyXG4gICAgICAgIC50aGVuKChlbXBsb3llZSkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCBlbXBsb3llZTogZW1wbG95ZWUgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwNDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogJ0NvdWxkIG5vdCBmaW5kIGVtcGxveWVlIHdpdGggZ2l2ZW4gSUQnIH0pO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IG5leHQoZXJyKSk7XHJcbn1cclxuXHJcbmNvbnN0IHVwZGF0ZUVtcGxveWVlRGV0YWlsc0J5SWQgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHZhciBlbXBsb3llZSA9IHtcclxuICAgICAgICB1c2VybmFtZTogcmVxLmJvZHkuZW1haWwsXHJcbiAgICAgICAgZmlyc3RuYW1lOiByZXEuYm9keS5maXJzdG5hbWUsXHJcbiAgICAgICAgbGFzdG5hbWU6IHJlcS5ib2R5Lmxhc3RuYW1lLFxyXG4gICAgICAgIGVtYWlsOiByZXEuYm9keS5lbWFpbCxcclxuICAgICAgICByb2xlOiAnbW9kZXJhdGVyJ1xyXG4gICAgfVxyXG4gICAgRW1wbG95ZWVzLmZpbmRCeUlkQW5kVXBkYXRlKHJlcS5wYXJhbXMuZW1wbG95ZWVJZCwge1xyXG4gICAgICAgICRzZXQ6IGVtcGxveWVlXHJcbiAgICB9LCB7IG5ldzogdHJ1ZSB9KVxyXG4gICAgICAgIC50aGVuKChlbXBsb3llZSkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCBlbXBsb3llZTogZW1wbG95ZWUgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoXCJFcnJvciB3aGlsZSB1cGRhdGluZy5cIik7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNTAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IGZhbHNlLCBtZXNzYWdlOiBlcnIubWVzc2FnZSB9KTtcclxuICAgICAgICB9KTtcclxufVxyXG5cclxuY29uc3QgZGVsZXRlQUVtcGxveWVlQnlJZCA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgRW1wbG95ZWVzLmZpbmRCeUlkQW5kUmVtb3ZlKHJlcS5wYXJhbXMuZW1wbG95ZWVJZClcclxuICAgICAgICAudGhlbigocmVzcCkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24ocmVzcCk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpO1xyXG59XHJcblxyXG5leHBvcnRzLmdldEVtcGxveWVlRGV0YWlsc0J5SWQgPSBnZXRFbXBsb3llZURldGFpbHNCeUlkO1xyXG5leHBvcnRzLnVwZGF0ZUVtcGxveWVlRGV0YWlsc0J5SWQgPSB1cGRhdGVFbXBsb3llZURldGFpbHNCeUlkO1xyXG5leHBvcnRzLmRlbGV0ZUFFbXBsb3llZUJ5SWQgPSBkZWxldGVBRW1wbG95ZWVCeUlkOyJdfQ==\",\"originalCode\":\"const Employees = require('../models/users');\\r\\nconst utils = require('../utils/utils');\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Employee Operations \\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\n/**\\r\\n * @description get details of the assistants\\r\\n * @param {*} req \\r\\n * @param {*} res \\r\\n * @param {*} next \\r\\n * @returns {array} list of employees\\r\\n */\\r\\nconst getAllEmployees = (req, res, next) => {\\r\\n var query = { \\\"role\\\": \\\"moderater\\\" };\\r\\n Employees.find(query)\\r\\n .then((employees) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, employees: employees });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst getAllEmployeesByName = (req, res, next) => {\\r\\n var query = { \\\"role\\\": \\\"moderater\\\" };\\r\\n // if (req.body.similarTo) {\\r\\n // var searchBy = req.body.similarTo || {}\\r\\n // query = { \\\"role\\\": \\\"moderater\\\", $text: { $search: searchBy } }\\r\\n // }\\r\\n if (req.body.similarTo) {\\r\\n var searchBy = req.body.similarTo || {}\\r\\n query = { \\\"role\\\": \\\"moderater\\\", firstname: { $regex: `${searchBy}`, $options: \\\"i\\\" } }\\r\\n }\\r\\n var sortby = req.body.sortBy || {};\\r\\n Employees.find(query).sort(sortby)\\r\\n .then((employees) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, employees: employees });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst addEmployee = async (req, res, next) => {\\r\\n const randomPassword = utils.password_generator(10);\\r\\n var employee = {\\r\\n username: req.body.email,\\r\\n firstname: req.body.firstname,\\r\\n lastname: req.body.lastname,\\r\\n email: req.body.email,\\r\\n role: 'moderater'\\r\\n }\\r\\n try {\\r\\n Employees.register(new Employees(employee),\\r\\n randomPassword, (err, employee) => {\\r\\n if (err) {\\r\\n res.statusCode = 403;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: err.message });\\r\\n }\\r\\n else {\\r\\n employee.save((err, employee) => {\\r\\n if (err) {\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Error while Saving new user.' });\\r\\n }\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, email: employee.email, password: randomPassword });\\r\\n });\\r\\n }\\r\\n });\\r\\n } catch (error) {\\r\\n var err = new Error(\\\"Error while registering new user.\\\");\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: err.message });\\r\\n }\\r\\n}\\r\\n\\r\\nconst deleteAllEmployees = (req, res, next) => {\\r\\n Employees.remove({ \\\"role\\\": \\\"moderater\\\" })\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json(resp);\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nexports.getAllEmployees = getAllEmployees;\\r\\nexports.getAllEmployeesByName = getAllEmployeesByName;\\r\\nexports.addEmployee = addEmployee;\\r\\nexports.deleteAllEmployees = deleteAllEmployees;\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Employee Operations Specified by ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nconst getEmployeeDetailsById = (req, res, next) => {\\r\\n Employees.findById(req.params.employeeId)\\r\\n .then((employee) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, employee: employee });\\r\\n }, (err) => {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Could not find employee with given ID' });\\r\\n })\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst updateEmployeeDetailsById = (req, res, next) => {\\r\\n var employee = {\\r\\n username: req.body.email,\\r\\n firstname: req.body.firstname,\\r\\n lastname: req.body.lastname,\\r\\n email: req.body.email,\\r\\n role: 'moderater'\\r\\n }\\r\\n Employees.findByIdAndUpdate(req.params.employeeId, {\\r\\n $set: employee\\r\\n }, { new: true })\\r\\n .then((employee) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, employee: employee });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => {\\r\\n var err = new Error(\\\"Error while updating.\\\");\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: err.message });\\r\\n });\\r\\n}\\r\\n\\r\\nconst deleteAEmployeeById = (req, res, next) => {\\r\\n Employees.findByIdAndRemove(req.params.employeeId)\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json(resp);\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nexports.getEmployeeDetailsById = getEmployeeDetailsById;\\r\\nexports.updateEmployeeDetailsById = updateEmployeeDetailsById;\\r\\nexports.deleteAEmployeeById = deleteAEmployeeById;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/6e/employeeController_6ee2f5b4e4eea073cb5625109f63cb82.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2497\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\employeeController.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":22470,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":22467,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"getAllEmployees\",\"ranges\":[{\"startOffset\":577,\"endOffset\":889,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getAllEmployeesByName\",\"ranges\":[{\"startOffset\":922,\"endOffset\":1648,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"addEmployee\",\"ranges\":[{\"startOffset\":1671,\"endOffset\":3020,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1998,\"endOffset\":2777,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":2250,\"endOffset\":2761,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"deleteAllEmployees\",\"ranges\":[{\"startOffset\":3050,\"endOffset\":3287,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getEmployeeDetailsById\",\"ranges\":[{\"startOffset\":3736,\"endOffset\":4197,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"updateEmployeeDetailsById\",\"ranges\":[{\"startOffset\":4234,\"endOffset\":4944,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"deleteAEmployeeById\",\"ranges\":[{\"startOffset\":4975,\"endOffset\":5215,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const multer = require('multer');\\n\\nconst {\\n v4: uuidv4\\n} = require('uuid');\\n\\nlet path = require('path');\\n\\nconst password_generator = len => {\\n var length = len ? len : 10;\\n var string = \\\"abcdefghijklmnopqrstuvwxyz\\\"; //to upper \\n\\n var numeric = '0123456789';\\n var punctuation = '!@#$%^&*()_+~`|}{[]\\\\:;?><,./-=';\\n var password = \\\"\\\";\\n var character = \\\"\\\";\\n var crunch = true;\\n\\n while (password.length < length) {\\n entity1 = Math.ceil(string.length * Math.random() * Math.random());\\n entity2 = Math.ceil(numeric.length * Math.random() * Math.random());\\n entity3 = Math.ceil(punctuation.length * Math.random() * Math.random());\\n hold = string.charAt(entity1);\\n hold = password.length % 2 == 0 ? hold.toUpperCase() : hold;\\n character += hold;\\n character += numeric.charAt(entity2);\\n character += punctuation.charAt(entity3);\\n password = character;\\n }\\n\\n password = password.split('').sort(function () {\\n return 0.5 - Math.random();\\n }).join('');\\n return password.substr(0, length);\\n};\\n\\nexports.password_generator = password_generator;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInV0aWxzLmpzIl0sIm5hbWVzIjpbIm11bHRlciIsInJlcXVpcmUiLCJ2NCIsInV1aWR2NCIsInBhdGgiLCJwYXNzd29yZF9nZW5lcmF0b3IiLCJsZW4iLCJsZW5ndGgiLCJzdHJpbmciLCJudW1lcmljIiwicHVuY3R1YXRpb24iLCJwYXNzd29yZCIsImNoYXJhY3RlciIsImNydW5jaCIsImVudGl0eTEiLCJNYXRoIiwiY2VpbCIsInJhbmRvbSIsImVudGl0eTIiLCJlbnRpdHkzIiwiaG9sZCIsImNoYXJBdCIsInRvVXBwZXJDYXNlIiwic3BsaXQiLCJzb3J0Iiwiam9pbiIsInN1YnN0ciIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE1BQU0sR0FBR0MsT0FBTyxDQUFDLFFBQUQsQ0FBdEI7O0FBQ0EsTUFBTTtBQUFFQyxFQUFBQSxFQUFFLEVBQUVDO0FBQU4sSUFBaUJGLE9BQU8sQ0FBQyxNQUFELENBQTlCOztBQUNBLElBQUlHLElBQUksR0FBR0gsT0FBTyxDQUFDLE1BQUQsQ0FBbEI7O0FBRUEsTUFBTUksa0JBQWtCLEdBQUlDLEdBQUQsSUFBUztBQUNoQyxNQUFJQyxNQUFNLEdBQUlELEdBQUQsR0FBU0EsR0FBVCxHQUFpQixFQUE5QjtBQUNBLE1BQUlFLE1BQU0sR0FBRyw0QkFBYixDQUZnQyxDQUVXOztBQUMzQyxNQUFJQyxPQUFPLEdBQUcsWUFBZDtBQUNBLE1BQUlDLFdBQVcsR0FBRyxnQ0FBbEI7QUFDQSxNQUFJQyxRQUFRLEdBQUcsRUFBZjtBQUNBLE1BQUlDLFNBQVMsR0FBRyxFQUFoQjtBQUNBLE1BQUlDLE1BQU0sR0FBRyxJQUFiOztBQUNBLFNBQU9GLFFBQVEsQ0FBQ0osTUFBVCxHQUFrQkEsTUFBekIsRUFBaUM7QUFDN0JPLElBQUFBLE9BQU8sR0FBR0MsSUFBSSxDQUFDQyxJQUFMLENBQVVSLE1BQU0sQ0FBQ0QsTUFBUCxHQUFnQlEsSUFBSSxDQUFDRSxNQUFMLEVBQWhCLEdBQWdDRixJQUFJLENBQUNFLE1BQUwsRUFBMUMsQ0FBVjtBQUNBQyxJQUFBQSxPQUFPLEdBQUdILElBQUksQ0FBQ0MsSUFBTCxDQUFVUCxPQUFPLENBQUNGLE1BQVIsR0FBaUJRLElBQUksQ0FBQ0UsTUFBTCxFQUFqQixHQUFpQ0YsSUFBSSxDQUFDRSxNQUFMLEVBQTNDLENBQVY7QUFDQUUsSUFBQUEsT0FBTyxHQUFHSixJQUFJLENBQUNDLElBQUwsQ0FBVU4sV0FBVyxDQUFDSCxNQUFaLEdBQXFCUSxJQUFJLENBQUNFLE1BQUwsRUFBckIsR0FBcUNGLElBQUksQ0FBQ0UsTUFBTCxFQUEvQyxDQUFWO0FBQ0FHLElBQUFBLElBQUksR0FBR1osTUFBTSxDQUFDYSxNQUFQLENBQWNQLE9BQWQsQ0FBUDtBQUNBTSxJQUFBQSxJQUFJLEdBQUlULFFBQVEsQ0FBQ0osTUFBVCxHQUFrQixDQUFsQixJQUF1QixDQUF4QixHQUE4QmEsSUFBSSxDQUFDRSxXQUFMLEVBQTlCLEdBQXFERixJQUE1RDtBQUNBUixJQUFBQSxTQUFTLElBQUlRLElBQWI7QUFDQVIsSUFBQUEsU0FBUyxJQUFJSCxPQUFPLENBQUNZLE1BQVIsQ0FBZUgsT0FBZixDQUFiO0FBQ0FOLElBQUFBLFNBQVMsSUFBSUYsV0FBVyxDQUFDVyxNQUFaLENBQW1CRixPQUFuQixDQUFiO0FBQ0FSLElBQUFBLFFBQVEsR0FBR0MsU0FBWDtBQUNIOztBQUNERCxFQUFBQSxRQUFRLEdBQUdBLFFBQVEsQ0FBQ1ksS0FBVCxDQUFlLEVBQWYsRUFBbUJDLElBQW5CLENBQXdCLFlBQVk7QUFBRSxXQUFPLE1BQU1ULElBQUksQ0FBQ0UsTUFBTCxFQUFiO0FBQTRCLEdBQWxFLEVBQW9FUSxJQUFwRSxDQUF5RSxFQUF6RSxDQUFYO0FBQ0EsU0FBT2QsUUFBUSxDQUFDZSxNQUFULENBQWdCLENBQWhCLEVBQW1CbkIsTUFBbkIsQ0FBUDtBQUNILENBckJEOztBQXVCQW9CLE9BQU8sQ0FBQ3RCLGtCQUFSLEdBQTZCQSxrQkFBN0IiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBtdWx0ZXIgPSByZXF1aXJlKCdtdWx0ZXInKTtcclxuY29uc3QgeyB2NDogdXVpZHY0IH0gPSByZXF1aXJlKCd1dWlkJyk7XHJcbmxldCBwYXRoID0gcmVxdWlyZSgncGF0aCcpO1xyXG5cclxuY29uc3QgcGFzc3dvcmRfZ2VuZXJhdG9yID0gKGxlbikgPT4ge1xyXG4gICAgdmFyIGxlbmd0aCA9IChsZW4pID8gKGxlbikgOiAoMTApO1xyXG4gICAgdmFyIHN0cmluZyA9IFwiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpcIjsgLy90byB1cHBlciBcclxuICAgIHZhciBudW1lcmljID0gJzAxMjM0NTY3ODknO1xyXG4gICAgdmFyIHB1bmN0dWF0aW9uID0gJyFAIyQlXiYqKClfK35gfH17W11cXDo7Pz48LC4vLT0nO1xyXG4gICAgdmFyIHBhc3N3b3JkID0gXCJcIjtcclxuICAgIHZhciBjaGFyYWN0ZXIgPSBcIlwiO1xyXG4gICAgdmFyIGNydW5jaCA9IHRydWU7XHJcbiAgICB3aGlsZSAocGFzc3dvcmQubGVuZ3RoIDwgbGVuZ3RoKSB7XHJcbiAgICAgICAgZW50aXR5MSA9IE1hdGguY2VpbChzdHJpbmcubGVuZ3RoICogTWF0aC5yYW5kb20oKSAqIE1hdGgucmFuZG9tKCkpO1xyXG4gICAgICAgIGVudGl0eTIgPSBNYXRoLmNlaWwobnVtZXJpYy5sZW5ndGggKiBNYXRoLnJhbmRvbSgpICogTWF0aC5yYW5kb20oKSk7XHJcbiAgICAgICAgZW50aXR5MyA9IE1hdGguY2VpbChwdW5jdHVhdGlvbi5sZW5ndGggKiBNYXRoLnJhbmRvbSgpICogTWF0aC5yYW5kb20oKSk7XHJcbiAgICAgICAgaG9sZCA9IHN0cmluZy5jaGFyQXQoZW50aXR5MSk7XHJcbiAgICAgICAgaG9sZCA9IChwYXNzd29yZC5sZW5ndGggJSAyID09IDApID8gKGhvbGQudG9VcHBlckNhc2UoKSkgOiAoaG9sZCk7XHJcbiAgICAgICAgY2hhcmFjdGVyICs9IGhvbGQ7XHJcbiAgICAgICAgY2hhcmFjdGVyICs9IG51bWVyaWMuY2hhckF0KGVudGl0eTIpO1xyXG4gICAgICAgIGNoYXJhY3RlciArPSBwdW5jdHVhdGlvbi5jaGFyQXQoZW50aXR5Myk7XHJcbiAgICAgICAgcGFzc3dvcmQgPSBjaGFyYWN0ZXI7XHJcbiAgICB9XHJcbiAgICBwYXNzd29yZCA9IHBhc3N3b3JkLnNwbGl0KCcnKS5zb3J0KGZ1bmN0aW9uICgpIHsgcmV0dXJuIDAuNSAtIE1hdGgucmFuZG9tKCkgfSkuam9pbignJyk7XHJcbiAgICByZXR1cm4gcGFzc3dvcmQuc3Vic3RyKDAsIGxlbmd0aCk7XHJcbn1cclxuXHJcbmV4cG9ydHMucGFzc3dvcmRfZ2VuZXJhdG9yID0gcGFzc3dvcmRfZ2VuZXJhdG9yOyJdfQ==\",\"originalCode\":\"const multer = require('multer');\\r\\nconst { v4: uuidv4 } = require('uuid');\\r\\nlet path = require('path');\\r\\n\\r\\nconst password_generator = (len) => {\\r\\n var length = (len) ? (len) : (10);\\r\\n var string = \\\"abcdefghijklmnopqrstuvwxyz\\\"; //to upper \\r\\n var numeric = '0123456789';\\r\\n var punctuation = '!@#$%^&*()_+~`|}{[]\\\\:;?><,./-=';\\r\\n var password = \\\"\\\";\\r\\n var character = \\\"\\\";\\r\\n var crunch = true;\\r\\n while (password.length < length) {\\r\\n entity1 = Math.ceil(string.length * Math.random() * Math.random());\\r\\n entity2 = Math.ceil(numeric.length * Math.random() * Math.random());\\r\\n entity3 = Math.ceil(punctuation.length * Math.random() * Math.random());\\r\\n hold = string.charAt(entity1);\\r\\n hold = (password.length % 2 == 0) ? (hold.toUpperCase()) : (hold);\\r\\n character += hold;\\r\\n character += numeric.charAt(entity2);\\r\\n character += punctuation.charAt(entity3);\\r\\n password = character;\\r\\n }\\r\\n password = password.split('').sort(function () { return 0.5 - Math.random() }).join('');\\r\\n return password.substr(0, length);\\r\\n}\\r\\n\\r\\nexports.password_generator = password_generator;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/12/utils_12501e91058955e05c348a4b2ab3e6a2.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2498\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\utils\\\\utils.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":5216,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":5213,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"password_generator\",\"ranges\":[{\"startOffset\":223,\"endOffset\":1107,\"count\":2}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1008,\"endOffset\":1057,\"count\":60}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const express = require('express');\\n\\nconst bodyParser = require('body-parser');\\n\\nconst cors = require('./cors');\\n\\nconst {\\n checkSchema\\n} = require('express-validator');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nvar validationRules = require('../middleware/validation');\\n\\nconst placeController = require('../controllers/placeController');\\n\\nconst visitingPlaceRouter = express.Router();\\nvisitingPlaceRouter.use(bodyParser.json()); // **********************************************************************************\\n// Visiting Place Routes\\n// **********************************************************************************\\n\\nvisitingPlaceRouter.route('/').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, placeController.getAllVisitingPlaces).post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.addVisitingPlace).put(cors.corsWithOptions, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('PUT operation not supported on /visitingPlaces');\\n}).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.deleteAllVisitingPlaces);\\nvisitingPlaceRouter.route('/search').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).post(cors.corsWithOptions, authenticate.verifyUser, placeController.getAllVisitingPlacesByName); // **********************************************************************************\\n// \\n// Visiting Place Routes On ID\\n// \\n// **********************************************************************************\\n\\nvisitingPlaceRouter.route('/:visitingPlaceId').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, placeController.getVisitingPlaceDetailsById).post(cors.corsWithOptions, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('POST operation not supported on /visitingPlaces/' + req.params.visitingPlaceId);\\n}).put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.updateVisitingPlaceDetailsById).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.deleteAVisitingPlaceById);\\nmodule.exports = visitingPlaceRouter;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBsYWNlUm91dGVyLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwiYm9keVBhcnNlciIsImNvcnMiLCJjaGVja1NjaGVtYSIsImF1dGhlbnRpY2F0ZSIsInZhbGlkYXRpb25SdWxlcyIsInBsYWNlQ29udHJvbGxlciIsInZpc2l0aW5nUGxhY2VSb3V0ZXIiLCJSb3V0ZXIiLCJ1c2UiLCJqc29uIiwicm91dGUiLCJvcHRpb25zIiwiY29yc1dpdGhPcHRpb25zIiwicmVxIiwicmVzIiwic2VuZFN0YXR1cyIsImdldCIsInZlcmlmeVVzZXIiLCJnZXRBbGxWaXNpdGluZ1BsYWNlcyIsInBvc3QiLCJ2ZXJpZnlBZG1pbiIsImFkZFZpc2l0aW5nUGxhY2UiLCJwdXQiLCJuZXh0Iiwic3RhdHVzQ29kZSIsImVuZCIsImRlbGV0ZSIsImRlbGV0ZUFsbFZpc2l0aW5nUGxhY2VzIiwiZ2V0QWxsVmlzaXRpbmdQbGFjZXNCeU5hbWUiLCJnZXRWaXNpdGluZ1BsYWNlRGV0YWlsc0J5SWQiLCJwYXJhbXMiLCJ2aXNpdGluZ1BsYWNlSWQiLCJ1cGRhdGVWaXNpdGluZ1BsYWNlRGV0YWlsc0J5SWQiLCJkZWxldGVBVmlzaXRpbmdQbGFjZUJ5SWQiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxPQUFPLEdBQUdDLE9BQU8sQ0FBQyxTQUFELENBQXZCOztBQUNBLE1BQU1DLFVBQVUsR0FBR0QsT0FBTyxDQUFDLGFBQUQsQ0FBMUI7O0FBRUEsTUFBTUUsSUFBSSxHQUFHRixPQUFPLENBQUMsUUFBRCxDQUFwQjs7QUFDQSxNQUFNO0FBQUVHLEVBQUFBO0FBQUYsSUFBa0JILE9BQU8sQ0FBQyxtQkFBRCxDQUEvQjs7QUFDQSxJQUFJSSxZQUFZLEdBQUdKLE9BQU8sQ0FBQyw0QkFBRCxDQUExQjs7QUFDQSxJQUFJSyxlQUFlLEdBQUdMLE9BQU8sQ0FBQywwQkFBRCxDQUE3Qjs7QUFDQSxNQUFNTSxlQUFlLEdBQUdOLE9BQU8sQ0FBQyxnQ0FBRCxDQUEvQjs7QUFFQSxNQUFNTyxtQkFBbUIsR0FBR1IsT0FBTyxDQUFDUyxNQUFSLEVBQTVCO0FBRUFELG1CQUFtQixDQUFDRSxHQUFwQixDQUF3QlIsVUFBVSxDQUFDUyxJQUFYLEVBQXhCLEUsQ0FFQTtBQUVBO0FBRUE7O0FBRUFILG1CQUFtQixDQUFDSSxLQUFwQixDQUEwQixHQUExQixFQUNLQyxPQURMLENBQ2FWLElBQUksQ0FBQ1csZUFEbEIsRUFDbUMsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEtBQWM7QUFBRUEsRUFBQUEsR0FBRyxDQUFDQyxVQUFKLENBQWUsR0FBZjtBQUFzQixDQUR6RSxFQUVLQyxHQUZMLENBRVNmLElBQUksQ0FBQ0EsSUFGZCxFQUVvQkUsWUFBWSxDQUFDYyxVQUZqQyxFQUU2Q1osZUFBZSxDQUFDYSxvQkFGN0QsRUFHS0MsSUFITCxDQUdVbEIsSUFBSSxDQUFDVyxlQUhmLEVBR2dDVCxZQUFZLENBQUNjLFVBSDdDLEVBR3lEZCxZQUFZLENBQUNpQixXQUh0RSxFQUdtRmYsZUFBZSxDQUFDZ0IsZ0JBSG5HLEVBSUtDLEdBSkwsQ0FJU3JCLElBQUksQ0FBQ1csZUFKZCxFQUkrQixDQUFDQyxHQUFELEVBQU1DLEdBQU4sRUFBV1MsSUFBWCxLQUFvQjtBQUMzQ1QsRUFBQUEsR0FBRyxDQUFDVSxVQUFKLEdBQWlCLEdBQWpCO0FBQ0FWLEVBQUFBLEdBQUcsQ0FBQ1csR0FBSixDQUFRLGdEQUFSO0FBQ0gsQ0FQTCxFQVFLQyxNQVJMLENBUVl6QixJQUFJLENBQUNXLGVBUmpCLEVBUWtDVCxZQUFZLENBQUNjLFVBUi9DLEVBUTJEZCxZQUFZLENBQUNpQixXQVJ4RSxFQVFxRmYsZUFBZSxDQUFDc0IsdUJBUnJHO0FBU0FyQixtQkFBbUIsQ0FBQ0ksS0FBcEIsQ0FBMEIsU0FBMUIsRUFDS0MsT0FETCxDQUNhVixJQUFJLENBQUNXLGVBRGxCLEVBQ21DLENBQUNDLEdBQUQsRUFBTUMsR0FBTixLQUFjO0FBQUVBLEVBQUFBLEdBQUcsQ0FBQ0MsVUFBSixDQUFlLEdBQWY7QUFBc0IsQ0FEekUsRUFFS0ksSUFGTCxDQUVVbEIsSUFBSSxDQUFDVyxlQUZmLEVBRWdDVCxZQUFZLENBQUNjLFVBRjdDLEVBRXlEWixlQUFlLENBQUN1QiwwQkFGekUsRSxDQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUF0QixtQkFBbUIsQ0FBQ0ksS0FBcEIsQ0FBMEIsbUJBQTFCLEVBQ0tDLE9BREwsQ0FDYVYsSUFBSSxDQUFDVyxlQURsQixFQUNtQyxDQUFDQyxHQUFELEVBQU1DLEdBQU4sS0FBYztBQUFFQSxFQUFBQSxHQUFHLENBQUNDLFVBQUosQ0FBZSxHQUFmO0FBQXNCLENBRHpFLEVBRUtDLEdBRkwsQ0FFU2YsSUFBSSxDQUFDQSxJQUZkLEVBRW9CRSxZQUFZLENBQUNjLFVBRmpDLEVBRTZDWixlQUFlLENBQUN3QiwyQkFGN0QsRUFHS1YsSUFITCxDQUdVbEIsSUFBSSxDQUFDVyxlQUhmLEVBR2dDLENBQUNDLEdBQUQsRUFBTUMsR0FBTixFQUFXUyxJQUFYLEtBQW9CO0FBQzVDVCxFQUFBQSxHQUFHLENBQUNVLFVBQUosR0FBaUIsR0FBakI7QUFDQVYsRUFBQUEsR0FBRyxDQUFDVyxHQUFKLENBQVEscURBQXFEWixHQUFHLENBQUNpQixNQUFKLENBQVdDLGVBQXhFO0FBQ0gsQ0FOTCxFQU9LVCxHQVBMLENBT1NyQixJQUFJLENBQUNXLGVBUGQsRUFPK0JULFlBQVksQ0FBQ2MsVUFQNUMsRUFPd0RkLFlBQVksQ0FBQ2lCLFdBUHJFLEVBT2tGZixlQUFlLENBQUMyQiw4QkFQbEcsRUFRS04sTUFSTCxDQVFZekIsSUFBSSxDQUFDVyxlQVJqQixFQVFrQ1QsWUFBWSxDQUFDYyxVQVIvQyxFQVEyRGQsWUFBWSxDQUFDaUIsV0FSeEUsRUFRcUZmLGVBQWUsQ0FBQzRCLHdCQVJyRztBQVVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUI3QixtQkFBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBleHByZXNzID0gcmVxdWlyZSgnZXhwcmVzcycpO1xyXG5jb25zdCBib2R5UGFyc2VyID0gcmVxdWlyZSgnYm9keS1wYXJzZXInKTtcclxuXHJcbmNvbnN0IGNvcnMgPSByZXF1aXJlKCcuL2NvcnMnKTtcclxuY29uc3QgeyBjaGVja1NjaGVtYSB9ID0gcmVxdWlyZSgnZXhwcmVzcy12YWxpZGF0b3InKTtcclxudmFyIGF1dGhlbnRpY2F0ZSA9IHJlcXVpcmUoJy4uL21pZGRsZXdhcmUvYXV0aGVudGljYXRlJyk7XHJcbnZhciB2YWxpZGF0aW9uUnVsZXMgPSByZXF1aXJlKCcuLi9taWRkbGV3YXJlL3ZhbGlkYXRpb24nKTtcclxuY29uc3QgcGxhY2VDb250cm9sbGVyID0gcmVxdWlyZSgnLi4vY29udHJvbGxlcnMvcGxhY2VDb250cm9sbGVyJyk7XHJcblxyXG5jb25zdCB2aXNpdGluZ1BsYWNlUm91dGVyID0gZXhwcmVzcy5Sb3V0ZXIoKTtcclxuXHJcbnZpc2l0aW5nUGxhY2VSb3V0ZXIudXNlKGJvZHlQYXJzZXIuanNvbigpKTtcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbi8vICAgICAgICAgICAgICBWaXNpdGluZyBQbGFjZSBSb3V0ZXNcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbnZpc2l0aW5nUGxhY2VSb3V0ZXIucm91dGUoJy8nKVxyXG4gICAgLm9wdGlvbnMoY29ycy5jb3JzV2l0aE9wdGlvbnMsIChyZXEsIHJlcykgPT4geyByZXMuc2VuZFN0YXR1cygyMDApOyB9KVxyXG4gICAgLmdldChjb3JzLmNvcnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCBwbGFjZUNvbnRyb2xsZXIuZ2V0QWxsVmlzaXRpbmdQbGFjZXMpXHJcbiAgICAucG9zdChjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgcGxhY2VDb250cm9sbGVyLmFkZFZpc2l0aW5nUGxhY2UpXHJcbiAgICAucHV0KGNvcnMuY29yc1dpdGhPcHRpb25zLCAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwMztcclxuICAgICAgICByZXMuZW5kKCdQVVQgb3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQgb24gL3Zpc2l0aW5nUGxhY2VzJyk7XHJcbiAgICB9KVxyXG4gICAgLmRlbGV0ZShjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgcGxhY2VDb250cm9sbGVyLmRlbGV0ZUFsbFZpc2l0aW5nUGxhY2VzKTtcclxudmlzaXRpbmdQbGFjZVJvdXRlci5yb3V0ZSgnL3NlYXJjaCcpXHJcbiAgICAub3B0aW9ucyhjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcbiAgICAucG9zdChjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIHBsYWNlQ29udHJvbGxlci5nZXRBbGxWaXNpdGluZ1BsYWNlc0J5TmFtZSk7XHJcblxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbi8vIFxyXG4vLyAgICAgICAgICAgICAgVmlzaXRpbmcgUGxhY2UgUm91dGVzIE9uIElEXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG52aXNpdGluZ1BsYWNlUm91dGVyLnJvdXRlKCcvOnZpc2l0aW5nUGxhY2VJZCcpXHJcbiAgICAub3B0aW9ucyhjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcbiAgICAuZ2V0KGNvcnMuY29ycywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIHBsYWNlQ29udHJvbGxlci5nZXRWaXNpdGluZ1BsYWNlRGV0YWlsc0J5SWQpXHJcbiAgICAucG9zdChjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgcmVzLmVuZCgnUE9TVCBvcGVyYXRpb24gbm90IHN1cHBvcnRlZCBvbiAvdmlzaXRpbmdQbGFjZXMvJyArIHJlcS5wYXJhbXMudmlzaXRpbmdQbGFjZUlkKTtcclxuICAgIH0pXHJcbiAgICAucHV0KGNvcnMuY29yc1dpdGhPcHRpb25zLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeUFkbWluLCBwbGFjZUNvbnRyb2xsZXIudXBkYXRlVmlzaXRpbmdQbGFjZURldGFpbHNCeUlkKVxyXG4gICAgLmRlbGV0ZShjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgcGxhY2VDb250cm9sbGVyLmRlbGV0ZUFWaXNpdGluZ1BsYWNlQnlJZCk7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IHZpc2l0aW5nUGxhY2VSb3V0ZXI7XHJcbiJdfQ==\",\"originalCode\":\"const express = require('express');\\r\\nconst bodyParser = require('body-parser');\\r\\n\\r\\nconst cors = require('./cors');\\r\\nconst { checkSchema } = require('express-validator');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\nvar validationRules = require('../middleware/validation');\\r\\nconst placeController = require('../controllers/placeController');\\r\\n\\r\\nconst visitingPlaceRouter = express.Router();\\r\\n\\r\\nvisitingPlaceRouter.use(bodyParser.json());\\r\\n\\r\\n// **********************************************************************************\\r\\n\\r\\n// Visiting Place Routes\\r\\n\\r\\n// **********************************************************************************\\r\\n\\r\\nvisitingPlaceRouter.route('/')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, placeController.getAllVisitingPlaces)\\r\\n .post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.addVisitingPlace)\\r\\n .put(cors.corsWithOptions, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('PUT operation not supported on /visitingPlaces');\\r\\n })\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.deleteAllVisitingPlaces);\\r\\nvisitingPlaceRouter.route('/search')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .post(cors.corsWithOptions, authenticate.verifyUser, placeController.getAllVisitingPlacesByName);\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Visiting Place Routes On ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nvisitingPlaceRouter.route('/:visitingPlaceId')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, placeController.getVisitingPlaceDetailsById)\\r\\n .post(cors.corsWithOptions, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('POST operation not supported on /visitingPlaces/' + req.params.visitingPlaceId);\\r\\n })\\r\\n .put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.updateVisitingPlaceDetailsById)\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.deleteAVisitingPlaceById);\\r\\n\\r\\nmodule.exports = visitingPlaceRouter;\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/9d/placeRouter_9d9aca2c41f2c1b6283bdacdd67537b2.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2539\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\placeRouter.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":9353,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":9350,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":809,\"endOffset\":849,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1067,\"endOffset\":1175,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1366,\"endOffset\":1406,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1807,\"endOffset\":1847,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1961,\"endOffset\":2100,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const VisitingPlaces = require('../models/visitingPlaces'); // **********************************************************************************\\n// \\n// Visiting Place Operations \\n// \\n// **********************************************************************************\\n\\n\\nconst getAllVisitingPlaces = (req, res, next) => {\\n var query = {};\\n VisitingPlaces.find(query, 'name description distance location timeToReach image travellingMethods').then(visitingPlaces => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n visitingPlaces: visitingPlaces\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst getAllVisitingPlacesByName = (req, res, next) => {\\n var query = {};\\n\\n if (req.body.similarTo) {\\n query = {\\n name: {\\n $regex: `${req.body.similarTo}`,\\n $options: \\\"i\\\"\\n }\\n };\\n }\\n\\n VisitingPlaces.find(query, 'name description distance location timeToReach image travellingMethods').then(visitingPlaces => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n visitingPlaces: visitingPlaces\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst addVisitingPlace = (req, res, next) => {\\n var imagesArray = []; // files = req.files;\\n // files.forEach(file => {\\n // imagesArray.push(file.filename);\\n // });\\n\\n var place = {\\n name: req.body.name,\\n description: req.body.description,\\n location: {\\n coordinates: req.body.location.coordinates\\n },\\n distance: req.body.distance,\\n timeToReach: req.body.timeToReach,\\n images: imagesArray,\\n travellingMethods: req.body.methods\\n };\\n VisitingPlaces.create(place).then(visitingPlace => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n visitingPlace: visitingPlace\\n });\\n }, err => {\\n res.statusCode = 403;\\n res.setHeader('Content-Type', 'application/json');\\n const msg = err.driver ? \\\"Duplicate Key\\\" : err._message;\\n res.json({\\n success: false,\\n message: msg\\n });\\n }).catch(err => next(err));\\n};\\n\\nconst deleteAllVisitingPlaces = (req, res, next) => {\\n VisitingPlaces.remove({}).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json(resp);\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nexports.getAllVisitingPlaces = getAllVisitingPlaces;\\nexports.getAllVisitingPlacesByName = getAllVisitingPlacesByName;\\nexports.addVisitingPlace = addVisitingPlace;\\nexports.deleteAllVisitingPlaces = deleteAllVisitingPlaces; // **********************************************************************************\\n// \\n// Visiting Place Operations Specified by ID\\n// \\n// **********************************************************************************\\n\\nconst getVisitingPlaceDetailsById = (req, res, next) => {\\n VisitingPlaces.findById(req.params.visitingPlaceId).then(visitingPlace => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n visitingPlace: visitingPlace\\n });\\n }, err => {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: \\\"Could not find the place\\\"\\n });\\n }).catch(err => next(err));\\n};\\n\\nconst updateVisitingPlaceDetailsById = (req, res, next) => {\\n VisitingPlaces.findByIdAndUpdate(req.params.visitingPlaceId, {\\n $set: req.body\\n }, {\\n new: true\\n }).then(visitingPlace => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n visitingPlace: visitingPlace\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst deleteAVisitingPlaceById = (req, res, next) => {\\n VisitingPlaces.findByIdAndRemove(req.params.visitingPlaceId).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n response: resp\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nexports.getVisitingPlaceDetailsById = getVisitingPlaceDetailsById;\\nexports.updateVisitingPlaceDetailsById = updateVisitingPlaceDetailsById;\\nexports.deleteAVisitingPlaceById = deleteAVisitingPlaceById;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBsYWNlQ29udHJvbGxlci5qcyJdLCJuYW1lcyI6WyJWaXNpdGluZ1BsYWNlcyIsInJlcXVpcmUiLCJnZXRBbGxWaXNpdGluZ1BsYWNlcyIsInJlcSIsInJlcyIsIm5leHQiLCJxdWVyeSIsImZpbmQiLCJ0aGVuIiwidmlzaXRpbmdQbGFjZXMiLCJzdGF0dXNDb2RlIiwic2V0SGVhZGVyIiwianNvbiIsInN1Y2Nlc3MiLCJlcnIiLCJjYXRjaCIsImdldEFsbFZpc2l0aW5nUGxhY2VzQnlOYW1lIiwiYm9keSIsInNpbWlsYXJUbyIsIm5hbWUiLCIkcmVnZXgiLCIkb3B0aW9ucyIsImFkZFZpc2l0aW5nUGxhY2UiLCJpbWFnZXNBcnJheSIsInBsYWNlIiwiZGVzY3JpcHRpb24iLCJsb2NhdGlvbiIsImNvb3JkaW5hdGVzIiwiZGlzdGFuY2UiLCJ0aW1lVG9SZWFjaCIsImltYWdlcyIsInRyYXZlbGxpbmdNZXRob2RzIiwibWV0aG9kcyIsImNyZWF0ZSIsInZpc2l0aW5nUGxhY2UiLCJtc2ciLCJkcml2ZXIiLCJfbWVzc2FnZSIsIm1lc3NhZ2UiLCJkZWxldGVBbGxWaXNpdGluZ1BsYWNlcyIsInJlbW92ZSIsInJlc3AiLCJleHBvcnRzIiwiZ2V0VmlzaXRpbmdQbGFjZURldGFpbHNCeUlkIiwiZmluZEJ5SWQiLCJwYXJhbXMiLCJ2aXNpdGluZ1BsYWNlSWQiLCJ1cGRhdGVWaXNpdGluZ1BsYWNlRGV0YWlsc0J5SWQiLCJmaW5kQnlJZEFuZFVwZGF0ZSIsIiRzZXQiLCJuZXciLCJkZWxldGVBVmlzaXRpbmdQbGFjZUJ5SWQiLCJmaW5kQnlJZEFuZFJlbW92ZSIsInJlc3BvbnNlIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxjQUFjLEdBQUdDLE9BQU8sQ0FBQywwQkFBRCxDQUE5QixDLENBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUEsTUFBTUMsb0JBQW9CLEdBQUcsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDN0MsTUFB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QztBQUNBTCxPQUFPLENBQUNTLHdCQUFSLEdBQW1DQSx3QkFBbkMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBWaXNpdGluZ1BsYWNlcyA9IHJlcXVpcmUoJy4uL21vZGVscy92aXNpdGluZ1BsYWNlcycpO1xyXG5cclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyBcclxuLy8gICAgICAgICAgICAgIFZpc2l0aW5nIFBsYWNlIE9wZXJhdGlvbnMgXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG5jb25zdCBnZXRBbGxWaXNpdGluZ1BsYWNlcyA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgdmFyIHF1ZXJ5ID0ge307XHJcbiAgICBWaXNpdGluZ1BsYWNlcy5maW5kKHF1ZXJ5LCAnbmFtZSBkZXNjcmlwdGlvbiBkaXN0YW5jZSBsb2NhdGlvbiB0aW1lVG9SZWFjaCBpbWFnZSB0cmF2ZWxsaW5nTWV0aG9kcycpXHJcbiAgICAgICAgLnRoZW4oKHZpc2l0aW5nUGxhY2VzKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHZpc2l0aW5nUGxhY2VzOiB2aXNpdGluZ1BsYWNlcyB9KTtcclxuICAgICAgICB9LCAoZXJyKSA9PiBuZXh0KGVycikpXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IG5leHQoZXJyKSk7XHJcbn1cclxuXHJcbmNvbnN0IGdldEFsbFZpc2l0aW5nUGxhY2VzQnlOYW1lID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICB2YXIgcXVlcnkgPSB7fTtcclxuICAgIGlmIChyZXEuYm9keS5zaW1pbGFyVG8pIHtcclxuICAgICAgICBxdWVyeSA9IHsgbmFtZTogeyAkcmVnZXg6IGAke3JlcS5ib2R5LnNpbWlsYXJUb31gLCAkb3B0aW9uczogXCJpXCIgfSB9XHJcbiAgICB9XHJcbiAgICBWaXNpdGluZ1BsYWNlcy5maW5kKHF1ZXJ5LCAnbmFtZSBkZXNjcmlwdGlvbiBkaXN0YW5jZSBsb2NhdGlvbiB0aW1lVG9SZWFjaCBpbWFnZSB0cmF2ZWxsaW5nTWV0aG9kcycpXHJcbiAgICAgICAgLnRoZW4oKHZpc2l0aW5nUGxhY2VzKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHZpc2l0aW5nUGxhY2VzOiB2aXNpdGluZ1BsYWNlcyB9KTtcclxuICAgICAgICB9LCAoZXJyKSA9PiBuZXh0KGVycikpXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IG5leHQoZXJyKSk7XHJcbn1cclxuXHJcbmNvbnN0IGFkZFZpc2l0aW5nUGxhY2UgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHZhciBpbWFnZXNBcnJheSA9IFtdO1xyXG4gICAgLy8gZmlsZXMgPSByZXEuZmlsZXM7XHJcbiAgICAvLyBmaWxlcy5mb3JFYWNoKGZpbGUgPT4ge1xyXG4gICAgLy8gICAgIGltYWdlc0FycmF5LnB1c2goZmlsZS5maWxlbmFtZSk7XHJcbiAgICAvLyB9KTtcclxuICAgIHZhciBwbGFjZSA9XHJcbiAgICB7XHJcbiAgICAgICAgbmFtZTogcmVxLmJvZHkubmFtZSxcclxuICAgICAgICBkZXNjcmlwdGlvbjogcmVxLmJvZHkuZGVzY3JpcHRpb24sXHJcbiAgICAgICAgbG9jYXRpb246IHtcclxuICAgICAgICAgICAgY29vcmRpbmF0ZXM6IHJlcS5ib2R5LmxvY2F0aW9uLmNvb3JkaW5hdGVzXHJcbiAgICAgICAgfSxcclxuICAgICAgICBkaXN0YW5jZTogcmVxLmJvZHkuZGlzdGFuY2UsXHJcbiAgICAgICAgdGltZVRvUmVhY2g6IHJlcS5ib2R5LnRpbWVUb1JlYWNoLFxyXG4gICAgICAgIGltYWdlczogaW1hZ2VzQXJyYXksXHJcbiAgICAgICAgdHJhdmVsbGluZ01ldGhvZHM6IHJlcS5ib2R5Lm1ldGhvZHNcclxuICAgIH1cclxuICAgIFZpc2l0aW5nUGxhY2VzLmNyZWF0ZShwbGFjZSlcclxuICAgICAgICAudGhlbigodmlzaXRpbmdQbGFjZSkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCB2aXNpdGluZ1BsYWNlOiB2aXNpdGluZ1BsYWNlIH0pO1xyXG4gICAgICAgIH0sIChlcnIpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIGNvbnN0IG1zZyA9IGVyci5kcml2ZXIgPyBcIkR1cGxpY2F0ZSBLZXlcIiA6IGVyci5fbWVzc2FnZTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogbXNnIH0pO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IG5leHQoZXJyKSk7XHJcbn1cclxuXHJcbmNvbnN0IGRlbGV0ZUFsbFZpc2l0aW5nUGxhY2VzID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICBWaXNpdGluZ1BsYWNlcy5yZW1vdmUoe30pXHJcbiAgICAgICAgLnRoZW4oKHJlc3ApID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHJlc3ApO1xyXG4gICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuZXhwb3J0cy5nZXRBbGxWaXNpdGluZ1BsYWNlcyA9IGdldEFsbFZpc2l0aW5nUGxhY2VzO1xyXG5leHBvcnRzLmdldEFsbFZpc2l0aW5nUGxhY2VzQnlOYW1lID0gZ2V0QWxsVmlzaXRpbmdQbGFjZXNCeU5hbWU7XHJcbmV4cG9ydHMuYWRkVmlzaXRpbmdQbGFjZSA9IGFkZFZpc2l0aW5nUGxhY2U7XHJcbmV4cG9ydHMuZGVsZXRlQWxsVmlzaXRpbmdQbGFjZXMgPSBkZWxldGVBbGxWaXNpdGluZ1BsYWNlcztcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuLy8gXHJcbi8vICAgICAgICAgICAgICBWaXNpdGluZyBQbGFjZSBPcGVyYXRpb25zIFNwZWNpZmllZCBieSBJRFxyXG4vLyBcclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuY29uc3QgZ2V0VmlzaXRpbmdQbGFjZURldGFpbHNCeUlkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICBWaXNpdGluZ1BsYWNlcy5maW5kQnlJZChyZXEucGFyYW1zLnZpc2l0aW5nUGxhY2VJZClcclxuICAgICAgICAudGhlbigodmlzaXRpbmdQbGFjZSkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCB2aXNpdGluZ1BsYWNlOiB2aXNpdGluZ1BsYWNlIH0pO1xyXG4gICAgICAgIH0sIChlcnIpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDQ7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogZmFsc2UsIG1lc3NhZ2U6IFwiQ291bGQgbm90IGZpbmQgdGhlIHBsYWNlXCIgfSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuY29uc3QgdXBkYXRlVmlzaXRpbmdQbGFjZURldGFpbHNCeUlkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICBWaXNpdGluZ1BsYWNlcy5maW5kQnlJZEFuZFVwZGF0ZShyZXEucGFyYW1zLnZpc2l0aW5nUGxhY2VJZCwge1xyXG4gICAgICAgICRzZXQ6IHJlcS5ib2R5XHJcbiAgICB9LCB7IG5ldzogdHJ1ZSB9KVxyXG4gICAgICAgIC50aGVuKCh2aXNpdGluZ1BsYWNlKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHZpc2l0aW5nUGxhY2U6IHZpc2l0aW5nUGxhY2UgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpO1xyXG59XHJcblxyXG5jb25zdCBkZWxldGVBVmlzaXRpbmdQbGFjZUJ5SWQgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIFZpc2l0aW5nUGxhY2VzLmZpbmRCeUlkQW5kUmVtb3ZlKHJlcS5wYXJhbXMudmlzaXRpbmdQbGFjZUlkKVxyXG4gICAgICAgIC50aGVuKChyZXNwKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHJlc3BvbnNlOiByZXNwIH0pO1xyXG4gICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuZXhwb3J0cy5nZXRWaXNpdGluZ1BsYWNlRGV0YWlsc0J5SWQgPSBnZXRWaXNpdGluZ1BsYWNlRGV0YWlsc0J5SWQ7XHJcbmV4cG9ydHMudXBkYXRlVmlzaXRpbmdQbGFjZURldGFpbHNCeUlkID0gdXBkYXRlVmlzaXRpbmdQbGFjZURldGFpbHNCeUlkO1xyXG5leHBvcnRzLmRlbGV0ZUFWaXNpdGluZ1BsYWNlQnlJZCA9IGRlbGV0ZUFWaXNpdGluZ1BsYWNlQnlJZDsiXX0=\",\"originalCode\":\"const VisitingPlaces = require('../models/visitingPlaces');\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Visiting Place Operations \\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nconst getAllVisitingPlaces = (req, res, next) => {\\r\\n var query = {};\\r\\n VisitingPlaces.find(query, 'name description distance location timeToReach image travellingMethods')\\r\\n .then((visitingPlaces) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, visitingPlaces: visitingPlaces });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst getAllVisitingPlacesByName = (req, res, next) => {\\r\\n var query = {};\\r\\n if (req.body.similarTo) {\\r\\n query = { name: { $regex: `${req.body.similarTo}`, $options: \\\"i\\\" } }\\r\\n }\\r\\n VisitingPlaces.find(query, 'name description distance location timeToReach image travellingMethods')\\r\\n .then((visitingPlaces) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, visitingPlaces: visitingPlaces });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst addVisitingPlace = (req, res, next) => {\\r\\n var imagesArray = [];\\r\\n // files = req.files;\\r\\n // files.forEach(file => {\\r\\n // imagesArray.push(file.filename);\\r\\n // });\\r\\n var place =\\r\\n {\\r\\n name: req.body.name,\\r\\n description: req.body.description,\\r\\n location: {\\r\\n coordinates: req.body.location.coordinates\\r\\n },\\r\\n distance: req.body.distance,\\r\\n timeToReach: req.body.timeToReach,\\r\\n images: imagesArray,\\r\\n travellingMethods: req.body.methods\\r\\n }\\r\\n VisitingPlaces.create(place)\\r\\n .then((visitingPlace) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, visitingPlace: visitingPlace });\\r\\n }, (err) => {\\r\\n res.statusCode = 403;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n const msg = err.driver ? \\\"Duplicate Key\\\" : err._message;\\r\\n res.json({ success: false, message: msg });\\r\\n })\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst deleteAllVisitingPlaces = (req, res, next) => {\\r\\n VisitingPlaces.remove({})\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json(resp);\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nexports.getAllVisitingPlaces = getAllVisitingPlaces;\\r\\nexports.getAllVisitingPlacesByName = getAllVisitingPlacesByName;\\r\\nexports.addVisitingPlace = addVisitingPlace;\\r\\nexports.deleteAllVisitingPlaces = deleteAllVisitingPlaces;\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Visiting Place Operations Specified by ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nconst getVisitingPlaceDetailsById = (req, res, next) => {\\r\\n VisitingPlaces.findById(req.params.visitingPlaceId)\\r\\n .then((visitingPlace) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, visitingPlace: visitingPlace });\\r\\n }, (err) => {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: \\\"Could not find the place\\\" });\\r\\n })\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst updateVisitingPlaceDetailsById = (req, res, next) => {\\r\\n VisitingPlaces.findByIdAndUpdate(req.params.visitingPlaceId, {\\r\\n $set: req.body\\r\\n }, { new: true })\\r\\n .then((visitingPlace) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, visitingPlace: visitingPlace });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst deleteAVisitingPlaceById = (req, res, next) => {\\r\\n VisitingPlaces.findByIdAndRemove(req.params.visitingPlaceId)\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, response: resp });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nexports.getVisitingPlaceDetailsById = getVisitingPlaceDetailsById;\\r\\nexports.updateVisitingPlaceDetailsById = updateVisitingPlaceDetailsById;\\r\\nexports.deleteAVisitingPlaceById = deleteAVisitingPlaceById;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/ee/placeController_ee3a20e34d4d356553af723b6f7f6a6e.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2540\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\placeController.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":18578,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":18575,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"getAllVisitingPlaces\",\"ranges\":[{\"startOffset\":403,\"endOffset\":782,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getAllVisitingPlacesByName\",\"ranges\":[{\"startOffset\":820,\"endOffset\":1339,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"addVisitingPlace\",\"ranges\":[{\"startOffset\":1367,\"endOffset\":2276,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"deleteAllVisitingPlaces\",\"ranges\":[{\"startOffset\":2311,\"endOffset\":2526,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getVisitingPlaceDetailsById\",\"ranges\":[{\"startOffset\":3026,\"endOffset\":3499,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"updateVisitingPlaceDetailsById\",\"ranges\":[{\"startOffset\":3541,\"endOffset\":3906,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"deleteAVisitingPlaceById\",\"ranges\":[{\"startOffset\":3942,\"endOffset\":4237,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const express = require('express');\\n\\nconst bodyParser = require('body-parser');\\n\\nconst cors = require('./cors');\\n\\nconst {\\n checkSchema\\n} = require('express-validator');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nvar validationRules = require('../middleware/validation');\\n\\nconst scheduleController = require('../controllers/scheduleController');\\n\\nconst scheduleRouter = express.Router();\\nscheduleRouter.use(bodyParser.json()); // **********************************************************************************\\n// \\n// Schedule Routes\\n// \\n// **********************************************************************************\\n\\nscheduleRouter.route('/').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, scheduleController.getAllSchedules).post(cors.corsWithOptions, authenticate.verifyUser, scheduleController.addSchedule).put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('PUT operation not supported on /schedules');\\n}).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, scheduleController.deleteAllSchedules); // **********************************************************************************\\n// \\n// Schedule Routes On ID\\n// \\n// **********************************************************************************\\n\\nscheduleRouter.route('/:scheduleId').options(cors.corsWithOptions, authenticate.verifyUser, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, scheduleController.getScheduleDetailsById).post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('POST operation not supported on /schedules/' + req.params.scheduleId);\\n}).put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, scheduleController.updateScheduleById).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, scheduleController.deleteScheduleById);\\nscheduleRouter.route('/user/:userId').options(cors.corsWithOptions, authenticate.verifyUser, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, scheduleController.getAllSchedulesForAUser);\\nmodule.exports = scheduleRouter;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNjaGVkdWxlUm91dGVyLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwiYm9keVBhcnNlciIsImNvcnMiLCJjaGVja1NjaGVtYSIsImF1dGhlbnRpY2F0ZSIsInZhbGlkYXRpb25SdWxlcyIsInNjaGVkdWxlQ29udHJvbGxlciIsInNjaGVkdWxlUm91dGVyIiwiUm91dGVyIiwidXNlIiwianNvbiIsInJvdXRlIiwib3B0aW9ucyIsImNvcnNXaXRoT3B0aW9ucyIsInJlcSIsInJlcyIsInNlbmRTdGF0dXMiLCJnZXQiLCJ2ZXJpZnlVc2VyIiwiZ2V0QWxsU2NoZWR1bGVzIiwicG9zdCIsImFkZFNjaGVkdWxlIiwicHV0IiwidmVyaWZ5TW9kZXJhdGVyIiwibmV4dCIsInN0YXR1c0NvZGUiLCJlbmQiLCJkZWxldGUiLCJ2ZXJpZnlBZG1pbiIsImRlbGV0ZUFsbFNjaGVkdWxlcyIsImdldFNjaGVkdWxlRGV0YWlsc0J5SWQiLCJwYXJhbXMiLCJzY2hlZHVsZUlkIiwidXBkYXRlU2NoZWR1bGVCeUlkIiwiZGVsZXRlU2NoZWR1bGVCeUlkIiwiZ2V0QWxsU2NoZWR1bGVzRm9yQVVzZXIiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxPQUFPLEdBQUdDLE9BQU8sQ0FBQyxTQUFELENBQXZCOztBQUNBLE1BQU1DLFVBQVUsR0FBR0QsT0FBTyxDQUFDLGFBQUQsQ0FBMUI7O0FBRUEsTUFBTUUsSUFBSSxHQUFHRixPQUFPLENBQUMsUUFBRCxDQUFwQjs7QUFDQSxNQUFNO0FBQUVHLEVBQUFBO0FBQUYsSUFBa0JILE9BQU8sQ0FBQyxtQkFBRCxDQUEvQjs7QUFDQSxJQUFJSSxZQUFZLEdBQUdKLE9BQU8sQ0FBQyw0QkFBRCxDQUExQjs7QUFDQSxJQUFJSyxlQUFlLEdBQUdMLE9BQU8sQ0FBQywwQkFBRCxDQUE3Qjs7QUFDQSxNQUFNTSxrQkFBa0IsR0FBR04sT0FBTyxDQUFDLG1DQUFELENBQWxDOztBQUVBLE1BQU1PLGNB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T0FBUCxHQUFpQjlCLGNBQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZXhwcmVzcyA9IHJlcXVpcmUoJ2V4cHJlc3MnKTtcclxuY29uc3QgYm9keVBhcnNlciA9IHJlcXVpcmUoJ2JvZHktcGFyc2VyJyk7XHJcblxyXG5jb25zdCBjb3JzID0gcmVxdWlyZSgnLi9jb3JzJyk7XHJcbmNvbnN0IHsgY2hlY2tTY2hlbWEgfSA9IHJlcXVpcmUoJ2V4cHJlc3MtdmFsaWRhdG9yJyk7XHJcbnZhciBhdXRoZW50aWNhdGUgPSByZXF1aXJlKCcuLi9taWRkbGV3YXJlL2F1dGhlbnRpY2F0ZScpO1xyXG52YXIgdmFsaWRhdGlvblJ1bGVzID0gcmVxdWlyZSgnLi4vbWlkZGxld2FyZS92YWxpZGF0aW9uJyk7XHJcbmNvbnN0IHNjaGVkdWxlQ29udHJvbGxlciA9IHJlcXVpcmUoJy4uL2NvbnRyb2xsZXJzL3NjaGVkdWxlQ29udHJvbGxlcicpXHJcblxyXG5jb25zdCBzY2hlZHVsZVJvdXRlciA9IGV4cHJlc3MuUm91dGVyKCk7XHJcblxyXG5zY2hlZHVsZVJvdXRlci51c2UoYm9keVBhcnNlci5qc29uKCkpO1xyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbi8vIFxyXG4vLyAgICAgICAgICAgICAgU2NoZWR1bGUgUm91dGVzXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG5zY2hlZHVsZVJvdXRlci5yb3V0ZSgnLycpXHJcbiAgICAub3B0aW9ucyhjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcbiAgICAuZ2V0KGNvcnMuY29ycywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsICBzY2hlZHVsZUNvbnRyb2xsZXIuZ2V0QWxsU2NoZWR1bGVzKVxyXG4gICAgLnBvc3QoY29ycy5jb3JzV2l0aE9wdGlvbnMsYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsICBzY2hlZHVsZUNvbnRyb2xsZXIuYWRkU2NoZWR1bGUpXHJcbiAgICAucHV0KGNvcnMuY29yc1dpdGhPcHRpb25zLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeU1vZGVyYXRlciwgKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgcmVzLmVuZCgnUFVUIG9wZXJhdGlvbiBub3Qgc3VwcG9ydGVkIG9uIC9zY2hlZHVsZXMnKTtcclxuICAgIH0pXHJcbiAgICAuZGVsZXRlKGNvcnMuY29yc1dpdGhPcHRpb25zLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeUFkbWluLCBzY2hlZHVsZUNvbnRyb2xsZXIuZGVsZXRlQWxsU2NoZWR1bGVzKTtcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuLy8gXHJcbi8vICAgICAgICAgICAgICBTY2hlZHVsZSBSb3V0ZXMgT24gSURcclxuLy8gXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbnNjaGVkdWxlUm91dGVyLnJvdXRlKCcvOnNjaGVkdWxlSWQnKVxyXG4gICAgLm9wdGlvbnMoY29ycy5jb3JzV2l0aE9wdGlvbnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCAocmVxLCByZXMpID0+IHsgcmVzLnNlbmRTdGF0dXMoMjAwKTsgfSlcclxuICAgIC5nZXQoY29ycy5jb3JzLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgc2NoZWR1bGVDb250cm9sbGVyLmdldFNjaGVkdWxlRGV0YWlsc0J5SWQpXHJcbiAgICAucG9zdChjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgcmVzLmVuZCgnUE9TVCBvcGVyYXRpb24gbm90IHN1cHBvcnRlZCBvbiAvc2NoZWR1bGVzLycgKyByZXEucGFyYW1zLnNjaGVkdWxlSWQpO1xyXG4gICAgfSlcclxuICAgIC5wdXQoY29ycy5jb3JzV2l0aE9wdGlvbnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCBhdXRoZW50aWNhdGUudmVyaWZ5TW9kZXJhdGVyLCBzY2hlZHVsZUNvbnRyb2xsZXIudXBkYXRlU2NoZWR1bGVCeUlkKVxyXG4gICAgLmRlbGV0ZShjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgc2NoZWR1bGVDb250cm9sbGVyLmRlbGV0ZVNjaGVkdWxlQnlJZCk7XHJcblxyXG5zY2hlZHVsZVJvdXRlci5yb3V0ZSgnL3VzZXIvOnVzZXJJZCcpXHJcbiAgICAub3B0aW9ucyhjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIChyZXEsIHJlcykgPT4geyByZXMuc2VuZFN0YXR1cygyMDApOyB9KVxyXG4gICAgLmdldChjb3JzLmNvcnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCAgc2NoZWR1bGVDb250cm9sbGVyLmdldEFsbFNjaGVkdWxlc0ZvckFVc2VyKTtcclxuXHJcbm1vZHVsZS5leHBvcnRzID0gc2NoZWR1bGVSb3V0ZXI7Il19\",\"originalCode\":\"const express = require('express');\\r\\nconst bodyParser = require('body-parser');\\r\\n\\r\\nconst cors = require('./cors');\\r\\nconst { checkSchema } = require('express-validator');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\nvar validationRules = require('../middleware/validation');\\r\\nconst scheduleController = require('../controllers/scheduleController')\\r\\n\\r\\nconst scheduleRouter = express.Router();\\r\\n\\r\\nscheduleRouter.use(bodyParser.json());\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Schedule Routes\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nscheduleRouter.route('/')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, scheduleController.getAllSchedules)\\r\\n .post(cors.corsWithOptions,authenticate.verifyUser, scheduleController.addSchedule)\\r\\n .put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('PUT operation not supported on /schedules');\\r\\n })\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, scheduleController.deleteAllSchedules);\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Schedule Routes On ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nscheduleRouter.route('/:scheduleId')\\r\\n .options(cors.corsWithOptions, authenticate.verifyUser, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, scheduleController.getScheduleDetailsById)\\r\\n .post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('POST operation not supported on /schedules/' + req.params.scheduleId);\\r\\n })\\r\\n .put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, scheduleController.updateScheduleById)\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, scheduleController.deleteScheduleById);\\r\\n\\r\\nscheduleRouter.route('/user/:userId')\\r\\n .options(cors.corsWithOptions, authenticate.verifyUser, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, scheduleController.getAllSchedulesForAUser);\\r\\n\\r\\nmodule.exports = scheduleRouter;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/9b/scheduleRouter_9b57edc7078385d142c957dea9d9e0be.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2541\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\scheduleRouter.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":9621,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":9618,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":802,\"endOffset\":842,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1085,\"endOffset\":1188,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1621,\"endOffset\":1661,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1824,\"endOffset\":1953,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":2288,\"endOffset\":2328,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const Schedules = require('../models/schedules'); // **********************************************************************************\\n// \\n// Schedule Operations \\n// \\n// **********************************************************************************\\n\\n\\nconst getAllSchedules = (req, res, next) => {\\n Schedules.find(req.query).populate(\\\"place\\\").populate(\\\"user\\\").then(schedules => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n schedules: schedules\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst getAllSchedulesForAUser = (req, res, next) => {\\n var query = {\\n \\\"user\\\": String(req.params.userId)\\n };\\n Schedules.find(query).populate(\\\"place\\\").then(schedules => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n schedules: schedules\\n });\\n }, err => {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n const msg = err._message;\\n res.json({\\n success: false,\\n message: msg\\n });\\n }).catch(err => {\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: \\\"Failed to get data\\\"\\n });\\n });\\n};\\n\\nconst addSchedule = (req, res, next) => {\\n var schedule = {\\n user: req.body.user,\\n place: req.body.place,\\n date: req.body.date,\\n state: \\\"new\\\",\\n travellingMethod: req.body.travellingMethod\\n };\\n Schedules.create(schedule).then(schedule => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n schedule: schedule\\n });\\n }, err => {\\n res.statusCode = 403;\\n res.setHeader('Content-Type', 'application/json');\\n const msg = err._message;\\n res.json({\\n success: false,\\n message: msg\\n });\\n }).catch(err => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: \\\"Failed to add a schedule\\\"\\n });\\n });\\n};\\n\\nconst deleteAllSchedules = (req, res, next) => {\\n Schedules.remove({}).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json(resp);\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nexports.getAllSchedules = getAllSchedules;\\nexports.addSchedule = addSchedule;\\nexports.deleteAllSchedules = deleteAllSchedules;\\nexports.getAllSchedulesForAUser = getAllSchedulesForAUser; // **********************************************************************************\\n// \\n// Schedule Operations Specified by ID\\n// \\n// **********************************************************************************\\n\\nconst getScheduleDetailsById = (req, res, next) => {\\n Schedules.findById(req.params.scheduleId).then(schedule => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n schedule: schedule\\n });\\n }, err => {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: \\\"Could not find the place\\\"\\n });\\n }).catch(err => next(err));\\n};\\n\\nconst updateScheduleById = (req, res, next) => {\\n Schedules.findByIdAndUpdate(req.params.scheduleId, {\\n $set: req.body\\n }, {\\n new: true\\n }).then(schedule => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n schedule: schedule\\n });\\n }, err => next(err)).catch(err => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: \\\"Update failed\\\"\\n });\\n });\\n};\\n\\nconst deleteScheduleById = (req, res, next) => {\\n Schedules.findByIdAndRemove(req.params.scheduleId).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n response: resp\\n });\\n }, err => next(err)).catch(err => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: \\\"Delete failed\\\"\\n });\\n });\\n};\\n\\nexports.getScheduleDetailsById = getScheduleDetailsById;\\nexports.updateScheduleById = updateScheduleById;\\nexports.deleteScheduleById = deleteScheduleById; // **********************************************************************************\\n// \\n// Schedule Operations Specified by UserID\\n// \\n// **********************************************************************************\\n// const getScheduleDetailsByUserId = (req, res, next) => {\\n// Schedules.findById(req.params.scheduleId)\\n// .then((schedule) => {\\n// res.statusCode = 200;\\n// res.setHeader('Content-Type', 'application/json');\\n// res.json(schedule);\\n// }, (err) => next(err))\\n// .catch((err) => next(err));\\n// }\\n// const updateScheduleByUserId = (req, res, next) => {\\n// Schedules.findByIdAndUpdate(req.params.scheduleId, {\\n// $set: req.body\\n// }, { new: true })\\n// .then((schedule) => {\\n// res.statusCode = 200;\\n// res.setHeader('Content-Type', 'application/json');\\n// res.json(schedule);\\n// }, (err) => next(err))\\n// .catch((err) => next(err));\\n// }\\n// const deleteScheduleByUserId = (req, res, next) => {\\n// Schedules.findByIdAndRemove(req.params.scheduleId)\\n// .then((resp) => {\\n// res.statusCode = 200;\\n// res.setHeader('Content-Type', 'application/json');\\n// res.json(resp);\\n// }, (err) => next(err))\\n// .catch((err) => next(err));\\n// }\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNjaGVkdWxlQ29udHJvbGxlci5qcyJdLCJuYW1lcyI6WyJTY2hlZHVsZXMiLCJyZXF1aXJlIiwiZ2V0QWxsU2NoZWR1bGVzIiwicmVxIiwicmVzIiwibmV4dCIsImZpbmQiLCJxdWVyeSIsInBvcHVsYXRlIiwidGhlbiIsInNjaGVkdWxlcyIsInN0YXR1c0NvZGUiLCJzZXRIZWFkZXIiLCJqc29uIiwic3VjY2VzcyIsImVyciIsImNhdGNoIiwiZ2V0QWxsU2NoZWR1bGVzRm9yQVVzZXIiLCJTdHJpbmciLCJwYXJhbXMiLCJ1c2VySWQiLCJtc2ciLCJfbWVzc2FnZSIsIm1lc3NhZ2UiLCJhZGRTY2hlZHVsZSIsInNjaGVkdWxlIiwidXNlciIsImJvZHkiLCJwbGFjZSIsImRhdGUiLCJzdGF0ZSIsInRyYXZlbGxpbmdNZXRob2QiLCJjcmVhdGUiLCJkZWxldGVBbGxTY2hlZHVsZXMiLCJyZW1vdmUiLCJyZXNwIiwiZXhwb3J0cyIsImdldFNjaGVkdWxlRGV0YWlsc0J5SWQiLCJmaW5kQnlJZCIsInNjaGVkdWxlSWQiLCJ1cGRhdGVTY2hlZHVsZUJ5SWQiLCJmaW5kQnlJZEFuZFVwZGF0ZSIsIiRzZXQiLCJuZXciLCJkZWxldGVTY2hlZHVsZUJ5SWQiLCJmaW5kQnlJZEFuZFJlbW92ZSIsInJlc3BvbnNlIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxTQUFTLEdBQUdDLE9BQU8sQ0FBQyxxQkFBRCxDQUF6QixDLENBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUEsTUFBTUMsZUFBZSxHQUFHLENBQUNDLEdBQUQsRUFBTUMsR0FBTixFQUFXQyxJQUFYLEtBQW9CO0FBQ3hDTCxFQUFBQSxTQUFTLENBQUNNLElBQVYsQ0FBZUgsR0FBRyxDQUFDSSxLQUFuQixFQUEwQkMsUUFBMUIsQ0FBbUMsT0FBbkMsRUFBNENBLFFBQTVDLENBQXFELE1BQXJELEVBQ0tDLElBREwsQ0FDV0MsU0FBRCxJQUFlO0FBQ2pCTixJQUFBQSxHQUFHLENBQUNPLFVBQUosR0FBaUIs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LE1BQUFBLFFBQVEsRUFBQ1g7QUFBMUIsS0FBVDtBQUNILEdBTEwsRUFLUXBCLEdBQUQsSUFBU1YsSUFBSSxDQUFDVSxHQUFELENBTHBCLEVBTUtDLEtBTkwsQ0FNWUQsR0FBRCxJQUFTO0FBQ1pYLElBQUFBLEdBQUcsQ0FBQ08sVUFBSixHQUFpQixHQUFqQjtBQUNBUCxJQUFBQSxHQUFHLENBQUNRLFNBQUosQ0FBYyxjQUFkLEVBQThCLGtCQUE5QjtBQUNBUixJQUFBQSxHQUFHLENBQUNTLElBQUosQ0FBUztBQUFFQyxNQUFBQSxPQUFPLEVBQUUsS0FBWDtBQUFrQlMsTUFBQUEsT0FBTyxFQUFFO0FBQTNCLEtBQVQ7QUFDSCxHQVZMO0FBV0gsQ0FaRDs7QUFjQWEsT0FBTyxDQUFDQyxzQkFBUixHQUFpQ0Esc0JBQWpDO0FBQ0FELE9BQU8sQ0FBQ0ksa0JBQVIsR0FBNkJBLGtCQUE3QjtBQUNBSixPQUFPLENBQUNRLGtCQUFSLEdBQTZCQSxrQkFBN0IsQyxDQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgU2NoZWR1bGVzID0gcmVxdWlyZSgnLi4vbW9kZWxzL3NjaGVkdWxlcycpO1xyXG5cclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyBcclxuLy8gICAgICAgICAgICAgIFNjaGVkdWxlIE9wZXJhdGlvbnMgXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG5jb25zdCBnZXRBbGxTY2hlZHVsZXMgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIFNjaGVkdWxlcy5maW5kKHJlcS5xdWVyeSkucG9wdWxhdGUoXCJwbGFjZVwiKS5wb3B1bGF0ZShcInVzZXJcIilcclxuICAgICAgICAudGhlbigoc2NoZWR1bGVzKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHNjaGVkdWxlczpzY2hlZHVsZXMgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpO1xyXG59XHJcblxyXG5jb25zdCBnZXRBbGxTY2hlZHVsZXNGb3JBVXNlciA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgdmFyIHF1ZXJ5ID0geyBcInVzZXJcIjogU3RyaW5nKHJlcS5wYXJhbXMudXNlcklkKSB9O1xyXG4gICAgU2NoZWR1bGVzLmZpbmQocXVlcnkpLnBvcHVsYXRlKFwicGxhY2VcIilcclxuICAgICAgICAudGhlbigoc2NoZWR1bGVzKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHNjaGVkdWxlczpzY2hlZHVsZXMgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gIHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDQ7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIGNvbnN0IG1zZyA9IGVyci5fbWVzc2FnZTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogbXNnIH0pO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA1MDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogZmFsc2UsIG1lc3NhZ2U6IFwiRmFpbGVkIHRvIGdldCBkYXRhXCIgfSk7XHJcbiAgICAgICAgfSk7XHJcbn1cclxuXHJcbmNvbnN0IGFkZFNjaGVkdWxlID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICB2YXIgc2NoZWR1bGUgPSB7XHJcbiAgICAgICAgdXNlcjogcmVxLmJvZHkudXNlcixcclxuICAgICAgICBwbGFjZTogcmVxLmJvZHkucGxhY2UsXHJcbiAgICAgICAgZGF0ZTogcmVxLmJvZHkuZGF0ZSxcclxuICAgICAgICBzdGF0ZTogXCJuZXdcIixcclxuICAgICAgICB0cmF2ZWxsaW5nTWV0aG9kOiByZXEuYm9keS50cmF2ZWxsaW5nTWV0aG9kXHJcbiAgICB9XHJcbiAgICBTY2hlZHVsZXMuY3JlYXRlKHNjaGVkdWxlKVxyXG4gICAgICAgIC50aGVuKChzY2hlZHVsZSkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCBzY2hlZHVsZTpzY2hlZHVsZSB9KTtcclxuICAgICAgICB9LCAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNDAzO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICBjb25zdCBtc2cgPSBlcnIuX21lc3NhZ2U7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogZmFsc2UsIG1lc3NhZ2U6IG1zZyB9KTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IGZhbHNlLCBtZXNzYWdlOiBcIkZhaWxlZCB0byBhZGQgYSBzY2hlZHVsZVwiIH0pO1xyXG4gICAgICAgIH0pO1xyXG59XHJcblxyXG5jb25zdCBkZWxldGVBbGxTY2hlZHVsZXMgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIFNjaGVkdWxlcy5yZW1vdmUoe30pXHJcbiAgICAgICAgLnRoZW4oKHJlc3ApID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHJlc3ApO1xyXG4gICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuZXhwb3J0cy5nZXRBbGxTY2hlZHVsZXMgPSBnZXRBbGxTY2hlZHVsZXM7XHJcbmV4cG9ydHMuYWRkU2NoZWR1bGUgPSBhZGRTY2hlZHVsZTtcclxuZXhwb3J0cy5kZWxldGVBbGxTY2hlZHVsZXMgPSBkZWxldGVBbGxTY2hlZHVsZXM7XHJcbmV4cG9ydHMuZ2V0QWxsU2NoZWR1bGVzRm9yQVVzZXIgPSBnZXRBbGxTY2hlZHVsZXNGb3JBVXNlcjtcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuLy8gXHJcbi8vICAgICAgICAgICAgICBTY2hlZHVsZSBPcGVyYXRpb25zIFNwZWNpZmllZCBieSBJRFxyXG4vLyBcclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuY29uc3QgZ2V0U2NoZWR1bGVEZXRhaWxzQnlJZCA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgU2NoZWR1bGVzLmZpbmRCeUlkKHJlcS5wYXJhbXMuc2NoZWR1bGVJZClcclxuICAgICAgICAudGhlbigoc2NoZWR1bGUpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgc2NoZWR1bGU6c2NoZWR1bGUgfSk7XHJcbiAgICAgICAgfSwgIChlcnIpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDQ7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogZmFsc2UsIG1lc3NhZ2U6IFwiQ291bGQgbm90IGZpbmQgdGhlIHBsYWNlXCIgfSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuY29uc3QgdXBkYXRlU2NoZWR1bGVCeUlkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICBTY2hlZHVsZXMuZmluZEJ5SWRBbmRVcGRhdGUocmVxLnBhcmFtcy5zY2hlZHVsZUlkLCB7XHJcbiAgICAgICAgJHNldDogcmVxLmJvZHlcclxuICAgIH0sIHsgbmV3OiB0cnVlIH0pXHJcbiAgICAgICAgLnRoZW4oKHNjaGVkdWxlKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHNjaGVkdWxlOnNjaGVkdWxlIH0pO1xyXG4gICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogXCJVcGRhdGUgZmFpbGVkXCIgfSk7XHJcbiAgICAgICAgfSk7XHJcbn1cclxuXHJcbmNvbnN0IGRlbGV0ZVNjaGVkdWxlQnlJZCA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgU2NoZWR1bGVzLmZpbmRCeUlkQW5kUmVtb3ZlKHJlcS5wYXJhbXMuc2NoZWR1bGVJZClcclxuICAgICAgICAudGhlbigocmVzcCkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCByZXNwb25zZTpyZXNwIH0pO1xyXG4gICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogXCJEZWxldGUgZmFpbGVkXCIgfSk7XHJcbiAgICAgICAgfSk7XHJcbn1cclxuXHJcbmV4cG9ydHMuZ2V0U2NoZWR1bGVEZXRhaWxzQnlJZCA9IGdldFNjaGVkdWxlRGV0YWlsc0J5SWQ7XHJcbmV4cG9ydHMudXBkYXRlU2NoZWR1bGVCeUlkID0gdXBkYXRlU2NoZWR1bGVCeUlkO1xyXG5leHBvcnRzLmRlbGV0ZVNjaGVkdWxlQnlJZCA9IGRlbGV0ZVNjaGVkdWxlQnlJZDtcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuLy8gXHJcbi8vICAgICAgICAgICAgICBTY2hlZHVsZSBPcGVyYXRpb25zIFNwZWNpZmllZCBieSBVc2VySURcclxuLy8gXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbi8vIGNvbnN0IGdldFNjaGVkdWxlRGV0YWlsc0J5VXNlcklkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbi8vICAgICBTY2hlZHVsZXMuZmluZEJ5SWQocmVxLnBhcmFtcy5zY2hlZHVsZUlkKVxyXG4vLyAgICAgICAgIC50aGVuKChzY2hlZHVsZSkgPT4ge1xyXG4vLyAgICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuLy8gICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuLy8gICAgICAgICAgICAgcmVzLmpzb24oc2NoZWR1bGUpO1xyXG4vLyAgICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuLy8gICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxuLy8gfVxyXG5cclxuLy8gY29uc3QgdXBkYXRlU2NoZWR1bGVCeVVzZXJJZCA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4vLyAgICAgU2NoZWR1bGVzLmZpbmRCeUlkQW5kVXBkYXRlKHJlcS5wYXJhbXMuc2NoZWR1bGVJZCwge1xyXG4vLyAgICAgICAgICRzZXQ6IHJlcS5ib2R5XHJcbi8vICAgICB9LCB7IG5ldzogdHJ1ZSB9KVxyXG4vLyAgICAgICAgIC50aGVuKChzY2hlZHVsZSkgPT4ge1xyXG4vLyAgICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuLy8gICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuLy8gICAgICAgICAgICAgcmVzLmpzb24oc2NoZWR1bGUpO1xyXG4vLyAgICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuLy8gICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxuLy8gfVxyXG5cclxuLy8gY29uc3QgZGVsZXRlU2NoZWR1bGVCeVVzZXJJZCA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4vLyAgICAgU2NoZWR1bGVzLmZpbmRCeUlkQW5kUmVtb3ZlKHJlcS5wYXJhbXMuc2NoZWR1bGVJZClcclxuLy8gICAgICAgICAudGhlbigocmVzcCkgPT4ge1xyXG4vLyAgICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuLy8gICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuLy8gICAgICAgICAgICAgcmVzLmpzb24ocmVzcCk7XHJcbi8vICAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4vLyAgICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpO1xyXG4vLyB9Il19\",\"originalCode\":\"const Schedules = require('../models/schedules');\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Schedule Operations \\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nconst getAllSchedules = (req, res, next) => {\\r\\n Schedules.find(req.query).populate(\\\"place\\\").populate(\\\"user\\\")\\r\\n .then((schedules) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, schedules:schedules });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst getAllSchedulesForAUser = (req, res, next) => {\\r\\n var query = { \\\"user\\\": String(req.params.userId) };\\r\\n Schedules.find(query).populate(\\\"place\\\")\\r\\n .then((schedules) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, schedules:schedules });\\r\\n }, (err) => {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n const msg = err._message;\\r\\n res.json({ success: false, message: msg });\\r\\n })\\r\\n .catch((err) => {\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: \\\"Failed to get data\\\" });\\r\\n });\\r\\n}\\r\\n\\r\\nconst addSchedule = (req, res, next) => {\\r\\n var schedule = {\\r\\n user: req.body.user,\\r\\n place: req.body.place,\\r\\n date: req.body.date,\\r\\n state: \\\"new\\\",\\r\\n travellingMethod: req.body.travellingMethod\\r\\n }\\r\\n Schedules.create(schedule)\\r\\n .then((schedule) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, schedule:schedule });\\r\\n }, (err) => {\\r\\n res.statusCode = 403;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n const msg = err._message;\\r\\n res.json({ success: false, message: msg });\\r\\n })\\r\\n .catch((err) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: \\\"Failed to add a schedule\\\" });\\r\\n });\\r\\n}\\r\\n\\r\\nconst deleteAllSchedules = (req, res, next) => {\\r\\n Schedules.remove({})\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json(resp);\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nexports.getAllSchedules = getAllSchedules;\\r\\nexports.addSchedule = addSchedule;\\r\\nexports.deleteAllSchedules = deleteAllSchedules;\\r\\nexports.getAllSchedulesForAUser = getAllSchedulesForAUser;\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Schedule Operations Specified by ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nconst getScheduleDetailsById = (req, res, next) => {\\r\\n Schedules.findById(req.params.scheduleId)\\r\\n .then((schedule) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, schedule:schedule });\\r\\n }, (err) => {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: \\\"Could not find the place\\\" });\\r\\n })\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst updateScheduleById = (req, res, next) => {\\r\\n Schedules.findByIdAndUpdate(req.params.scheduleId, {\\r\\n $set: req.body\\r\\n }, { new: true })\\r\\n .then((schedule) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, schedule:schedule });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: \\\"Update failed\\\" });\\r\\n });\\r\\n}\\r\\n\\r\\nconst deleteScheduleById = (req, res, next) => {\\r\\n Schedules.findByIdAndRemove(req.params.scheduleId)\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, response:resp });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: \\\"Delete failed\\\" });\\r\\n });\\r\\n}\\r\\n\\r\\nexports.getScheduleDetailsById = getScheduleDetailsById;\\r\\nexports.updateScheduleById = updateScheduleById;\\r\\nexports.deleteScheduleById = deleteScheduleById;\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Schedule Operations Specified by UserID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\n// const getScheduleDetailsByUserId = (req, res, next) => {\\r\\n// Schedules.findById(req.params.scheduleId)\\r\\n// .then((schedule) => {\\r\\n// res.statusCode = 200;\\r\\n// res.setHeader('Content-Type', 'application/json');\\r\\n// res.json(schedule);\\r\\n// }, (err) => next(err))\\r\\n// .catch((err) => next(err));\\r\\n// }\\r\\n\\r\\n// const updateScheduleByUserId = (req, res, next) => {\\r\\n// Schedules.findByIdAndUpdate(req.params.scheduleId, {\\r\\n// $set: req.body\\r\\n// }, { new: true })\\r\\n// .then((schedule) => {\\r\\n// res.statusCode = 200;\\r\\n// res.setHeader('Content-Type', 'application/json');\\r\\n// res.json(schedule);\\r\\n// }, (err) => next(err))\\r\\n// .catch((err) => next(err));\\r\\n// }\\r\\n\\r\\n// const deleteScheduleByUserId = (req, res, next) => {\\r\\n// Schedules.findByIdAndRemove(req.params.scheduleId)\\r\\n// .then((resp) => {\\r\\n// res.statusCode = 200;\\r\\n// res.setHeader('Content-Type', 'application/json');\\r\\n// res.json(resp);\\r\\n// }, (err) => next(err))\\r\\n// .catch((err) => next(err));\\r\\n// }\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/df/scheduleController_df2aee56329a17301dcb5de3e55455e9.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2542\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\scheduleController.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":22878,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":22875,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"getAllSchedules\",\"ranges\":[{\"startOffset\":382,\"endOffset\":688,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getAllSchedulesForAUser\",\"ranges\":[{\"startOffset\":723,\"endOffset\":1396,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"addSchedule\",\"ranges\":[{\"startOffset\":1419,\"endOffset\":2190,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"deleteAllSchedules\",\"ranges\":[{\"startOffset\":2220,\"endOffset\":2430,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getScheduleDetailsById\",\"ranges\":[{\"startOffset\":2883,\"endOffset\":3331,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"updateScheduleById\",\"ranges\":[{\"startOffset\":3361,\"endOffset\":3854,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"deleteScheduleById\",\"ranges\":[{\"startOffset\":3884,\"endOffset\":4322,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const mongoose = require('mongoose');\\n\\nconst Schema = mongoose.Schema;\\n\\nrequire('mongoose-currency').loadType(mongoose);\\n\\nconst Currency = mongoose.Types.Currency;\\nconst scheduleSchema = new Schema({\\n user: {\\n type: mongoose.Schema.Types.ObjectId,\\n ref: \\\"User\\\"\\n },\\n place: {\\n type: mongoose.Schema.Types.ObjectId,\\n ref: \\\"Place\\\"\\n },\\n date: {\\n type: Date,\\n required: true\\n },\\n fair: {\\n type: Currency,\\n min: 0\\n },\\n state: {\\n type: String,\\n default: \\\"new\\\",\\n enum: [\\\"new\\\", \\\"not-completed\\\", \\\"canceled\\\", \\\"completed\\\"]\\n },\\n travellingMethod: {\\n type: String,\\n required: true,\\n enum: ['Bus', 'Car', 'Train', 'Threewheeler', 'Foot']\\n }\\n}, {\\n timestamps: true\\n});\\nvar Schedules = mongoose.model('Schedule', scheduleSchema);\\nmodule.exports = Schedules;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNjaGVkdWxlcy5qcyJdLCJuYW1lcyI6WyJtb25nb29zZSIsInJlcXVpcmUiLCJTY2hlbWEiLCJsb2FkVHlwZSIsIkN1cnJlbmN5IiwiVHlwZXMiLCJzY2hlZHVsZVNjaGVtYSIsInVzZXIiLCJ0eXBlIiwiT2JqZWN0SWQiLCJyZWYiLCJwbGFjZSIsImRhdGUiLCJEYXRlIiwicmVxdWlyZWQiLCJmYWlyIiwibWluIiwic3RhdGUiLCJTdHJpbmciLCJkZWZhdWx0IiwiZW51bSIsInRyYXZlbGxpbmdNZXRob2QiLCJ0aW1lc3RhbXBzIiwiU2NoZWR1bGVzIiwibW9kZWwiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxRQUFRLEdBQUdDLE9BQU8sQ0FBQyxVQUFELENBQXhCOztBQUNBLE1BQU1DLE1BQU0sR0FBR0YsUUFBUSxDQUFDRSxNQUF4Qjs7QUFDQUQsT0FBTyxDQUFDLG1CQUFELENBQVAsQ0FBNkJFLFFBQTdCLENBQXNDSCxRQUF0Qzs7QUFDQSxNQUFNSSxRQUFRLEdBQUdKLFFBQVEsQ0FBQ0ssS0FBVCxDQUFlRCxRQUFoQztBQUNBLE1BQU1FLGNBQWMsR0FBRyxJQUFJSixNQUFKLENBQVc7QUFDOUJLLEVBQUFBLElBQUksRUFBRTtBQUNGQyxJQUFBQSxJQUFJLEVBQUVSLFFBQVEsQ0FBQ0UsTUFBVCxDQUFnQkcsS0FBaEIsQ0FBc0JJLFFBRDFCO0FBRUZDLElBQUFBLEdBQUcsRUFBRTtBQUZILEdBRHdCO0FBSzlCQyxFQUFBQSxLQUFLLEVBQUU7QUFDSEgsSUFBQUEsSUFBSSxFQUFFUixRQUFRLENBQUNFLE1BQVQsQ0FBZ0JHLEtBQWhCLENBQXNCSSxRQUR6QjtBQUVIQyxJQUFBQSxHQUFHLEVBQUU7QUFGRixHQUx1QjtBQVM5QkUsRUFBQUEsSUFBSSxFQUFFO0FBQ0ZKLElBQUFBLElBQUksRUFBRUssSUFESjtBQUVGQyxJQUFBQSxRQUFRLEVBQUU7QUFGUixHQVR3QjtBQWE5QkMsRUFBQUEsSUFBSSxFQUFFO0FBQ0ZQLElBQUFBLElBQUksRUFBRUosUUFESjtBQUVGWSxJQUFBQSxHQUFHLEVBQUU7QUFGSCxHQWJ3QjtBQWlCOUJDLEVBQUFBLEtBQUssRUFBRTtBQUNIVCxJQUFBQSxJQUFJLEVBQUVVLE1BREg7QUFFSEMsSUFBQUEsT0FBTyxFQUFFLEtBRk47QUFHSEMsSUFBQUEsSUFBSSxFQUFFLENBQUMsS0FBRCxFQUFPLGVBQVAsRUFBd0IsVUFBeEIsRUFBb0MsV0FBcEM7QUFISCxHQWpCdUI7QUFzQjlCQyxFQUFBQSxnQkFBZ0IsRUFBRTtBQUNkYixJQUFBQSxJQUFJLEVBQUVVLE1BRFE7QUFFZEosSUFBQUEsUUFBUSxFQUFFLElBRkk7QUFHZE0sSUFBQUEsSUFBSSxFQUFFLENBQUMsS0FBRCxFQUFRLEtBQVIsRUFBZSxPQUFmLEVBQXdCLGNBQXhCLEVBQXdDLE1BQXhDO0FBSFE7QUF0QlksQ0FBWCxFQTJCcEI7QUFDQ0UsRUFBQUEsVUFBVSxFQUFFO0FBRGIsQ0EzQm9CLENBQXZCO0FBK0JBLElBQUlDLFNBQVMsR0FBR3ZCLFFBQVEsQ0FBQ3dCLEtBQVQsQ0FBZSxVQUFmLEVBQTJCbEIsY0FBM0IsQ0FBaEI7QUFFQW1CLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQkgsU0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBtb25nb29zZSA9IHJlcXVpcmUoJ21vbmdvb3NlJyk7XHJcbmNvbnN0IFNjaGVtYSA9IG1vbmdvb3NlLlNjaGVtYTtcclxucmVxdWlyZSgnbW9uZ29vc2UtY3VycmVuY3knKS5sb2FkVHlwZShtb25nb29zZSk7XHJcbmNvbnN0IEN1cnJlbmN5ID0gbW9uZ29vc2UuVHlwZXMuQ3VycmVuY3k7XHJcbmNvbnN0IHNjaGVkdWxlU2NoZW1hID0gbmV3IFNjaGVtYSh7XHJcbiAgICB1c2VyOiB7XHJcbiAgICAgICAgdHlwZTogbW9uZ29vc2UuU2NoZW1hLlR5cGVzLk9iamVjdElkLFxyXG4gICAgICAgIHJlZjogXCJVc2VyXCJcclxuICAgIH0sXHJcbiAgICBwbGFjZToge1xyXG4gICAgICAgIHR5cGU6IG1vbmdvb3NlLlNjaGVtYS5UeXBlcy5PYmplY3RJZCxcclxuICAgICAgICByZWY6IFwiUGxhY2VcIlxyXG4gICAgfSxcclxuICAgIGRhdGU6IHtcclxuICAgICAgICB0eXBlOiBEYXRlLFxyXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlXHJcbiAgICB9LFxyXG4gICAgZmFpcjoge1xyXG4gICAgICAgIHR5cGU6IEN1cnJlbmN5LFxyXG4gICAgICAgIG1pbjogMFxyXG4gICAgfSxcclxuICAgIHN0YXRlOiB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICAgIGRlZmF1bHQ6IFwibmV3XCIsXHJcbiAgICAgICAgZW51bTogW1wibmV3XCIsXCJub3QtY29tcGxldGVkXCIsIFwiY2FuY2VsZWRcIiwgXCJjb21wbGV0ZWRcIl1cclxuICAgIH0sXHJcbiAgICB0cmF2ZWxsaW5nTWV0aG9kOiB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxyXG4gICAgICAgIGVudW06IFsnQnVzJywgJ0NhcicsICdUcmFpbicsICdUaHJlZXdoZWVsZXInLCAnRm9vdCddXHJcbiAgICB9XHJcbn0sIHtcclxuICAgIHRpbWVzdGFtcHM6IHRydWVcclxufSk7XHJcblxyXG52YXIgU2NoZWR1bGVzID0gbW9uZ29vc2UubW9kZWwoJ1NjaGVkdWxlJywgc2NoZWR1bGVTY2hlbWEpO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBTY2hlZHVsZXM7Il19\",\"originalCode\":\"const mongoose = require('mongoose');\\r\\nconst Schema = mongoose.Schema;\\r\\nrequire('mongoose-currency').loadType(mongoose);\\r\\nconst Currency = mongoose.Types.Currency;\\r\\nconst scheduleSchema = new Schema({\\r\\n user: {\\r\\n type: mongoose.Schema.Types.ObjectId,\\r\\n ref: \\\"User\\\"\\r\\n },\\r\\n place: {\\r\\n type: mongoose.Schema.Types.ObjectId,\\r\\n ref: \\\"Place\\\"\\r\\n },\\r\\n date: {\\r\\n type: Date,\\r\\n required: true\\r\\n },\\r\\n fair: {\\r\\n type: Currency,\\r\\n min: 0\\r\\n },\\r\\n state: {\\r\\n type: String,\\r\\n default: \\\"new\\\",\\r\\n enum: [\\\"new\\\",\\\"not-completed\\\", \\\"canceled\\\", \\\"completed\\\"]\\r\\n },\\r\\n travellingMethod: {\\r\\n type: String,\\r\\n required: true,\\r\\n enum: ['Bus', 'Car', 'Train', 'Threewheeler', 'Foot']\\r\\n }\\r\\n}, {\\r\\n timestamps: true\\r\\n});\\r\\n\\r\\nvar Schedules = mongoose.model('Schedule', scheduleSchema);\\r\\n\\r\\nmodule.exports = Schedules;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/e2/schedules_e2f8e79bc28961f4db3736c92d490e47.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2543\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\models\\\\schedules.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":4238,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":4235,\"count\":1}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const express = require('express');\\n\\nconst bodyParser = require('body-parser');\\n\\nconst cors = require('./cors');\\n\\nconst {\\n checkSchema\\n} = require('express-validator');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nvar validationRules = require('../middleware/validation');\\n\\nconst touristController = require('../controllers/touristController');\\n\\nconst touristRouter = express.Router();\\ntouristRouter.use(bodyParser.json()); // **********************************************************************************\\n// \\n// Tourist Routes\\n// \\n// **********************************************************************************\\n\\ntouristRouter.route('/').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, touristController.getAllTourists).post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, touristController.addTourist).put(cors.corsWithOptions, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('PUT operation not supported on /tourists');\\n}).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, touristController.deleteAllTourists);\\ntouristRouter.route('/search').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).post(cors.corsWithOptions, authenticate.verifyUser, touristController.getAllTouristsByName); // **********************************************************************************\\n// \\n// Tourist Routes Specified by ID\\n// \\n// **********************************************************************************\\n\\ntouristRouter.route('/:touristId').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, touristController.getTouristDetailsById).post(cors.corsWithOptions, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('POST operation not supported on /tourists/' + req.params.touristId);\\n}).put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, touristController.updateTouristDetailsById).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, touristController.deleteATouristById);\\nmodule.exports = touristRouter;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRvdXJpc3RSb3V0ZXIuanMiXSwibmFtZXMiOlsiZXhwcmVzcyIsInJlcXVpcmUiLCJib2R5UGFyc2VyIiwiY29ycyIsImNoZWNrU2NoZW1hIiwiYXV0aGVudGljYXRlIiwidmFsaWRhdGlvblJ1bGVzIiwidG91cmlzdENvbnRyb2xsZXIiLCJ0b3VyaXN0Um91dGVyIiwiUm91dGVyIiwidXNlIiwianNvbiIsInJvdXRlIiwib3B0aW9ucyIsImNvcnNXaXRoT3B0aW9ucyIsInJlcSIsInJlcyIsInNlbmRTdGF0dXMiLCJnZXQiLCJ2ZXJpZnlVc2VyIiwiZ2V0QWxsVG91cmlzdHMiLCJwb3N0IiwidmVyaWZ5TW9kZXJhdGVyIiwiYWRkVG91cmlzdCIsInB1dCIsIm5leHQiLCJzdGF0dXNDb2RlIiwiZW5kIiwiZGVsZXRlIiwidmVyaWZ5QWRtaW4iLCJkZWxldGVBbGxUb3VyaXN0cyIsImdldEFsbFRvdXJpc3RzQnlOYW1lIiwiZ2V0VG91cmlzdERldGFpbHNCeUlkIiwicGFyYW1zIiwidG91cmlzdElkIiwidXBkYXRlVG91cmlzdERldGFpbHNCeUlkIiwiZGVsZXRlQVRvdXJpc3RCeUlkIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsT0FBTyxHQUFHQyxPQUFPLENBQUMsU0FBRCxDQUF2Qjs7QUFDQSxNQUFNQyxVQUFVLEdBQUdELE9BQU8sQ0FBQyxhQUFELENBQTFCOztBQUVBLE1BQU1FLElBQUksR0FBR0YsT0FBTyxDQUFDLFFBQUQsQ0FBcEI7O0FBQ0EsTUFBTTtBQUFFRyxFQUFBQTtBQUFGLElBQWtCSCxPQUFPLENBQUMsbUJBQUQsQ0FBL0I7O0FBQ0EsSUFBSUksWUFBWSxHQUFHSixPQUFPLENBQUMsNEJBQUQsQ0FBMUI7O0FBQ0EsSUFBSUssZUFBZSxHQUFHTCxPQUFPLENBQUMsMEJBQUQsQ0FBN0I7O0FBQ0EsTUFBTU0saUJBQWlCLEdBQUdOLE9BQU8sQ0FBQyxrQ0FBRCxDQUFqQzs7QUFFQSxNQUFNTyxhQUFhLEdBQUdSLE9BQU8sQ0FBQ1MsTUFBUixFQUF0QjtBQUVBRCxhQUFhLENBQUNFLEdBQWQsQ0FBa0JSLFVBQVUsQ0FBQ1MsSUFBWCxFQUFsQixFLENBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQUgsYUFBYSxDQUFDSSxLQUFkLENBQW9CLEdBQXBCLEVBQ0tDLE9BREwsQ0FDYVYsSUFBSSxDQUFDVyxlQURsQixFQUNtQyxDQUFDQyxHQUFELEVBQU1DLEdBQU4sS0FBYztBQUFFQSxFQUFBQSxHQUFHLENBQUNDLFVBQUosQ0FBZSxHQUFmO0FBQXNCLENBRHpFLEVBRUtDLEdBRkwsQ0FFU2YsSUFBSSxDQUFDQSxJQUZkLEVBRXFCRSxZQUFZLENBQUNjLFVBRmxDLEVBRWdEWixpQkFBaUIsQ0FBQ2EsY0FGbEUsRUFHS0MsSUFITCxDQUdVbEIsSUFBSSxDQUFDVyxlQUhmLEVBR2lDVCxZQUFZLENBQUNjLFVBSDlDLEVBRzBEZCxZQUFZLENBQUNpQixlQUh2RSxFQUd3RmYsaUJBQWlCLENBQUNnQixVQUgxRyxFQUlLQyxHQUpMLENBSVNyQixJQUFJLENBQUNXLGVBSmQsRUFJK0IsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEVBQVdTLElBQVgsS0FBb0I7QUFDM0NULEVBQUFBLEdBQUcsQ0FBQ1UsVUFBSixHQUFpQixHQUFqQjtBQUNBVixFQUFBQSxHQUFHLENBQUNXLEdBQUosQ0FBUSwwQ0FBUjtBQUNILENBUEwsRUFRS0MsTUFSTCxDQVFZekIsSUFBSSxDQUFDVyxlQVJqQixFQVFrQ1QsWUFBWSxDQUFDYyxVQVIvQyxFQVEyRGQsWUFBWSxDQUFDd0IsV0FSeEUsRUFRc0Z0QixpQkFBaUIsQ0FBQ3VCLGlCQVJ4RztBQVNBdEIsYUFBYSxDQUFDSSxLQUFkLENBQW9CLFNBQXBCLEVBQ0tDLE9BREwsQ0FDYVYsSUFBSSxDQUFDVyxlQURsQixFQUNtQyxDQUFDQyxHQUFELEVBQU1DLEdBQU4sS0FBYztBQUFFQSxFQUFBQSxHQUFHLENBQUNDLFVBQUosQ0FBZSxHQUFmO0FBQXNCLENBRHpFLEVBRUtJLElBRkwsQ0FFVWxCLElBQUksQ0FBQ1csZUFGZixFQUVnQ1QsWUFBWSxDQUFDYyxVQUY3QyxFQUUwRFosaUJBQWlCLENBQUN3QixvQkFGNUUsRSxDQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUF2QixhQUFhLENBQUNJLEtBQWQsQ0FBb0IsYUFBcEIsRUFDS0MsT0FETCxDQUNhVixJQUFJLENBQUNXLGVBRGxCLEVBQ21DLENBQUNDLEdBQUQsRUFBTUMsR0FBTixLQUFjO0FBQUVBLEVBQUFBLEdBQUcsQ0FBQ0MsVUFBSixDQUFlLEdBQWY7QUFBc0IsQ0FEekUsRUFFS0MsR0FGTCxDQUVTZixJQUFJLENBQUNBLElBRmQsRUFFb0JFLFlBQVksQ0FBQ2MsVUFGakMsRUFFK0NaLGlCQUFpQixDQUFDeUIscUJBRmpFLEVBR0tYLElBSEwsQ0FHVWxCLElBQUksQ0FBQ1csZUFIZixFQUdnQyxDQUFDQyxHQUFELEVBQU1DLEdBQU4sRUFBV1MsSUFBWCxLQUFvQjtBQUM1Q1QsRUFBQUEsR0FBRyxDQUFDVSxVQUFKLEdBQWlCLEdBQWpCO0FBQ0FWLEVBQUFBLEdBQUcsQ0FBQ1csR0FBSixDQUFRLCtDQUErQ1osR0FBRyxDQUFDa0IsTUFBSixDQUFXQyxTQUFsRTtBQUNILENBTkwsRUFPS1YsR0FQTCxDQU9TckIsSUFBSSxDQUFDVyxlQVBkLEVBTytCVCxZQUFZLENBQUNjLFVBUDVDLEVBT3dEZCxZQUFZLENBQUNpQixlQVByRSxFQU91RmYsaUJBQWlCLENBQUM0Qix3QkFQekcsRUFRS1AsTUFSTCxDQVFZekIsSUFBSSxDQUFDVyxlQVJqQixFQVFtQ1QsWUFBWSxDQUFDYyxVQVJoRCxFQVE0RGQsWUFBWSxDQUFDaUIsZUFSekUsRUFRMEZmLGlCQUFpQixDQUFDNkIsa0JBUjVHO0FBVUFDLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQjlCLGFBQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZXhwcmVzcyA9IHJlcXVpcmUoJ2V4cHJlc3MnKTtcclxuY29uc3QgYm9keVBhcnNlciA9IHJlcXVpcmUoJ2JvZHktcGFyc2VyJyk7XHJcblxyXG5jb25zdCBjb3JzID0gcmVxdWlyZSgnLi9jb3JzJyk7XHJcbmNvbnN0IHsgY2hlY2tTY2hlbWEgfSA9IHJlcXVpcmUoJ2V4cHJlc3MtdmFsaWRhdG9yJyk7XHJcbnZhciBhdXRoZW50aWNhdGUgPSByZXF1aXJlKCcuLi9taWRkbGV3YXJlL2F1dGhlbnRpY2F0ZScpO1xyXG52YXIgdmFsaWRhdGlvblJ1bGVzID0gcmVxdWlyZSgnLi4vbWlkZGxld2FyZS92YWxpZGF0aW9uJyk7XHJcbmNvbnN0IHRvdXJpc3RDb250cm9sbGVyID0gcmVxdWlyZSgnLi4vY29udHJvbGxlcnMvdG91cmlzdENvbnRyb2xsZXInKVxyXG5cclxuY29uc3QgdG91cmlzdFJvdXRlciA9IGV4cHJlc3MuUm91dGVyKCk7XHJcblxyXG50b3VyaXN0Um91dGVyLnVzZShib2R5UGFyc2VyLmpzb24oKSk7XHJcblxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbi8vIFxyXG4vLyAgICAgICAgICAgICAgVG91cmlzdCBSb3V0ZXNcclxuLy8gXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbnRvdXJpc3RSb3V0ZXIucm91dGUoJy8nKVxyXG4gICAgLm9wdGlvbnMoY29ycy5jb3JzV2l0aE9wdGlvbnMsIChyZXEsIHJlcykgPT4geyByZXMuc2VuZFN0YXR1cygyMDApOyB9KVxyXG4gICAgLmdldChjb3JzLmNvcnMsICBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgICB0b3VyaXN0Q29udHJvbGxlci5nZXRBbGxUb3VyaXN0cylcclxuICAgIC5wb3N0KGNvcnMuY29yc1dpdGhPcHRpb25zLCAgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlNb2RlcmF0ZXIsIHRvdXJpc3RDb250cm9sbGVyLmFkZFRvdXJpc3QpXHJcbiAgICAucHV0KGNvcnMuY29yc1dpdGhPcHRpb25zLCAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwMztcclxuICAgICAgICByZXMuZW5kKCdQVVQgb3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQgb24gL3RvdXJpc3RzJyk7XHJcbiAgICB9KVxyXG4gICAgLmRlbGV0ZShjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgIHRvdXJpc3RDb250cm9sbGVyLmRlbGV0ZUFsbFRvdXJpc3RzKTtcclxudG91cmlzdFJvdXRlci5yb3V0ZSgnL3NlYXJjaCcpXHJcbiAgICAub3B0aW9ucyhjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcbiAgICAucG9zdChjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsICB0b3VyaXN0Q29udHJvbGxlci5nZXRBbGxUb3VyaXN0c0J5TmFtZSk7XHJcblxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbi8vIFxyXG4vLyAgICAgICAgICAgICAgVG91cmlzdCBSb3V0ZXMgU3BlY2lmaWVkIGJ5IElEXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG50b3VyaXN0Um91dGVyLnJvdXRlKCcvOnRvdXJpc3RJZCcpXHJcbiAgICAub3B0aW9ucyhjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcbiAgICAuZ2V0KGNvcnMuY29ycywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsICAgdG91cmlzdENvbnRyb2xsZXIuZ2V0VG91cmlzdERldGFpbHNCeUlkKVxyXG4gICAgLnBvc3QoY29ycy5jb3JzV2l0aE9wdGlvbnMsIChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNDAzO1xyXG4gICAgICAgIHJlcy5lbmQoJ1BPU1Qgb3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQgb24gL3RvdXJpc3RzLycgKyByZXEucGFyYW1zLnRvdXJpc3RJZCk7XHJcbiAgICB9KVxyXG4gICAgLnB1dChjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlNb2RlcmF0ZXIsICB0b3VyaXN0Q29udHJvbGxlci51cGRhdGVUb3VyaXN0RGV0YWlsc0J5SWQpXHJcbiAgICAuZGVsZXRlKGNvcnMuY29yc1dpdGhPcHRpb25zLCAgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlNb2RlcmF0ZXIsIHRvdXJpc3RDb250cm9sbGVyLmRlbGV0ZUFUb3VyaXN0QnlJZCk7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IHRvdXJpc3RSb3V0ZXI7Il19\",\"originalCode\":\"const express = require('express');\\r\\nconst bodyParser = require('body-parser');\\r\\n\\r\\nconst cors = require('./cors');\\r\\nconst { checkSchema } = require('express-validator');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\nvar validationRules = require('../middleware/validation');\\r\\nconst touristController = require('../controllers/touristController')\\r\\n\\r\\nconst touristRouter = express.Router();\\r\\n\\r\\ntouristRouter.use(bodyParser.json());\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Tourist Routes\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\ntouristRouter.route('/')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, touristController.getAllTourists)\\r\\n .post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, touristController.addTourist)\\r\\n .put(cors.corsWithOptions, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('PUT operation not supported on /tourists');\\r\\n })\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, touristController.deleteAllTourists);\\r\\ntouristRouter.route('/search')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .post(cors.corsWithOptions, authenticate.verifyUser, touristController.getAllTouristsByName);\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Tourist Routes Specified by ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\ntouristRouter.route('/:touristId')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, touristController.getTouristDetailsById)\\r\\n .post(cors.corsWithOptions, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('POST operation not supported on /tourists/' + req.params.touristId);\\r\\n })\\r\\n .put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, touristController.updateTouristDetailsById)\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, touristController.deleteATouristById);\\r\\n\\r\\nmodule.exports = touristRouter;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/0a/touristRouter_0ad938586662daadc81c6cb1ad2e0f53.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2545\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\touristRouter.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":9165,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":9162,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":796,\"endOffset\":836,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1050,\"endOffset\":1152,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1333,\"endOffset\":1373,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1761,\"endOffset\":1801,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1911,\"endOffset\":2038,\"count\":1}],\"isBlockCoverage\":true}]}},{\"codeTransformResult\":{\"code\":\"const Tourists = require('../models/users');\\n\\nconst utils = require('../utils/utils'); // **********************************************************************************\\n// \\n// Tourist Operations \\n// \\n// **********************************************************************************\\n\\n\\nconst getAllTourists = (req, res, next) => {\\n var query = {\\n \\\"role\\\": \\\"user\\\"\\n }; // var obj = Object.assign(query, { $text: { $search: searchBy } });\\n\\n Tourists.find(query).then(tourists => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n tourists: tourists\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst getAllTouristsByName = (req, res, next) => {\\n var query = {\\n \\\"role\\\": \\\"user\\\"\\n };\\n\\n if (req.body.similarTo) {\\n var searchBy = req.body.similarTo || {};\\n query = {\\n \\\"role\\\": \\\"user\\\",\\n $text: {\\n $search: searchBy\\n }\\n };\\n }\\n\\n var sortby = req.body.sortBy || {};\\n Tourists.find(query).sort(sortby).then(tourists => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n tourists: tourists\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst addTourist = async (req, res, next) => {\\n const randomPassword = utils.password_generator(10);\\n var tourist = {\\n username: req.body.email,\\n firstname: req.body.firstname,\\n lastname: req.body.lastname,\\n email: req.body.email,\\n mobile: req.body.mobile,\\n role: 'user'\\n };\\n\\n try {\\n Tourists.register(new Tourists(tourist), randomPassword, (err, tourist) => {\\n if (err) {\\n res.statusCode = 403;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: err.message\\n });\\n } else {\\n tourist.save((err, tourist) => {\\n if (err) {\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Error while Saving new user.'\\n });\\n }\\n\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n email: tourist.email,\\n password: randomPassword\\n });\\n });\\n }\\n });\\n } catch (error) {\\n next(err);\\n }\\n};\\n\\nconst deleteAllTourists = (req, res, next) => {\\n Tourists.remove({\\n \\\"role\\\": \\\"user\\\"\\n }).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n response: resp\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nexports.getAllTourists = getAllTourists;\\nexports.getAllTouristsByName = getAllTouristsByName;\\nexports.addTourist = addTourist;\\nexports.deleteAllTourists = deleteAllTourists; // **********************************************************************************\\n// \\n// Tourist Operations Specified by ID\\n// \\n// **********************************************************************************\\n\\nconst getTouristDetailsById = (req, res, next) => {\\n var touristId = req.params.touristId;\\n Tourists.findById(touristId).then(tourist => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n tourist: tourist\\n });\\n }, err => {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Could not find tourist with given ID'\\n });\\n }).catch(err => next(err));\\n};\\n\\nconst updateTouristDetailsById = (req, res, next) => {\\n Tourists.findByIdAndUpdate(req.params.touristId, {\\n $set: req.body\\n }, {\\n new: true\\n }).then(tourist => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n tourist: tourist\\n });\\n }, err => {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Could not find tourist with given ID'\\n });\\n }).catch(err => next(err));\\n};\\n\\nconst deleteATouristById = (req, res, next) => {\\n Tourists.findByIdAndRemove(req.params.touristId).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n response: resp\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nexports.getTouristDetailsById = getTouristDetailsById;\\nexports.updateTouristDetailsById = updateTouristDetailsById;\\nexports.deleteATouristById = deleteATouristById;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRvdXJpc3RDb250cm9sbGVyLmpzIl0sIm5hbWVzIjpbIlRvdXJpc3RzIiwicmVxdWlyZSIsInV0aWxzIiwiZ2V0QWxsVG91cmlzdHMiLCJyZXEiLCJyZXMiLCJuZXh0IiwicXVlcnkiLCJmaW5kIiwidGhlbiIsInRvdXJpc3RzIiwic3RhdHVzQ29kZSIsInNldEhlYWRlciIsImpzb24iLCJzdWNjZXNzIiwiZXJyIiwiY2F0Y2giLCJnZXRBbGxUb3VyaXN0c0J5TmFtZSIsImJvZHkiLCJzaW1pbGFyVG8iLCJzZWFyY2hCeSIsIiR0ZXh0IiwiJHNlYXJjaCIsInNvcnRieSIsInNvcnRCeSIsInNvcnQiLCJhZGRUb3VyaXN0IiwicmFuZG9tUGFzc3dvcmQiLCJwYXNzd29yZF9nZW5lcmF0b3IiLCJ0b3VyaXN0IiwidXNlcm5hbWUiLCJlbWFpbCIsImZpcnN0bmFtZSIsImxhc3RuYW1lIiwibW9iaWxlIiwicm9sZSIsInJlZ2lzdGVyIiwibWVzc2FnZSIsInNhdmUiLCJwYXNzd29yZCIsImVycm9yIiwiZGVsZXRlQWxsVG91cmlzdHMiLCJyZW1vdmUiLCJyZXNwIiwicmVzcG9uc2UiLCJleHBvcnRzIiwiZ2V0VG91cmlzdERldGFpbHNCeUlkIiwidG91cmlzdElkIiwicGFyYW1zIiwiZmluZEJ5SWQiLCJ1cGRhdGVUb3VyaXN0RGV0YWlsc0J5SWQiLCJmaW5kQnlJZEFuZFVwZGF0ZSIsIiRzZXQiLCJuZXciLCJkZWxldGVBVG91cmlzdEJ5SWQiLCJmaW5kQnlJZEFuZFJlbW92ZSJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsUUFBUSxHQUFHQyxPQUFPLENBQUMsaUJBQUQsQ0FBeEI7O0FBQ0EsTUFBTUMsS0FBSyxHQUFHRCxPQUFPLENBQUMsZ0JBQUQsQ0FBckIsQyxDQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBLE1BQU1FLGNBQWMsR0FBRyxDQUFDQyxHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUN2QyxNQUFJQyxLQUFLLEdBQUc7QUFBRSxZQUFRO0FBQVYsR0FBWixDQUR1QyxDQUV2Qzs7QUFDQ1AsRUFBQUEsUUFBUSxDQUFDUSxJQUFULENBQWNELEtBQWQsRUFDSUUsSUFESixDQUNVQyxRQUFELElBQWM7QUFDaEJMLElBQUFBLEdBQUcsQ0FBQ00sVUFBSixHQUFpQixHQUFqQjtBQUNBTixJQUFBQSxHQUFHLENBQUNPLFNBQUosQ0FBYyxjQUFkLEVBQThCLGtCQUE5QjtBQUNBUCxJQUFBQSxHQUFHLENBQUNRLElBQUosQ0FBUztBQUFFQyxNQUFBQSxPQUFPLEVBQUUsSUFBWDtBQUFpQkosTUFBQUEsUUFBUSxFQUFFQTtBQUEzQixLQUFUO0FBQ0gsR0FMSixFQUtPSyxHQUFELElBQVNULElBQUksQ0FBQ1MsR0FBRCxDQUxuQixFQU1JQyxLQU5KLENBTVdELEdBQUQsSUFBU1QsSUFBSSxDQUFDUyxHQUFELENBTnZCO0FBT0osQ0FWRDs7QUFZQSxNQUFNRSxvQkFBb0IsR0FBRyxDQUFDYixHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUM3QyxNQUFJQyxLQUFLLEdBQUc7QUFBRSxZQUFRO0FBQVYsR0FBWjs7QUFDQSxNQUFJSCxHQUFHLENBQUNjLElBQUosQ0FBU0MsU0FBYixFQUF3QjtBQUNwQixRQUFJQyxRQUFRLEdBQUdoQixHQUFHLENBQUNjLElBQUosQ0FBU0MsU0FBVCxJQUFzQixFQUFyQztBQUNBWixJQUFBQSxLQUFLLEdBQUc7QUFBRSxjQUFRLE1BQVY7QUFBa0JjLE1BQUFBLEtBQUssRUFBRTtBQUFFQyxRQUFBQSxPQUFPLEVBQUVGO0FBQVg7QUFBekIsS0FBUjtBQUNIOztBQUVELE1BQUlHLE1BQU0sR0FBR25CLEdBQUcsQ0FBQ2MsSUFBSixDQUFTTSxNQUFULElBQW1CLEVBQWhDO0FBQ0F4QixFQUFBQSxRQUFRLENBQUNRLElBQVQsQ0FBY0QsS0FBZCxFQUFxQmtCLElBQXJCLENBQTBCRixNQUExQixFQUNLZCxJQURMLENBQ1dDLFFBQUQsSUFBYztBQUNoQkwsSUFBQUEsR0FBRyxDQUFDTSxVQUFKLEdBQWlCLEdBQWpCO0FBQ0FOLElBQUFBLEdBQUcsQ0FBQ08sU0FBSixDQUFjLGNBQWQsRUFBOEIsa0JBQTlCO0FBQ0FQLElBQUFBLEdBQUcsQ0FBQ1EsSUFBSixDQUFTO0FBQUVDLE1BQUFBLE9BQU8sRUFBRSxJQUFYO0FBQWlCSixNQUFBQSxRQUFRLEVBQUVBO0FBQTNCLEtBQVQ7QUFDSCxHQUxMLEVBS1FLLEdBQUQsSUFBU1QsSUFBSSxDQUFDUyxHQUFELENBTHBCLEVBTUtDLEtBTkwsQ0FNWUQsR0FBRCxJQUFTVCxJQUFJLENBQUNTLEdBQUQsQ0FOeEI7QUFPSCxDQWZEOztBQWlCQSxNQUFNVyxVQUFVLEdBQUcsT0FBT3RCLEdBQVAsRUFBWUMsR0FBWixFQUFpQkMsSUFBakIsS0FBMEI7QUFDekMsUUFBTXFCLGNBQWMsR0FBR3pCLEtBQUssQ0FBQzBCLGtCQUFOLENBQXlCLEVBQXpCLENBQXZCO0FBQ0EsTUFBSUMsT0FBTyxHQUFHO0FBQ1ZDLElBQUFBLFFBQVEsRUFBRTFCLEdBQUcsQ0FBQ2MsSUFBSixDQUFTYSxLQURUO0FBRVZDLElBQUFBLFNBQVMsRUFBRTVCLEdBQUcsQ0FBQ2MsSUFBSixDQUFTYyxTQUZWO0FBR1ZDLElBQUFBLFFBQVEsRUFBRTdCLEdBQUcsQ0FBQ2MsSUFBSixDQUFTZSxRQUhUO0FBSVZGLElBQUFBLEtBQUssRUFBRTNCLEdBQUcsQ0FBQ2MsSUFBSixDQUFTYSxLQUpOO0FBS1ZHLElBQUFBLE1BQU0sRUFBRTlCLEdBQUcsQ0FBQ2MsSUFBSixDQUFTZ0IsTUFMUDtBQU1WQyxJQUFBQSxJQUFJLEVBQUU7QUFOSSxHQUFkOztBQVFBLE1BQUk7QUFDQW5DLElBQUFBLFFBQVEsQ0FBQ29DLFFBQVQsQ0FBa0IsSUFBSXBDLFFBQUosQ0FBYTZCLE9BQWIsQ0FBbEIsRUFDSUYsY0FESixFQUNvQixDQUFDWixHQUFELEVBQU1jLE9BQU4sS0FBa0I7QUFDOUIsVUFBSWQsR0FBSixFQUFTO0FBQ0xWLFFBQUFBLEdBQUcsQ0FBQ00sVUFBSixHQUFpQixHQUFqQjtBQUNBTixRQUFBQSxHQUFHLENBQUNPLFNBQUosQ0FBYyxjQUFkLEVBQThCLGtCQUE5QjtBQUNBUCxRQUFBQSxHQUFHLENBQUNRLElBQUosQ0FBUztBQUFFQyxVQUFBQSxPQUFPLEVBQUUsS0FBWDtBQUFrQnVCLFVBQUFBLE9BQU8sRUFBRXRCLEdBQUcsQ0FBQ3NCO0FBQS9CLFNBQVQ7QUFDSCxPQUpELE1BS0s7QUFDRFIsUUFBQUEsT0FBTyxDQUFDUyxJQUFSLENBQWEsQ0FBQ3ZCLEdBQUQsRUFBTWMsT0FBTixLQUFrQjtBQUMzQixjQUFJZCxHQUFKLEVBQVM7QUFDTFYsWUFBQUEsR0FBRyxDQUFDTSxVQUFKLEdBQWlCLEdBQWpCO0FBQ0FOLFlBQUFBLEdBQUcsQ0FBQ08sU0FBSixDQUFjLGNBQWQsRUFBOEIsa0JBQTlCO0FBQ0NQLFlBQUFBLEdBQUcsQ0FBQ1EsSUFBSixDQUFTO0FBQUVDLGNBQUFBLE9BQU8sRUFBRSxLQUFYO0FBQWtCdUIsY0FBQUEsT0FBTyxFQUFFO0FBQTNCLGFBQVQ7QUFDSjs7QUFDRGhDLFVBQUFBLEdBQUcsQ0FBQ00sVUFBSixHQUFpQixHQUFqQjtBQUNBTixVQUFBQSxHQUFHLENBQUNPLFNBQUosQ0FBYyxjQUFkLEVBQThCLGtCQUE5QjtBQUNBUCxVQUFBQSxHQUFHLENBQUNRLElBQUosQ0FBUztBQUFFQyxZQUFBQSxPQUFPLEVBQUUsSUFBWDtBQUFpQmlCLFlBQUFBLEtBQUssRUFBRUYsT0FBTyxDQUFDRSxLQUFoQztBQUF1Q1EsWUFBQUEsUUFBUSxFQUFFWjtBQUFqRCxXQUFUO0FBQ0gsU0FURDtBQVVIO0FBQ0osS0FuQkw7QUFvQkgsR0FyQkQsQ0FxQkUsT0FBT2EsS0FBUCxFQUFjO0FBQ2JsQyxJQUFBQSxJQUFJLENBQUNTLEdBQUQsQ0FBSjtBQUNGO0FBQ0osQ0FsQ0Q7O0FBb0NBLE1BQU0wQixpQkFBaUIsR0FBRyxDQUFDckMsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDMUNOLEVBQUFBLFFBQVEsQ0FBQzBDLE1BQVQsQ0FBZ0I7QUFBRSxZQUFRO0FBQVYsR0FBaEIsRUFDS2pDLElBREwsQ0FDV2tDLElBQUQsSUFBVTtBQUNadEMsSUFBQUEsR0FBRyxDQUFDTSxVQUFKLEdBQWlCLEdBQWpCO0FBQ0FOLElBQUFBLEdBQUcsQ0FBQ08sU0FBSixDQUFjLGNBQWQsRUFBOEIsa0JBQTlCO0FBQ0FQLElBQUFBLEdBQUcsQ0FBQ1EsSUFBSixDQUFTO0FBQUVDLE1BQUFBLE9BQU8sRUFBRSxJQUFYO0FBQWlCOEIsTUFBQUEsUUFBUSxFQUFFRDtBQUEzQixLQUFUO0FBQ0gsR0FMTCxFQUtRNUIsR0FBRCxJQUFTVCxJQUFJLENBQUNTLEdBQUQsQ0FMcEIsRUFNS0MsS0FOTCxDQU1ZRCxHQUFELElBQVNULElBQUksQ0FBQ1MsR0FBRCxDQU54QjtBQU9ILENBUkQ7O0FBVUE4QixPQUFPLENBQUMxQyxjQUFSLEdBQXlCQSxjQUF6QjtBQUNBMEMsT0FBTyxDQUFDNUIsb0JBQVIsR0FBK0JBLG9CQUEvQjtBQUNBNEIsT0FBTyxDQUFDbkIsVUFBUixHQUFxQkEsVUFBckI7QUFDQW1CLE9BQU8sQ0FBQ0osaUJBQVIsR0FBNEJBLGlCQUE1QixDLENBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxNQUFNSyxxQkFBcUIsR0FBRyxDQUFDMUMsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDOUMsTUFBSXlDLFNBQVMsR0FBRzNDLEdBQUcsQ0FBQzRDLE1BQUosQ0FBV0QsU0FBM0I7QUFDQS9DLEVBQUFBLFFBQVEsQ0FBQ2lELFFBQVQsQ0FBa0JGLFNBQWxCLEVBQ0t0QyxJQURMLENBQ1dvQixPQUFELElBQWE7QUFDZnhCLElBQUFBLEdBQUcsQ0FBQ00sVUFBSixHQUFpQixHQUFqQjtBQUNBTixJQUFBQSxHQUFHLENBQUNPLFNBQUosQ0FBYyxjQUFkLEVBQThCLGtCQUE5QjtBQUNBUCxJQUFBQSxHQUFHLENBQUNRLElBQUosQ0FBUztBQUFFQyxNQUFBQSxPQUFPLEVBQUUsSUFBWDtBQUFpQmUsTUFBQUEsT0FBTyxFQUFFQTtBQUExQixLQUFUO0FBQ0gsR0FMTCxFQUtRZCxHQUFELElBQVM7QUFDUlYsSUFBQUEsR0FBRyxDQUFDTSxVQUFKLEdBQWlCLEdBQWpCO0FBQ0FOLElBQUFBLEdBQUcsQ0FBQ08sU0FBSixDQUFjLGNBQWQsRUFBOEIsa0JBQTlCO0FBQ0FQLElBQUFBLEdBQUcsQ0FBQ1EsSUFBSixDQUFTO0FBQUVDLE1BQUFBLE9BQU8sRUFBRSxLQUFYO0FBQWtCdUIsTUFBQUEsT0FBTyxFQUFFO0FBQTNCLEtBQVQ7QUFDSCxHQVRMLEVBVUtyQixLQVZMLENBVVlELEdBQUQsSUFBU1QsSUFBSSxDQUFDUyxHQUFELENBVnhCO0FBV0gsQ0FiRDs7QUFlQSxNQUFNbUMsd0JBQXdCLEdBQUcsQ0FBQzlDLEdBQUQsRUFBTUMsR0FBTixFQUFXQyxJQUFYLEtBQW9CO0FBRWpETixFQUFBQSxRQUFRLENBQUNtRCxpQkFBVCxDQUEyQi9DLEdBQUcsQ0FBQzRDLE1BQUosQ0FBV0QsU0FBdEMsRUFBaUQ7QUFDN0NLLElBQUFBLElBQUksRUFBRWhELEdBQUcsQ0FBQ2M7QUFEbUMsR0FBakQsRUFFRztBQUFFbUMsSUFBQUEsR0FBRyxFQUFFO0FBQVAsR0FGSCxFQUdLNUMsSUFITCxDQUdXb0IsT0FBRCxJQUFhO0FBQ2Z4QixJQUFBQSxHQUFHLENBQUNNLFVBQUosR0FBaUIsR0FBakI7QUFDQU4sSUFBQUEsR0FBRyxDQUFDTyxTQUFKLENBQWMsY0FBZCxFQUE4QixrQkFBOUI7QUFDQVAsSUFBQUEsR0FBRyxDQUFDUSxJQUFKLENBQVM7QUFBRUMsTUFBQUEsT0FBTyxFQUFFLElBQVg7QUFBaUJlLE1BQUFBLE9BQU8sRUFBRUE7QUFBMUIsS0FBVDtBQUNILEdBUEwsRUFPUWQsR0FBRCxJQUFVO0FBQ1RWLElBQUFBLEdBQUcsQ0FBQ00sVUFBSixHQUFpQixHQUFqQjtBQUNBTixJQUFBQSxHQUFHLENBQUNPLFNBQUosQ0FBYyxjQUFkLEVBQThCLGtCQUE5QjtBQUNBUCxJQUFBQSxHQUFHLENBQUNRLElBQUosQ0FBUztBQUFFQyxNQUFBQSxPQUFPLEVBQUUsS0FBWDtBQUFrQnVCLE1BQUFBLE9BQU8sRUFBRTtBQUEzQixLQUFUO0FBQ0gsR0FYTCxFQVlLckIsS0FaTCxDQVlZRCxHQUFELElBQVNULElBQUksQ0FBQ1MsR0FBRCxDQVp4QjtBQWFILENBZkQ7O0FBaUJBLE1BQU11QyxrQkFBa0IsR0FBRyxDQUFDbEQsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDM0NOLEVBQUFBLFFBQVEsQ0FBQ3VELGlCQUFULENBQTJCbkQsR0FBRyxDQUFDNEMsTUFBSixDQUFXRCxTQUF0QyxFQUNLdEMsSUFETCxDQUNXa0MsSUFBRCxJQUFVO0FBQ1p0QyxJQUFBQSxHQUFHLENBQUNNLFVBQUosR0FBaUIsR0FBakI7QUFDQU4sSUFBQUEsR0FBRyxDQUFDTyxTQUFKLENBQWMsY0FBZCxFQUE4QixrQkFBOUI7QUFDQVAsSUFBQUEsR0FBRyxDQUFDUSxJQUFKLENBQVM7QUFBRUMsTUFBQUEsT0FBTyxFQUFFLElBQVg7QUFBaUI4QixNQUFBQSxRQUFRLEVBQUVEO0FBQTNCLEtBQVQ7QUFDSCxHQUxMLEVBS1E1QixHQUFELElBQVNULElBQUksQ0FBQ1MsR0FBRCxDQUxwQixFQU1LQyxLQU5MLENBTVlELEdBQUQsSUFBU1QsSUFBSSxDQUFDUyxHQUFELENBTnhCO0FBT0gsQ0FSRDs7QUFVQThCLE9BQU8sQ0FBQ0MscUJBQVIsR0FBZ0NBLHFCQUFoQztBQUNBRCxPQUFPLENBQUNLLHdCQUFSLEdBQW1DQSx3QkFBbkM7QUFDQUwsT0FBTyxDQUFDUyxrQkFBUixHQUE2QkEsa0JBQTdCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgVG91cmlzdHMgPSByZXF1aXJlKCcuLi9tb2RlbHMvdXNlcnMnKTtcclxuY29uc3QgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscy91dGlscycpO1xyXG5cclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyBcclxuLy8gICAgICAgICAgICAgIFRvdXJpc3QgT3BlcmF0aW9ucyBcclxuLy8gXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbmNvbnN0IGdldEFsbFRvdXJpc3RzID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICB2YXIgcXVlcnkgPSB7IFwicm9sZVwiOiBcInVzZXJcIiB9O1xyXG4gICAgLy8gdmFyIG9iaiA9IE9iamVjdC5hc3NpZ24ocXVlcnksIHsgJHRleHQ6IHsgJHNlYXJjaDogc2VhcmNoQnkgfSB9KTtcclxuICAgICBUb3VyaXN0cy5maW5kKHF1ZXJ5KVxyXG4gICAgICAgIC50aGVuKCh0b3VyaXN0cykgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCB0b3VyaXN0czogdG91cmlzdHMgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpO1xyXG59XHJcblxyXG5jb25zdCBnZXRBbGxUb3VyaXN0c0J5TmFtZSA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgdmFyIHF1ZXJ5ID0geyBcInJvbGVcIjogXCJ1c2VyXCIgfTtcclxuICAgIGlmIChyZXEuYm9keS5zaW1pbGFyVG8pIHtcclxuICAgICAgICB2YXIgc2VhcmNoQnkgPSByZXEuYm9keS5zaW1pbGFyVG8gfHwge31cclxuICAgICAgICBxdWVyeSA9IHsgXCJyb2xlXCI6IFwidXNlclwiLCAkdGV4dDogeyAkc2VhcmNoOiBzZWFyY2hCeSB9IH1cclxuICAgIH1cclxuXHJcbiAgICB2YXIgc29ydGJ5ID0gcmVxLmJvZHkuc29ydEJ5IHx8IHt9O1xyXG4gICAgVG91cmlzdHMuZmluZChxdWVyeSkuc29ydChzb3J0YnkpXHJcbiAgICAgICAgLnRoZW4oKHRvdXJpc3RzKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHRvdXJpc3RzOiB0b3VyaXN0cyB9KTtcclxuICAgICAgICB9LCAoZXJyKSA9PiBuZXh0KGVycikpXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IG5leHQoZXJyKSk7XHJcbn1cclxuXHJcbmNvbnN0IGFkZFRvdXJpc3QgPSBhc3luYyAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIGNvbnN0IHJhbmRvbVBhc3N3b3JkID0gdXRpbHMucGFzc3dvcmRfZ2VuZXJhdG9yKDEwKTtcclxuICAgIHZhciB0b3VyaXN0ID0ge1xyXG4gICAgICAgIHVzZXJuYW1lOiByZXEuYm9keS5lbWFpbCxcclxuICAgICAgICBmaXJzdG5hbWU6IHJlcS5ib2R5LmZpcnN0bmFtZSxcclxuICAgICAgICBsYXN0bmFtZTogcmVxLmJvZHkubGFzdG5hbWUsXHJcbiAgICAgICAgZW1haWw6IHJlcS5ib2R5LmVtYWlsLFxyXG4gICAgICAgIG1vYmlsZTogcmVxLmJvZHkubW9iaWxlLFxyXG4gICAgICAgIHJvbGU6ICd1c2VyJ1xyXG4gICAgfVxyXG4gICAgdHJ5IHtcclxuICAgICAgICBUb3VyaXN0cy5yZWdpc3RlcihuZXcgVG91cmlzdHModG91cmlzdCksXHJcbiAgICAgICAgICAgIHJhbmRvbVBhc3N3b3JkLCAoZXJyLCB0b3VyaXN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IGZhbHNlLCBtZXNzYWdlOiBlcnIubWVzc2FnZSB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRvdXJpc3Quc2F2ZSgoZXJyLCB0b3VyaXN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNTAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IGZhbHNlLCBtZXNzYWdlOiAnRXJyb3Igd2hpbGUgU2F2aW5nIG5ldyB1c2VyLicgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgZW1haWw6IHRvdXJpc3QuZW1haWwsIHBhc3N3b3JkOiByYW5kb21QYXNzd29yZCB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgbmV4dChlcnIpO1xyXG4gICAgfVxyXG59XHJcblxyXG5jb25zdCBkZWxldGVBbGxUb3VyaXN0cyA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgVG91cmlzdHMucmVtb3ZlKHsgXCJyb2xlXCI6IFwidXNlclwiIH0pXHJcbiAgICAgICAgLnRoZW4oKHJlc3ApID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgcmVzcG9uc2U6IHJlc3AgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpO1xyXG59XHJcblxyXG5leHBvcnRzLmdldEFsbFRvdXJpc3RzID0gZ2V0QWxsVG91cmlzdHM7XHJcbmV4cG9ydHMuZ2V0QWxsVG91cmlzdHNCeU5hbWUgPSBnZXRBbGxUb3VyaXN0c0J5TmFtZTtcclxuZXhwb3J0cy5hZGRUb3VyaXN0ID0gYWRkVG91cmlzdDtcclxuZXhwb3J0cy5kZWxldGVBbGxUb3VyaXN0cyA9IGRlbGV0ZUFsbFRvdXJpc3RzO1xyXG5cclxuXHJcblxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbi8vIFxyXG4vLyAgICAgICAgICAgICAgVG91cmlzdCBPcGVyYXRpb25zIFNwZWNpZmllZCBieSBJRFxyXG4vLyBcclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuY29uc3QgZ2V0VG91cmlzdERldGFpbHNCeUlkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICB2YXIgdG91cmlzdElkID0gcmVxLnBhcmFtcy50b3VyaXN0SWQ7XHJcbiAgICBUb3VyaXN0cy5maW5kQnlJZCh0b3VyaXN0SWQpXHJcbiAgICAgICAgLnRoZW4oKHRvdXJpc3QpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgdG91cmlzdDogdG91cmlzdCB9KTtcclxuICAgICAgICB9LCAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNDA0O1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IGZhbHNlLCBtZXNzYWdlOiAnQ291bGQgbm90IGZpbmQgdG91cmlzdCB3aXRoIGdpdmVuIElEJyB9KTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpOyBcclxufVxyXG5cclxuY29uc3QgdXBkYXRlVG91cmlzdERldGFpbHNCeUlkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICBcclxuICAgIFRvdXJpc3RzLmZpbmRCeUlkQW5kVXBkYXRlKHJlcS5wYXJhbXMudG91cmlzdElkLCB7XHJcbiAgICAgICAgJHNldDogcmVxLmJvZHlcclxuICAgIH0sIHsgbmV3OiB0cnVlIH0pXHJcbiAgICAgICAgLnRoZW4oKHRvdXJpc3QpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgdG91cmlzdDogdG91cmlzdCB9KTtcclxuICAgICAgICB9LCAoZXJyKSA9PiAge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwNDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogJ0NvdWxkIG5vdCBmaW5kIHRvdXJpc3Qgd2l0aCBnaXZlbiBJRCcgfSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuY29uc3QgZGVsZXRlQVRvdXJpc3RCeUlkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICBUb3VyaXN0cy5maW5kQnlJZEFuZFJlbW92ZShyZXEucGFyYW1zLnRvdXJpc3RJZClcclxuICAgICAgICAudGhlbigocmVzcCkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCByZXNwb25zZTogcmVzcCB9KTtcclxuICAgICAgICB9LCAoZXJyKSA9PiBuZXh0KGVycikpXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IG5leHQoZXJyKSk7XHJcbn1cclxuXHJcbmV4cG9ydHMuZ2V0VG91cmlzdERldGFpbHNCeUlkID0gZ2V0VG91cmlzdERldGFpbHNCeUlkO1xyXG5leHBvcnRzLnVwZGF0ZVRvdXJpc3REZXRhaWxzQnlJZCA9IHVwZGF0ZVRvdXJpc3REZXRhaWxzQnlJZDtcclxuZXhwb3J0cy5kZWxldGVBVG91cmlzdEJ5SWQgPSBkZWxldGVBVG91cmlzdEJ5SWQ7XHJcblxyXG5cclxuIl19\",\"originalCode\":\"const Tourists = require('../models/users');\\r\\nconst utils = require('../utils/utils');\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Tourist Operations \\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nconst getAllTourists = (req, res, next) => {\\r\\n var query = { \\\"role\\\": \\\"user\\\" };\\r\\n // var obj = Object.assign(query, { $text: { $search: searchBy } });\\r\\n Tourists.find(query)\\r\\n .then((tourists) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, tourists: tourists });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst getAllTouristsByName = (req, res, next) => {\\r\\n var query = { \\\"role\\\": \\\"user\\\" };\\r\\n if (req.body.similarTo) {\\r\\n var searchBy = req.body.similarTo || {}\\r\\n query = { \\\"role\\\": \\\"user\\\", $text: { $search: searchBy } }\\r\\n }\\r\\n\\r\\n var sortby = req.body.sortBy || {};\\r\\n Tourists.find(query).sort(sortby)\\r\\n .then((tourists) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, tourists: tourists });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst addTourist = async (req, res, next) => {\\r\\n const randomPassword = utils.password_generator(10);\\r\\n var tourist = {\\r\\n username: req.body.email,\\r\\n firstname: req.body.firstname,\\r\\n lastname: req.body.lastname,\\r\\n email: req.body.email,\\r\\n mobile: req.body.mobile,\\r\\n role: 'user'\\r\\n }\\r\\n try {\\r\\n Tourists.register(new Tourists(tourist),\\r\\n randomPassword, (err, tourist) => {\\r\\n if (err) {\\r\\n res.statusCode = 403;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: err.message });\\r\\n }\\r\\n else {\\r\\n tourist.save((err, tourist) => {\\r\\n if (err) {\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Error while Saving new user.' });\\r\\n }\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, email: tourist.email, password: randomPassword });\\r\\n });\\r\\n }\\r\\n });\\r\\n } catch (error) {\\r\\n next(err);\\r\\n }\\r\\n}\\r\\n\\r\\nconst deleteAllTourists = (req, res, next) => {\\r\\n Tourists.remove({ \\\"role\\\": \\\"user\\\" })\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, response: resp });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nexports.getAllTourists = getAllTourists;\\r\\nexports.getAllTouristsByName = getAllTouristsByName;\\r\\nexports.addTourist = addTourist;\\r\\nexports.deleteAllTourists = deleteAllTourists;\\r\\n\\r\\n\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Tourist Operations Specified by ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nconst getTouristDetailsById = (req, res, next) => {\\r\\n var touristId = req.params.touristId;\\r\\n Tourists.findById(touristId)\\r\\n .then((tourist) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, tourist: tourist });\\r\\n }, (err) => {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Could not find tourist with given ID' });\\r\\n })\\r\\n .catch((err) => next(err)); \\r\\n}\\r\\n\\r\\nconst updateTouristDetailsById = (req, res, next) => {\\r\\n \\r\\n Tourists.findByIdAndUpdate(req.params.touristId, {\\r\\n $set: req.body\\r\\n }, { new: true })\\r\\n .then((tourist) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, tourist: tourist });\\r\\n }, (err) => {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Could not find tourist with given ID' });\\r\\n })\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst deleteATouristById = (req, res, next) => {\\r\\n Tourists.findByIdAndRemove(req.params.touristId)\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, response: resp });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nexports.getTouristDetailsById = getTouristDetailsById;\\r\\nexports.updateTouristDetailsById = updateTouristDetailsById;\\r\\nexports.deleteATouristById = deleteATouristById;\\r\\n\\r\\n\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/ff/touristController_ff3455758448d6e0c4e2be11f313067b.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2546\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\touristController.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":20391,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":20388,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"getAllTourists\",\"ranges\":[{\"startOffset\":417,\"endOffset\":790,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getAllTouristsByName\",\"ranges\":[{\"startOffset\":822,\"endOffset\":1347,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"addTourist\",\"ranges\":[{\"startOffset\":1369,\"endOffset\":2534,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1716,\"endOffset\":2491,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1966,\"endOffset\":2475,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"deleteAllTourists\",\"ranges\":[{\"startOffset\":2563,\"endOffset\":2839,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getTouristDetailsById\",\"ranges\":[{\"startOffset\":3278,\"endOffset\":3762,\"count\":2}],\"isBlockCoverage\":true},{\"functionName\":\"Tourists.findById.then.res.statusCode\",\"ranges\":[{\"startOffset\":3376,\"endOffset\":3540,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":3542,\"endOffset\":3734,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":3742,\"endOffset\":3758,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"updateTouristDetailsById\",\"ranges\":[{\"startOffset\":3798,\"endOffset\":4309,\"count\":2}],\"isBlockCoverage\":true},{\"functionName\":\"Tourists.findByIdAndUpdate.then.res.statusCode\",\"ranges\":[{\"startOffset\":3923,\"endOffset\":4087,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":4089,\"endOffset\":4281,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":4289,\"endOffset\":4305,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"deleteATouristById\",\"ranges\":[{\"startOffset\":4339,\"endOffset\":4622,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":4417,\"endOffset\":4576,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":4578,\"endOffset\":4594,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":4602,\"endOffset\":4618,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const express = require('express');\\n\\nconst bodyParser = require('body-parser');\\n\\nconst cors = require('./cors');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nconst dashboardController = require('../controllers/dashboardController');\\n\\nconst dashboardRouter = express.Router();\\ndashboardRouter.use(bodyParser.json());\\ndashboardRouter.route('/admin').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, authenticate.verifyAdmin, dashboardController.getDashboard);\\nmodule.exports = dashboardRouter;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRhc2hib2FyZFJvdXRlci5qcyJdLCJuYW1lcyI6WyJleHByZXNzIiwicmVxdWlyZSIsImJvZHlQYXJzZXIiLCJjb3JzIiwiYXV0aGVudGljYXRlIiwiZGFzaGJvYXJkQ29udHJvbGxlciIsImRhc2hib2FyZFJvdXRlciIsIlJvdXRlciIsInVzZSIsImpzb24iLCJyb3V0ZSIsIm9wdGlvbnMiLCJjb3JzV2l0aE9wdGlvbnMiLCJyZXEiLCJyZXMiLCJzZW5kU3RhdHVzIiwiZ2V0IiwidmVyaWZ5VXNlciIsInZlcmlmeUFkbWluIiwiZ2V0RGFzaGJvYXJkIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsT0FBTyxHQUFHQyxPQUFPLENBQUMsU0FBRCxDQUF2Qjs7QUFDQSxNQUFNQyxVQUFVLEdBQUdELE9BQU8sQ0FBQyxhQUFELENBQTFCOztBQUVBLE1BQU1FLElBQUksR0FBR0YsT0FBTyxDQUFDLFFBQUQsQ0FBcEI7O0FBQ0EsSUFBSUcsWUFBWSxHQUFHSCxPQUFPLENBQUMsNEJBQUQsQ0FBMUI7O0FBQ0EsTUFBTUksbUJBQW1CLEdBQUdKLE9BQU8sQ0FBQyxvQ0FBRCxDQUFuQzs7QUFFQSxNQUFNSyxlQUFlLEdBQUdOLE9BQU8sQ0FBQ08sTUFBUixFQUF4QjtBQUVBRCxlQUFlLENBQUNFLEdBQWhCLENBQW9CTixVQUFVLENBQUNPLElBQVgsRUFBcEI7QUFFQUgsZUFBZSxDQUFDSSxLQUFoQixDQUFzQixRQUF0QixFQUNLQyxPQURMLENBQ2FSLElBQUksQ0FBQ1MsZUFEbEIsRUFDbUMsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEtBQWM7QUFBRUEsRUFBQUEsR0FBRyxDQUFDQyxVQUFKLENBQWUsR0FBZjtBQUFzQixDQUR6RSxFQUVLQyxHQUZMLENBRVNiLElBQUksQ0FBQ0EsSUFGZCxFQUVtQkMsWUFBWSxDQUFDYSxVQUZoQyxFQUU0Q2IsWUFBWSxDQUFDYyxXQUZ6RCxFQUVzRWIsbUJBQW1CLENBQUNjLFlBRjFGO0FBSUFDLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQmYsZUFBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBleHByZXNzID0gcmVxdWlyZSgnZXhwcmVzcycpO1xyXG5jb25zdCBib2R5UGFyc2VyID0gcmVxdWlyZSgnYm9keS1wYXJzZXInKTtcclxuXHJcbmNvbnN0IGNvcnMgPSByZXF1aXJlKCcuL2NvcnMnKTtcclxudmFyIGF1dGhlbnRpY2F0ZSA9IHJlcXVpcmUoJy4uL21pZGRsZXdhcmUvYXV0aGVudGljYXRlJyk7XHJcbmNvbnN0IGRhc2hib2FyZENvbnRyb2xsZXIgPSByZXF1aXJlKCcuLi9jb250cm9sbGVycy9kYXNoYm9hcmRDb250cm9sbGVyJyk7XHJcblxyXG5jb25zdCBkYXNoYm9hcmRSb3V0ZXIgPSBleHByZXNzLlJvdXRlcigpO1xyXG5cclxuZGFzaGJvYXJkUm91dGVyLnVzZShib2R5UGFyc2VyLmpzb24oKSk7XHJcblxyXG5kYXNoYm9hcmRSb3V0ZXIucm91dGUoJy9hZG1pbicpXHJcbiAgICAub3B0aW9ucyhjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcbiAgICAuZ2V0KGNvcnMuY29ycyxhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeUFkbWluLCBkYXNoYm9hcmRDb250cm9sbGVyLmdldERhc2hib2FyZCk7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IGRhc2hib2FyZFJvdXRlcjsiXX0=\",\"originalCode\":\"const express = require('express');\\r\\nconst bodyParser = require('body-parser');\\r\\n\\r\\nconst cors = require('./cors');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\nconst dashboardController = require('../controllers/dashboardController');\\r\\n\\r\\nconst dashboardRouter = express.Router();\\r\\n\\r\\ndashboardRouter.use(bodyParser.json());\\r\\n\\r\\ndashboardRouter.route('/admin')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors,authenticate.verifyUser, authenticate.verifyAdmin, dashboardController.getDashboard);\\r\\n\\r\\nmodule.exports = dashboardRouter;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/07/dashboardRouter_0791a49f2f45fc0f57ade98f27175c5c.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2547\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\dashboardRouter.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":2824,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":2821,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":482,\"endOffset\":522,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const Place = require('../models/visitingPlaces');\\n\\nconst User = require('../models/users');\\n\\nconst Schedule = require('../models/schedules');\\n\\nexports.getDashboard = async (req, res, next) => {\\n try {\\n const users_count = (await User.find().countDocuments()) - 1;\\n const tourist_count_total = await User.find({\\n \\\"role\\\": \\\"user\\\"\\n }).countDocuments();\\n const assistant_count_total = await User.find({\\n \\\"role\\\": \\\"moderater\\\"\\n }).countDocuments();\\n const tourist_count_in = await User.find({\\n \\\"role\\\": \\\"user\\\",\\n \\\"userstate\\\": \\\"in\\\"\\n }).countDocuments();\\n const place_count = await Place.find().countDocuments();\\n const place_names = await Place.find({}, {\\n _id: 0,\\n name: 1\\n });\\n const place_locations = await Place.find({}, {\\n _id: 0,\\n \\\"location.coordinates\\\": 1\\n });\\n var locations = [];\\n place_locations.forEach(element => {\\n var longitude = element.location.coordinates[0];\\n var latitude = element.location.coordinates[1];\\n locations.push({\\n longitude,\\n latitude\\n });\\n });\\n const schedules_count_total = await Schedule.find().countDocuments();\\n const schedules_count_new = await Schedule.find({\\n \\\"state\\\": \\\"new\\\"\\n }).countDocuments();\\n const schedules_count_canceled = await Schedule.find({\\n \\\"state\\\": \\\"cancled\\\"\\n }).countDocuments();\\n const schedules_count_notcompleted = await Schedule.find({\\n \\\"state\\\": \\\"notcompleted\\\"\\n }).countDocuments();\\n const schedules_count_completed = await Schedule.find({\\n \\\"state\\\": \\\"completed\\\"\\n }).countDocuments();\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n dashboardValues: {\\n users_count: users_count,\\n tourist_count_total: tourist_count_total,\\n assistant_count_total: assistant_count_total,\\n tourist_count_in: tourist_count_in,\\n place_count: place_count,\\n place_names: place_names,\\n place_locations: locations,\\n schedules_count_total: schedules_count_total,\\n schedules_count_new: schedules_count_new,\\n schedules_count_canceled: schedules_count_canceled,\\n schedules_count_notcompleted: schedules_count_notcompleted,\\n schedules_count_completed: schedules_count_completed\\n }\\n });\\n } catch (err) {\\n next(err);\\n }\\n};\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRhc2hib2FyZENvbnRyb2xsZXIuanMiXSwibmFtZXMiOlsiUGxhY2UiLCJyZXF1aXJlIiwiVXNlciIsIlNjaGVkdWxlIiwiZXhwb3J0cyIsImdldERhc2hib2FyZCIsInJlcSIsInJlcyIsIm5leHQiLCJ1c2Vyc19jb3VudCIsImZpbmQiLCJjb3VudERvY3VtZW50cyIsInRvdXJpc3RfY291bnRfdG90YWwiLCJhc3Npc3RhbnRfY291bnRfdG90YWwiLCJ0b3VyaXN0X2NvdW50X2luIiwicGxhY2VfY291bnQiLCJwbGFjZV9uYW1lcyIsIl9pZCIsIm5hbWUiLCJwbGFjZV9sb2NhdGlvbnMiLCJsb2NhdGlvbnMiLCJmb3JFYWNoIiwiZWxlbWVudCIsImxvbmdpdHVkZSIsImxvY2F0aW9uIiwiY29vcmRpbmF0ZXMiLCJsYXRpdHVkZSIsInB1c2giLCJzY2hlZHVsZXNfY291bnRfdG90YWwiLCJzY2hlZHVsZXNfY291bnRfbmV3Iiwic2NoZWR1bGVzX2NvdW50X2NhbmNlbGVkIiwic2NoZWR1bGVzX2NvdW50X25vdGNvbXBsZXRlZCIsInNjaGVkdWxlc19jb3VudF9jb21wbGV0ZWQiLCJzdGF0dXNDb2RlIiwic2V0SGVhZGVyIiwianNvbiIsInN1Y2Nlc3MiLCJkYXNoYm9hcmRWYWx1ZXMiLCJlcnIiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLEtBQUssR0FBR0MsT0FBTyxDQUFDLDBCQUFELENBQXJCOztBQUNBLE1BQU1DLElBQUksR0FBR0QsT0FBTyxDQUFDLGlCQUFELENBQXBCOztBQUNBLE1BQU1FLFFBQVEsR0FBR0YsT0FBTyxDQUFDLHFCQUFELENBQXhCOztBQUVBRyxPQUFPLENBQUNDLFlBQVIsR0FBdUIsT0FBT0MsR0FBUCxFQUFZQyxHQUFaLEVBQWlCQyxJQUFqQixLQUEwQjtBQUM3QyxNQUFJO0FBQ0EsVUFBTUMsV0FBVyxHQUFHLE9BQU1QLElBQUksQ0FBQ1EsSUFBTCxHQUFZQyxjQUFaLEVBQU4sSUFBcUMsQ0FBekQ7QUFDQSxVQUFNQyxtQkFB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QUFFQSw0QkFYRjtBQVk1QkMsUUFBQUEseUJBQXlCLEVBQUVBO0FBWkM7QUFEM0IsS0FBVDtBQWdCSCxHQXRDRCxDQXNDRSxPQUFPTSxHQUFQLEVBQVk7QUFDVjlCLElBQUFBLElBQUksQ0FBQzhCLEdBQUQsQ0FBSjtBQUNIO0FBQ0osQ0ExQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBQbGFjZSA9IHJlcXVpcmUoJy4uL21vZGVscy92aXNpdGluZ1BsYWNlcycpO1xyXG5jb25zdCBVc2VyID0gcmVxdWlyZSgnLi4vbW9kZWxzL3VzZXJzJyk7XHJcbmNvbnN0IFNjaGVkdWxlID0gcmVxdWlyZSgnLi4vbW9kZWxzL3NjaGVkdWxlcycpO1xyXG5cclxuZXhwb3J0cy5nZXREYXNoYm9hcmQgPSBhc3luYyAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgICAgY29uc3QgdXNlcnNfY291bnQgPSBhd2FpdCBVc2VyLmZpbmQoKS5jb3VudERvY3VtZW50cygpIC0gMTtcclxuICAgICAgICBjb25zdCB0b3VyaXN0X2NvdW50X3RvdGFsID0gYXdhaXQgVXNlci5maW5kKHsgXCJyb2xlXCI6IFwidXNlclwiIH0pLmNvdW50RG9jdW1lbnRzKCk7XHJcbiAgICAgICAgY29uc3QgYXNzaXN0YW50X2NvdW50X3RvdGFsID0gYXdhaXQgVXNlci5maW5kKHsgXCJyb2xlXCI6IFwibW9kZXJhdGVyXCIgfSkuY291bnREb2N1bWVudHMoKTtcclxuICAgICAgICBjb25zdCB0b3VyaXN0X2NvdW50X2luID0gYXdhaXQgVXNlci5maW5kKHsgXCJyb2xlXCI6IFwidXNlclwiLCBcInVzZXJzdGF0ZVwiOiBcImluXCIgfSkuY291bnREb2N1bWVudHMoKTtcclxuICAgICAgICBjb25zdCBwbGFjZV9jb3VudCA9IGF3YWl0IFBsYWNlLmZpbmQoKS5jb3VudERvY3VtZW50cygpO1xyXG4gICAgICAgIGNvbnN0IHBsYWNlX25hbWVzID0gYXdhaXQgUGxhY2UuZmluZCh7fSwgeyBfaWQ6IDAsIG5hbWU6IDEgfSk7XHJcbiAgICAgICAgY29uc3QgcGxhY2VfbG9jYXRpb25zID0gYXdhaXQgUGxhY2UuZmluZCh7fSwgeyBfaWQ6IDAsIFwibG9jYXRpb24uY29vcmRpbmF0ZXNcIjogMSB9KTtcclxuICAgICAgICB2YXIgbG9jYXRpb25zID0gW107XHJcbiAgICAgICAgcGxhY2VfbG9jYXRpb25zLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICAgIHZhciBsb25naXR1ZGUgPSBlbGVtZW50LmxvY2F0aW9uLmNvb3JkaW5hdGVzWzBdO1xyXG4gICAgICAgICAgICB2YXIgbGF0aXR1ZGUgPSBlbGVtZW50LmxvY2F0aW9uLmNvb3JkaW5hdGVzWzFdO1xyXG4gICAgICAgICAgICBsb2NhdGlvbnMucHVzaCh7IGxvbmdpdHVkZSwgbGF0aXR1ZGUgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgY29uc3Qgc2NoZWR1bGVzX2NvdW50X3RvdGFsID0gYXdhaXQgU2NoZWR1bGUuZmluZCgpLmNvdW50RG9jdW1lbnRzKCk7XHJcbiAgICAgICAgY29uc3Qgc2NoZWR1bGVzX2NvdW50X25ldyA9IGF3YWl0IFNjaGVkdWxlLmZpbmQoeyBcInN0YXRlXCI6IFwibmV3XCIgfSkuY291bnREb2N1bWVudHMoKTtcclxuICAgICAgICBjb25zdCBzY2hlZHVsZXNfY291bnRfY2FuY2VsZWQgPSBhd2FpdCBTY2hlZHVsZS5maW5kKHsgXCJzdGF0ZVwiOiBcImNhbmNsZWRcIiB9KS5jb3VudERvY3VtZW50cygpO1xyXG4gICAgICAgIGNvbnN0IHNjaGVkdWxlc19jb3VudF9ub3Rjb21wbGV0ZWQgPSBhd2FpdCBTY2hlZHVsZS5maW5kKHsgXCJzdGF0ZVwiOiBcIm5vdGNvbXBsZXRlZFwiIH0pLmNvdW50RG9jdW1lbnRzKCk7XHJcbiAgICAgICAgY29uc3Qgc2NoZWR1bGVzX2NvdW50X2NvbXBsZXRlZCA9IGF3YWl0IFNjaGVkdWxlLmZpbmQoeyBcInN0YXRlXCI6IFwiY29tcGxldGVkXCIgfSkuY291bnREb2N1bWVudHMoKTtcclxuXHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICByZXMuanNvbih7XHJcbiAgICAgICAgICAgIHN1Y2Nlc3M6IHRydWUsIGRhc2hib2FyZFZhbHVlczoge1xyXG4gICAgICAgICAgICAgICAgdXNlcnNfY291bnQ6IHVzZXJzX2NvdW50LFxyXG4gICAgICAgICAgICAgICAgdG91cmlzdF9jb3VudF90b3RhbDogdG91cmlzdF9jb3VudF90b3RhbCxcclxuICAgICAgICAgICAgICAgIGFzc2lzdGFudF9jb3VudF90b3RhbDogYXNzaXN0YW50X2NvdW50X3RvdGFsLFxyXG4gICAgICAgICAgICAgICAgdG91cmlzdF9jb3VudF9pbjogdG91cmlzdF9jb3VudF9pbixcclxuICAgICAgICAgICAgICAgIHBsYWNlX2NvdW50OiBwbGFjZV9jb3VudCxcclxuICAgICAgICAgICAgICAgIHBsYWNlX25hbWVzOiBwbGFjZV9uYW1lcyxcclxuICAgICAgICAgICAgICAgIHBsYWNlX2xvY2F0aW9uczogbG9jYXRpb25zLFxyXG4gICAgICAgICAgICAgICAgc2NoZWR1bGVzX2NvdW50X3RvdGFsOiBzY2hlZHVsZXNfY291bnRfdG90YWwsXHJcbiAgICAgICAgICAgICAgICBzY2hlZHVsZXNfY291bnRfbmV3OiBzY2hlZHVsZXNfY291bnRfbmV3LFxyXG4gICAgICAgICAgICAgICAgc2NoZWR1bGVzX2NvdW50X2NhbmNlbGVkOiBzY2hlZHVsZXNfY291bnRfY2FuY2VsZWQsXHJcbiAgICAgICAgICAgICAgICBzY2hlZHVsZXNfY291bnRfbm90Y29tcGxldGVkOiBzY2hlZHVsZXNfY291bnRfbm90Y29tcGxldGVkLFxyXG4gICAgICAgICAgICAgICAgc2NoZWR1bGVzX2NvdW50X2NvbXBsZXRlZDogc2NoZWR1bGVzX2NvdW50X2NvbXBsZXRlZFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICBuZXh0KGVycik7XHJcbiAgICB9XHJcbn1cclxuXHJcbiJdfQ==\",\"originalCode\":\"const Place = require('../models/visitingPlaces');\\r\\nconst User = require('../models/users');\\r\\nconst Schedule = require('../models/schedules');\\r\\n\\r\\nexports.getDashboard = async (req, res, next) => {\\r\\n try {\\r\\n const users_count = await User.find().countDocuments() - 1;\\r\\n const tourist_count_total = await User.find({ \\\"role\\\": \\\"user\\\" }).countDocuments();\\r\\n const assistant_count_total = await User.find({ \\\"role\\\": \\\"moderater\\\" }).countDocuments();\\r\\n const tourist_count_in = await User.find({ \\\"role\\\": \\\"user\\\", \\\"userstate\\\": \\\"in\\\" }).countDocuments();\\r\\n const place_count = await Place.find().countDocuments();\\r\\n const place_names = await Place.find({}, { _id: 0, name: 1 });\\r\\n const place_locations = await Place.find({}, { _id: 0, \\\"location.coordinates\\\": 1 });\\r\\n var locations = [];\\r\\n place_locations.forEach(element => {\\r\\n var longitude = element.location.coordinates[0];\\r\\n var latitude = element.location.coordinates[1];\\r\\n locations.push({ longitude, latitude });\\r\\n });\\r\\n const schedules_count_total = await Schedule.find().countDocuments();\\r\\n const schedules_count_new = await Schedule.find({ \\\"state\\\": \\\"new\\\" }).countDocuments();\\r\\n const schedules_count_canceled = await Schedule.find({ \\\"state\\\": \\\"cancled\\\" }).countDocuments();\\r\\n const schedules_count_notcompleted = await Schedule.find({ \\\"state\\\": \\\"notcompleted\\\" }).countDocuments();\\r\\n const schedules_count_completed = await Schedule.find({ \\\"state\\\": \\\"completed\\\" }).countDocuments();\\r\\n\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({\\r\\n success: true, dashboardValues: {\\r\\n users_count: users_count,\\r\\n tourist_count_total: tourist_count_total,\\r\\n assistant_count_total: assistant_count_total,\\r\\n tourist_count_in: tourist_count_in,\\r\\n place_count: place_count,\\r\\n place_names: place_names,\\r\\n place_locations: locations,\\r\\n schedules_count_total: schedules_count_total,\\r\\n schedules_count_new: schedules_count_new,\\r\\n schedules_count_canceled: schedules_count_canceled,\\r\\n schedules_count_notcompleted: schedules_count_notcompleted,\\r\\n schedules_count_completed: schedules_count_completed\\r\\n }\\r\\n });\\r\\n } catch (err) {\\r\\n next(err);\\r\\n }\\r\\n}\\r\\n\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/34/dashboardController_34872bbac017cfae6fcc33926d204118.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2548\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\dashboardController.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":9854,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":9851,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
.exports.getDashboard\",\"ranges\":[{\"startOffset\":256,\"endOffset\":2463,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const app = require('../../app');\\n\\nconst server = require(\\\"supertest\\\")(app);\\n\\nconst jwt_decode = require('jwt-decode');\\n\\nconst Users = require('../../models/users');\\n\\nvar userToken;\\nvar assistantToken;\\nvar adminToken;\\nvar passwordAssistant;\\nvar passwordUser;\\nconst admin = {\\n \\\"firstname\\\": \\\"Admin\\\",\\n \\\"lastname\\\": \\\"Admin\\\",\\n \\\"email\\\": \\\"admin@gmail.com\\\",\\n \\\"password\\\": \\\"admin-password\\\"\\n};\\nconst assistant = {\\n \\\"firstname\\\": \\\"Pasan\\\",\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\n \\\"email\\\": \\\"pasanFernamdo@gmail.com\\\"\\n};\\nconst tourist = {\\n \\\"firstname\\\": \\\"Sunil\\\",\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\n \\\"email\\\": \\\"sunilFernamdo@gmail.com\\\"\\n};\\n\\nconst signupAdmin = async () => {\\n await Users.deleteMany({});\\n await server.post(\\\"/users/signup/admin\\\").send(admin);\\n};\\n\\nconst getAdminToken = async () => {\\n if (adminToken) {\\n return adminToken;\\n }\\n\\n await signupAdmin();\\n var creds = {\\n username: admin.email,\\n password: admin.password\\n };\\n const response = await server.post(\\\"/users/login\\\").send(creds);\\n adminToken = response.body.token;\\n return adminToken;\\n};\\n\\nconst addAssistant = async () => {\\n if (!adminToken) {\\n await getAdminToken();\\n }\\n\\n const response = await server.post(\\\"/employees\\\").set(\\\"Authorization\\\", `Bearer ${adminToken}`).send(assistant).expect(200);\\n passwordAssistant = response.body.password;\\n};\\n\\nconst getAssistantToken = async () => {\\n if (assistantToken) {\\n return assistantToken;\\n }\\n\\n if (passwordAssistant == null) {\\n await addAssistant();\\n }\\n\\n var creds = {\\n username: assistant.email,\\n password: passwordAssistant\\n };\\n const response = await server.post(\\\"/users/login\\\").send(creds);\\n assistantToken = response.body.token;\\n return assistantToken;\\n};\\n\\nconst addTourist = async () => {\\n if (!assistantToken) {\\n await getAssistantToken();\\n }\\n\\n const response = await server.post(\\\"/tourists\\\").set(\\\"Authorization\\\", `Bearer ${assistantToken}`).send(tourist).expect(200);\\n passwordUser = response.body.password;\\n};\\n\\nconst getTouristToken = async () => {\\n if (userToken) {\\n return userToken;\\n }\\n\\n if (passwordUser == null) {\\n await addTourist();\\n }\\n\\n var creds = {\\n username: tourist.email,\\n password: passwordUser\\n };\\n const response = await server.post(\\\"/users/login\\\").send(creds);\\n userToken = response.body.token;\\n return userToken;\\n};\\n\\nconst getExistingId = async () => {\\n const newTourist = {\\n \\\"firstname\\\": \\\"Namal\\\",\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\n \\\"email\\\": \\\"namalfernamdo@gmail.com\\\",\\n \\\"mobile\\\": \\\"981114844\\\",\\n \\\"rommnumber\\\": \\\"41\\\"\\n };\\n const tourist = new Users(newTourist);\\n await tourist.save();\\n return tourist._id.toString();\\n};\\n\\nconst getNonExistingId = async () => {\\n const newTourist = {\\n \\\"firstname\\\": \\\"Kamal\\\",\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\n \\\"email\\\": \\\"kamalfernamdo@gmail.com\\\",\\n \\\"username\\\": \\\"kamalfernamdo@gmail.com\\\"\\n };\\n const tourist = new Users(newTourist);\\n await tourist.save();\\n await tourist.remove();\\n return tourist._id.toString();\\n};\\n\\nconst getExistingIdAssistanct = async () => {\\n const newAssistant = {\\n \\\"firstname\\\": \\\"Kasun\\\",\\n \\\"lastname\\\": \\\"Perera\\\",\\n \\\"email\\\": \\\"kasun@gmail.com\\\"\\n };\\n const assistant = new Users(newAssistant);\\n await assistant.save();\\n return assistant._id.toString();\\n};\\n\\nconst getNonExistingIdAssistant = async () => {\\n const newAssistant = {\\n \\\"firstname\\\": \\\"Kamal\\\",\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\n \\\"email\\\": \\\"kamalfernamdo@gmail.com\\\"\\n };\\n const assistant = new Users(newAssistant);\\n await assistant.save();\\n await assistant.remove();\\n return assistant._id.toString();\\n};\\n\\nconst decodeToken = token => {\\n var decoded = jwt_decode(token);\\n return decoded;\\n};\\n\\nmodule.exports = {\\n getAdminToken,\\n getAssistantToken,\\n getTouristToken,\\n decodeToken,\\n addTourist,\\n getTouristToken,\\n getExistingId,\\n getNonExistingId,\\n getExistingIdAssistanct,\\n getNonExistingIdAssistant,\\n addAssistant\\n};\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVzZXJfaGVscGVyLmpzIl0sIm5hbWVzIjpbImFwcCIsInJlcXVpcmUiLCJzZXJ2ZXIiLCJqd3RfZGVjb2RlIiwiVXNlcnMiLCJ1c2VyVG9rZW4iLCJhc3Npc3RhbnRUb2tlbiIsImFkbWluVG9rZW4iLCJwYXNzd29yZEFzc2lzdGFudCIsInBhc3N3b3JkVXNlciIsImFkbWluIiwiYXNzaXN0YW50IiwidG91cmlzdCIsInNpZ251cEFkbWluIiwiZGVsZXRlTWFueSIsInBvc3QiLCJzZW5kIiwiZ2V0QWRtaW5Ub2tlbiIsImNyZWRzIiwidXNlcm5hbWUiLCJlbWFpbCIsInBhc3N3b3JkIiwicmVzcG9uc2UiLCJib2R5IiwidG9rZW4iLCJhZGRBc3Npc3RhbnQiLCJzZXQiLCJleHBlY3QiLCJnZXRBc3Npc3RhbnRUb2tlbiIsImFkZFRvdXJpc3QiLCJnZXRUb3VyaXN0VG9rZW4iLCJnZXRFeGlzdGluZ0lkIiwibmV3VG91cmlzdCIsInNhdmUiLCJfaWQiLCJ0b1N0cmluZyIsImdldE5vbkV4aXN0aW5nSWQiLCJyZW1vdmUiLCJnZXRFeGlzdGluZ0lkQXNzaXN0YW5jdCIsIm5ld0Fzc2lzdGFudCIsImdldE5vbkV4aXN0aW5nSWRBc3Npc3RhbnQiLCJkZWNvZGVUb2tlbiIsImRlY29kZWQiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxHQUFHLEdBQUdDLE9BQU8sQ0FBQyxXQUFELENBQW5COztBQUNBLE1BQU1DLE1BQU0sR0FBR0QsT0FBTyxDQUFDLFdBQUQsQ0FBUCxDQUFxQkQsR0FBckIsQ0FBZjs7QUFDQSxNQUFNRyxVQUFVLEdBQUdGLE9BQU8sQ0FBQyxZQUFELENBQTFCOztBQUNBLE1BQU1HLEtBQUssR0FBR0gsT0FBTyxDQUFDLG9CQUFELENBQXJCOztBQUVBLElBQUlJLFNBQUo7QUFDQSxJQUFJQyxjQUFKO0FBQ0EsSUFBSUMsVUFBSjtBQUNBLElBQUlDLGlCQUFKO0FBQ0EsSUFBSUMsWUFBSjtBQUVBLE1BQU1DLEtB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dGVudCI6WyJjb25zdCBhcHAgPSByZXF1aXJlKCcuLi8uLi9hcHAnKTtcclxuY29uc3Qgc2VydmVyID0gcmVxdWlyZShcInN1cGVydGVzdFwiKShhcHApO1xyXG5jb25zdCBqd3RfZGVjb2RlID0gcmVxdWlyZSgnand0LWRlY29kZScpO1xyXG5jb25zdCBVc2VycyA9IHJlcXVpcmUoJy4uLy4uL21vZGVscy91c2VycycpO1xyXG5cclxudmFyIHVzZXJUb2tlbjtcclxudmFyIGFzc2lzdGFudFRva2VuO1xyXG52YXIgYWRtaW5Ub2tlbjtcclxudmFyIHBhc3N3b3JkQXNzaXN0YW50O1xyXG52YXIgcGFzc3dvcmRVc2VyO1xyXG5cclxuY29uc3QgYWRtaW4gPSB7XHJcbiAgICBcImZpcnN0bmFtZVwiOiBcIkFkbWluXCIsXHJcbiAgICBcImxhc3RuYW1lXCI6IFwiQWRtaW5cIixcclxuICAgIFwiZW1haWxcIjogXCJhZG1pbkBnbWFpbC5jb21cIixcclxuICAgIFwicGFzc3dvcmRcIjogXCJhZG1pbi1wYXNzd29yZFwiXHJcbn07XHJcbmNvbnN0IGFzc2lzdGFudCA9IHtcclxuICAgIFwiZmlyc3RuYW1lXCI6IFwiUGFzYW5cIixcclxuICAgIFwibGFzdG5hbWVcIjogXCJGZXJuYW1kb1wiLFxyXG4gICAgXCJlbWFpbFwiOiBcInBhc2FuRmVybmFtZG9AZ21haWwuY29tXCJcclxufTtcclxuY29uc3QgdG91cmlzdCA9IHtcclxuICAgIFwiZmlyc3RuYW1lXCI6IFwiU3VuaWxcIixcclxuICAgIFwibGFzdG5hbWVcIjogXCJGZXJuYW1kb1wiLFxyXG4gICAgXCJlbWFpbFwiOiBcInN1bmlsRmVybmFtZG9AZ21haWwuY29tXCJcclxufTtcclxuXHJcbmNvbnN0IHNpZ251cEFkbWluID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgYXdhaXQgVXNlcnMuZGVsZXRlTWFueSh7fSk7XHJcbiAgICBhd2FpdCBzZXJ2ZXJcclxuICAgICAgICAucG9zdChcIi91c2Vycy9zaWdudXAvYWRtaW5cIilcclxuICAgICAgICAuc2VuZChhZG1pbik7XHJcbn07XHJcblxyXG5jb25zdCBnZXRBZG1pblRva2VuID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgaWYgKGFkbWluVG9rZW4pIHtcclxuICAgICAgICByZXR1cm4gYWRtaW5Ub2tlbjtcclxuICAgIH1cclxuICAgIGF3YWl0IHNpZ251cEFkbWluKCk7XHJcbiAgICB2YXIgY3JlZHMgPSB7XHJcbiAgICAgICAgdXNlcm5hbWU6IGFkbWluLmVtYWlsLFxyXG4gICAgICAgIHBhc3N3b3JkOiBhZG1pbi5wYXNzd29yZCxcclxuICAgIH07XHJcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHNlcnZlclxyXG4gICAgICAgIC5wb3N0KFwiL3VzZXJzL2xvZ2luXCIpXHJcbiAgICAgICAgLnNlbmQoY3JlZHMpO1xyXG4gICAgYWRtaW5Ub2tlbiA9IHJlc3BvbnNlLmJvZHkudG9rZW47XHJcbiAgICByZXR1cm4gYWRtaW5Ub2tlbjtcclxufVxyXG5cclxuY29uc3QgYWRkQXNzaXN0YW50ID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgaWYgKCFhZG1pblRva2VuKSB7XHJcbiAgICAgICAgYXdhaXQgZ2V0QWRtaW5Ub2tlbigpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBzZXJ2ZXJcclxuICAgICAgICAucG9zdChcIi9lbXBsb3llZXNcIilcclxuICAgICAgICAuc2V0KFwiQXV0aG9yaXphdGlvblwiLCBgQmVhcmVyICR7YWRtaW5Ub2tlbn1gKVxyXG4gICAgICAgIC5zZW5kKGFzc2lzdGFudClcclxuICAgICAgICAuZXhwZWN0KDIwMCk7XHJcbiAgICAgICAgICAgXHJcbiAgICBwYXNzd29yZEFzc2lzdGFudCA9ICByZXNwb25zZS5ib2R5LnBhc3N3b3JkO1xyXG59O1xyXG5cclxuY29uc3QgZ2V0QXNzaXN0YW50VG9rZW4gPSBhc3luYyAoKSA9PiB7XHJcbiAgICBpZiAoYXNzaXN0YW50VG9rZW4pIHtcclxuICAgICAgICByZXR1cm4gYXNzaXN0YW50VG9rZW47XHJcbiAgICB9XHJcbiAgICBpZihwYXNzd29yZEFzc2lzdGFudD09bnVsbCl7YXdhaXQgYWRkQXNzaXN0YW50KCk7fVxyXG4gICAgdmFyIGNyZWRzID0ge1xyXG4gICAgICAgIHVzZXJuYW1lOiBhc3Npc3RhbnQuZW1haWwsXHJcbiAgICAgICAgcGFzc3dvcmQ6IHBhc3N3b3JkQXNzaXN0YW50LFxyXG4gICAgfTtcclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgc2VydmVyXHJcbiAgICAgICAgLnBvc3QoXCIvdXNlcnMvbG9naW5cIilcclxuICAgICAgICAuc2VuZChjcmVkcyk7XHJcbiAgICBhc3Npc3RhbnRUb2tlbiA9IHJlc3BvbnNlLmJvZHkudG9rZW47XHJcbiAgICByZXR1cm4gYXNzaXN0YW50VG9rZW47XHJcbn1cclxuXHJcbmNvbnN0IGFkZFRvdXJpc3QgPSBhc3luYyAoKSA9PiB7XHJcbiAgICBpZiAoIWFzc2lzdGFudFRva2VuKSB7XHJcbiAgICAgICAgYXdhaXQgZ2V0QXNzaXN0YW50VG9rZW4oKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgc2VydmVyXHJcbiAgICAgICAgLnBvc3QoXCIvdG91cmlzdHNcIilcclxuICAgICAgICAuc2V0KFwiQXV0aG9yaXphdGlvblwiLCBgQmVhcmVyICR7YXNzaXN0YW50VG9rZW59YClcclxuICAgICAgICAuc2VuZCh0b3VyaXN0KVxyXG4gICAgICAgIC5leHBlY3QoMjAwKTtcclxuICAgIHBhc3N3b3JkVXNlcj0gIHJlc3BvbnNlLmJvZHkucGFzc3dvcmQ7XHJcbn07XHJcbiBcclxuXHJcbmNvbnN0IGdldFRvdXJpc3RUb2tlbiA9IGFzeW5jICgpID0+IHtcclxuICAgIGlmICh1c2VyVG9rZW4pIHtcclxuICAgICAgICByZXR1cm4gdXNlclRva2VuO1xyXG4gICAgfVxyXG4gICAgaWYocGFzc3dvcmRVc2VyID09IG51bGwpIHsgYXdhaXQgYWRkVG91cmlzdCgpO31cclxuICAgIHZhciBjcmVkcyA9IHtcclxuICAgICAgICB1c2VybmFtZTogdG91cmlzdC5lbWFpbCxcclxuICAgICAgICBwYXNzd29yZDogcGFzc3dvcmRVc2VyLFxyXG4gICAgfTtcclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgc2VydmVyXHJcbiAgICAgICAgLnBvc3QoXCIvdXNlcnMvbG9naW5cIilcclxuICAgICAgICAuc2VuZChjcmVkcyk7XHJcbiAgICB1c2VyVG9rZW4gPSByZXNwb25zZS5ib2R5LnRva2VuO1xyXG4gICAgcmV0dXJuIHVzZXJUb2tlbjtcclxufVxyXG5cclxuY29uc3QgZ2V0RXhpc3RpbmdJZCA9IGFzeW5jICgpID0+IHtcclxuICAgIGNvbnN0IG5ld1RvdXJpc3QgPSB7XHJcbiAgICAgICAgXCJmaXJzdG5hbWVcIjogXCJOYW1hbFwiLFxyXG4gICAgICAgIFwibGFzdG5hbWVcIjogXCJGZXJuYW1kb1wiLFxyXG4gICAgICAgIFwiZW1haWxcIjogXCJuYW1hbGZlcm5hbWRvQGdtYWlsLmNvbVwiLFxyXG4gICAgICAgIFwibW9iaWxlXCI6IFwiOTgxMTE0ODQ0XCIsXHJcbiAgICAgICAgXCJyb21tbnVtYmVyXCIgOiBcIjQxXCIsXHJcblxyXG4gICAgfVxyXG4gICAgY29uc3QgdG91cmlzdCA9IG5ldyBVc2VycyhuZXdUb3VyaXN0KTtcclxuICAgIGF3YWl0IHRvdXJpc3Quc2F2ZSgpO1xyXG5cclxuICAgIHJldHVybiB0b3VyaXN0Ll9pZC50b1N0cmluZygpO1xyXG5cclxuICAgIFxyXG59XHJcblxyXG5jb25zdCBnZXROb25FeGlzdGluZ0lkID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgY29uc3QgbmV3VG91cmlzdCA9IHtcclxuICAgICAgICBcImZpcnN0bmFtZVwiOiBcIkthbWFsXCIsXHJcbiAgICAgICAgXCJsYXN0bmFtZVwiOiBcIkZlcm5hbWRvXCIsXHJcbiAgICAgICAgXCJlbWFpbFwiOiBcImthbWFsZmVybmFtZG9AZ21haWwuY29tXCIsXHJcbiAgICAgICAgXCJ1c2VybmFtZVwiOiBcImthbWFsZmVybmFtZG9AZ21haWwuY29tXCJcclxuICAgIH1cclxuICAgIGNvbnN0IHRvdXJpc3QgPSBuZXcgVXNlcnMobmV3VG91cmlzdCk7XHJcbiAgICBhd2FpdCB0b3VyaXN0LnNhdmUoKTtcclxuICAgIGF3YWl0IHRvdXJpc3QucmVtb3ZlKCk7XHJcblxyXG4gICAgcmV0dXJuIHRvdXJpc3QuX2lkLnRvU3RyaW5nKCk7XHJcbn1cclxuXHJcbmNvbnN0IGdldEV4aXN0aW5nSWRBc3Npc3RhbmN0ID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgY29uc3QgbmV3QXNzaXN0YW50ID0ge1xyXG4gICAgICAgIFwiZmlyc3RuYW1lXCI6IFwiS2FzdW5cIixcclxuICAgICAgICBcImxhc3RuYW1lXCI6IFwiUGVyZXJhXCIsXHJcbiAgICAgICAgXCJlbWFpbFwiOiBcImthc3VuQGdtYWlsLmNvbVwiLFxyXG4gICAgfVxyXG4gICAgY29uc3QgYXNzaXN0YW50ID0gbmV3IFVzZXJzKG5ld0Fzc2lzdGFudCk7XHJcbiAgICBhd2FpdCBhc3Npc3RhbnQuc2F2ZSgpO1xyXG5cclxuICAgIHJldHVybiBhc3Npc3RhbnQuX2lkLnRvU3RyaW5nKCk7XHJcblxyXG4gICAgXHJcbn1cclxuXHJcbmNvbnN0IGdldE5vbkV4aXN0aW5nSWRBc3Npc3RhbnQgPSBhc3luYyAoKSA9PiB7XHJcbiAgICBjb25zdCBuZXdBc3Npc3RhbnQgPSB7XHJcbiAgICAgICAgXCJmaXJzdG5hbWVcIjogXCJLYW1hbFwiLFxyXG4gICAgICAgIFwibGFzdG5hbWVcIjogXCJGZXJuYW1kb1wiLFxyXG4gICAgICAgIFwiZW1haWxcIjogXCJrYW1hbGZlcm5hbWRvQGdtYWlsLmNvbVwiXHJcbiAgICB9XHJcbiAgICBjb25zdCBhc3Npc3RhbnQgPSBuZXcgVXNlcnMobmV3QXNzaXN0YW50KTtcclxuICAgIGF3YWl0IGFzc2lzdGFudC5zYXZlKCk7XHJcbiAgICBhd2FpdCBhc3Npc3RhbnQucmVtb3ZlKCk7XHJcblxyXG4gICAgcmV0dXJuIGFzc2lzdGFudC5faWQudG9TdHJpbmcoKTtcclxufVxyXG5cclxuY29uc3QgZGVjb2RlVG9rZW4gPSAodG9rZW4pID0+IHtcclxuICAgIHZhciBkZWNvZGVkID0gand0X2RlY29kZSh0b2tlbik7XHJcbiAgICByZXR1cm4gZGVjb2RlZDtcclxufVxyXG5cclxubW9kdWxlLmV4cG9ydHMgPSB7XHJcbiAgICBnZXRBZG1pblRva2VuLCBnZXRBc3Npc3RhbnRUb2tlbiwgZ2V0VG91cmlzdFRva2VuLCBkZWNvZGVUb2tlbiwgYWRkVG91cmlzdCwgZ2V0VG91cmlzdFRva2VuICxnZXRFeGlzdGluZ0lkICxnZXROb25FeGlzdGluZ0lkLCBnZXRFeGlzdGluZ0lkQXNzaXN0YW5jdCwgZ2V0Tm9uRXhpc3RpbmdJZEFzc2lzdGFudCwgYWRkQXNzaXN0YW50XHJcbn1cclxuIl19\",\"originalCode\":\"const app = require('../../app');\\r\\nconst server = require(\\\"supertest\\\")(app);\\r\\nconst jwt_decode = require('jwt-decode');\\r\\nconst Users = require('../../models/users');\\r\\n\\r\\nvar userToken;\\r\\nvar assistantToken;\\r\\nvar adminToken;\\r\\nvar passwordAssistant;\\r\\nvar passwordUser;\\r\\n\\r\\nconst admin = {\\r\\n \\\"firstname\\\": \\\"Admin\\\",\\r\\n \\\"lastname\\\": \\\"Admin\\\",\\r\\n \\\"email\\\": \\\"admin@gmail.com\\\",\\r\\n \\\"password\\\": \\\"admin-password\\\"\\r\\n};\\r\\nconst assistant = {\\r\\n \\\"firstname\\\": \\\"Pasan\\\",\\r\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\r\\n \\\"email\\\": \\\"pasanFernamdo@gmail.com\\\"\\r\\n};\\r\\nconst tourist = {\\r\\n \\\"firstname\\\": \\\"Sunil\\\",\\r\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\r\\n \\\"email\\\": \\\"sunilFernamdo@gmail.com\\\"\\r\\n};\\r\\n\\r\\nconst signupAdmin = async () => {\\r\\n await Users.deleteMany({});\\r\\n await server\\r\\n .post(\\\"/users/signup/admin\\\")\\r\\n .send(admin);\\r\\n};\\r\\n\\r\\nconst getAdminToken = async () => {\\r\\n if (adminToken) {\\r\\n return adminToken;\\r\\n }\\r\\n await signupAdmin();\\r\\n var creds = {\\r\\n username: admin.email,\\r\\n password: admin.password,\\r\\n };\\r\\n const response = await server\\r\\n .post(\\\"/users/login\\\")\\r\\n .send(creds);\\r\\n adminToken = response.body.token;\\r\\n return adminToken;\\r\\n}\\r\\n\\r\\nconst addAssistant = async () => {\\r\\n if (!adminToken) {\\r\\n await getAdminToken();\\r\\n }\\r\\n const response = await server\\r\\n .post(\\\"/employees\\\")\\r\\n .set(\\\"Authorization\\\", `Bearer ${adminToken}`)\\r\\n .send(assistant)\\r\\n .expect(200);\\r\\n \\r\\n passwordAssistant = response.body.password;\\r\\n};\\r\\n\\r\\nconst getAssistantToken = async () => {\\r\\n if (assistantToken) {\\r\\n return assistantToken;\\r\\n }\\r\\n if(passwordAssistant==null){await addAssistant();}\\r\\n var creds = {\\r\\n username: assistant.email,\\r\\n password: passwordAssistant,\\r\\n };\\r\\n const response = await server\\r\\n .post(\\\"/users/login\\\")\\r\\n .send(creds);\\r\\n assistantToken = response.body.token;\\r\\n return assistantToken;\\r\\n}\\r\\n\\r\\nconst addTourist = async () => {\\r\\n if (!assistantToken) {\\r\\n await getAssistantToken();\\r\\n }\\r\\n const response = await server\\r\\n .post(\\\"/tourists\\\")\\r\\n .set(\\\"Authorization\\\", `Bearer ${assistantToken}`)\\r\\n .send(tourist)\\r\\n .expect(200);\\r\\n passwordUser= response.body.password;\\r\\n};\\r\\n \\r\\n\\r\\nconst getTouristToken = async () => {\\r\\n if (userToken) {\\r\\n return userToken;\\r\\n }\\r\\n if(passwordUser == null) { await addTourist();}\\r\\n var creds = {\\r\\n username: tourist.email,\\r\\n password: passwordUser,\\r\\n };\\r\\n const response = await server\\r\\n .post(\\\"/users/login\\\")\\r\\n .send(creds);\\r\\n userToken = response.body.token;\\r\\n return userToken;\\r\\n}\\r\\n\\r\\nconst getExistingId = async () => {\\r\\n const newTourist = {\\r\\n \\\"firstname\\\": \\\"Namal\\\",\\r\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\r\\n \\\"email\\\": \\\"namalfernamdo@gmail.com\\\",\\r\\n \\\"mobile\\\": \\\"981114844\\\",\\r\\n \\\"rommnumber\\\" : \\\"41\\\",\\r\\n\\r\\n }\\r\\n const tourist = new Users(newTourist);\\r\\n await tourist.save();\\r\\n\\r\\n return tourist._id.toString();\\r\\n\\r\\n \\r\\n}\\r\\n\\r\\nconst getNonExistingId = async () => {\\r\\n const newTourist = {\\r\\n \\\"firstname\\\": \\\"Kamal\\\",\\r\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\r\\n \\\"email\\\": \\\"kamalfernamdo@gmail.com\\\",\\r\\n \\\"username\\\": \\\"kamalfernamdo@gmail.com\\\"\\r\\n }\\r\\n const tourist = new Users(newTourist);\\r\\n await tourist.save();\\r\\n await tourist.remove();\\r\\n\\r\\n return tourist._id.toString();\\r\\n}\\r\\n\\r\\nconst getExistingIdAssistanct = async () => {\\r\\n const newAssistant = {\\r\\n \\\"firstname\\\": \\\"Kasun\\\",\\r\\n \\\"lastname\\\": \\\"Perera\\\",\\r\\n \\\"email\\\": \\\"kasun@gmail.com\\\",\\r\\n }\\r\\n const assistant = new Users(newAssistant);\\r\\n await assistant.save();\\r\\n\\r\\n return assistant._id.toString();\\r\\n\\r\\n \\r\\n}\\r\\n\\r\\nconst getNonExistingIdAssistant = async () => {\\r\\n const newAssistant = {\\r\\n \\\"firstname\\\": \\\"Kamal\\\",\\r\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\r\\n \\\"email\\\": \\\"kamalfernamdo@gmail.com\\\"\\r\\n }\\r\\n const assistant = new Users(newAssistant);\\r\\n await assistant.save();\\r\\n await assistant.remove();\\r\\n\\r\\n return assistant._id.toString();\\r\\n}\\r\\n\\r\\nconst decodeToken = (token) => {\\r\\n var decoded = jwt_decode(token);\\r\\n return decoded;\\r\\n}\\r\\n\\r\\nmodule.exports = {\\r\\n getAdminToken, getAssistantToken, getTouristToken, decodeToken, addTourist, getTouristToken ,getExistingId ,getNonExistingId, getExistingIdAssistanct, getNonExistingIdAssistant, addAssistant\\r\\n}\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/79/user_helper_79166e334a8b342d542dc0574b645dc7.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2692\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\tests\\\\helpers\\\\user_helper.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":16466,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":16463,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"signupAdmin\",\"ranges\":[{\"startOffset\":714,\"endOffset\":815,\"count\":3}],\"isBlockCoverage\":false},{\"functionName\":\"getAdminToken\",\"ranges\":[{\"startOffset\":840,\"endOffset\":1126,\"count\":4}],\"isBlockCoverage\":false},{\"functionName\":\"addAssistant\",\"ranges\":[{\"startOffset\":1150,\"endOffset\":1389,\"count\":3}],\"isBlockCoverage\":false},{\"functionName\":\"getAssistantToken\",\"ranges\":[{\"startOffset\":1418,\"endOffset\":1770,\"count\":3}],\"isBlockCoverage\":false},{\"functionName\":\"addTourist\",\"ranges\":[{\"startOffset\":1792,\"endOffset\":2035,\"count\":3}],\"isBlockCoverage\":false},{\"functionName\":\"getTouristToken\",\"ranges\":[{\"startOffset\":2062,\"endOffset\":2380,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getExistingId\",\"ranges\":[{\"startOffset\":2405,\"endOffset\":2690,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"getNonExistingId\",\"ranges\":[{\"startOffset\":2718,\"endOffset\":3021,\"count\":3}],\"isBlockCoverage\":false},{\"functionName\":\"getExistingIdAssistanct\",\"ranges\":[{\"startOffset\":3056,\"endOffset\":3290,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getNonExistingIdAssistant\",\"ranges\":[{\"startOffset\":3327,\"endOffset\":3599,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"decodeToken\",\"ranges\":[{\"startOffset\":3622,\"endOffset\":3687,\"count\":0}],\"isBlockCoverage\":false}]}}]},{\"leaks\":false,\"numFailingTests\":0,\"numPassingTests\":14,\"numPendingTests\":0,\"numTodoTests\":0,\"openHandles\":[],\"perfStats\":{\"end\":1615204317123,\"runtime\":2680,\"slow\":false,\"start\":1615204314443},\"skipped\":false,\"snapshot\":{\"added\":0,\"fileDeleted\":false,\"matched\":0,\"unchecked\":0,\"unmatched\":0,\"updated\":0,\"uncheckedKeys\":[]},\"testFilePath\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\tests\\\\places.test.js\",\"testResults\":[{\"ancestorTitles\":[\"Place Model\"],\"duration\":0,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Place Model Place model exists\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"Place model exists\"},{\"ancestorTitles\":[\"GET /places\"],\"duration\":10,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"GET /places requires Authorization - 401\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"requires Authorization - 401\"},{\"ancestorTitles\":[\"GET /places\"],\"duration\":18,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"GET /places with Authorization - 200\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"with Authorization - 200\"},{\"ancestorTitles\":[\"POST /places\"],\"duration\":8,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"POST /places requires Authorization - 401\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"requires Authorization - 401\"},{\"ancestorTitles\":[\"POST /places\"],\"duration\":91,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"POST /places with invalid Authorization - 403\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"with invalid Authorization - 403\"},{\"ancestorTitles\":[\"POST /places\"],\"duration\":39,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"POST /places with Authorization - 200\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"with Authorization - 200\"},{\"ancestorTitles\":[\"POST /places\"],\"duration\":20,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"POST /places already existing - 403\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"already existing - 403\"},{\"ancestorTitles\":[\"POST /places\"],\"duration\":16,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"POST /places validation failed - 403\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"validation failed - 403\"},{\"ancestorTitles\":[\"PUT /places\"],\"duration\":10,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"PUT /places does not support - 403\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"does not support - 403\"},{\"ancestorTitles\":[\"POST /places/search\"],\"duration\":8,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"POST /places/search requires Authorization - 401\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"requires Authorization - 401\"},{\"ancestorTitles\":[\"POST /places/search\"],\"duration\":35,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"POST /places/search with Authorization - 200\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"with Authorization - 200\"},{\"ancestorTitles\":[\"POST /places/search\"],\"duration\":18,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"POST /places/search with Authorization - another one - 200\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"with Authorization - another one - 200\"},{\"ancestorTitles\":[\"DELETE /places\"],\"duration\":11,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"DELETE /places requires Authorization - 401\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"requires Authorization - 401\"},{\"ancestorTitles\":[\"DELETE /places\"],\"duration\":21,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"DELETE /places with Authorization - 200\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"with Authorization - 200\"}],\"failureMessage\":null,\"v8Coverage\":[{\"codeTransformResult\":{\"code\":\"var createError = require('http-errors');\\n\\nvar express = require('express');\\n\\nconst cors = require('cors');\\n\\nvar path = require('path');\\n\\nconst bodyParser = require('body-parser');\\n\\nconst expressValidator = require('express-validator');\\n\\nvar session = require('express-session');\\n\\nvar FileStore = require('session-file-store')(session);\\n\\nvar cookieParser = require('cookie-parser');\\n\\nvar logger = require('morgan');\\n\\nvar passport = require('passport');\\n\\nconst mongoose = require('mongoose');\\n\\nrequire('dotenv').config();\\n\\nvar userRouter = require('./routes/userRouter');\\n\\nvar employeeRouter = require('./routes/employeeRouter');\\n\\nvar placeRouter = require('./routes/placeRouter');\\n\\nvar scheduleRouter = require('./routes/scheduleRouter');\\n\\nvar touristRouter = require('./routes/touristRouter');\\n\\nvar dashboardRouter = require('./routes/dashboardRouter');\\n\\nvar app = express(); // view engine setup\\n\\napp.set('views', path.join(__dirname, 'views'));\\napp.set('view engine', 'jade');\\napp.use(cors());\\napp.use(passport.initialize());\\napp.use(bodyParser.json());\\napp.use(cookieParser('the-immortal-coils')); // app.use(logger('dev'));\\n\\napp.use(express.json());\\napp.use(express.urlencoded({\\n extended: false\\n}));\\napp.use(cookieParser()); // app.use(express.static('build'));\\n\\napp.use(express.static(path.join(__dirname, 'build')));\\nvar url = process.env.mongoUrl;\\n\\nif (process.env.NODE_ENV === 'test') {\\n url = process.env.testMongoUrl;\\n}\\n\\nmongoose.connect(url, {\\n useNewUrlParser: true,\\n useCreateIndex: true,\\n useUnifiedTopology: true\\n}).then(db => {}, err => {\\n if (err) {\\n console.log('👺 Error connecting to MongoDB');\\n } else {\\n console.log('✅ Connected to MongoDB');\\n }\\n});\\napp.use('/users', userRouter);\\napp.use('/employees', employeeRouter);\\napp.use('/places', placeRouter);\\napp.use('/schedules', scheduleRouter);\\napp.use('/tourists', touristRouter);\\napp.use('/dashboard', dashboardRouter); // catch 404 and forward to error handler\\n\\napp.use(function (req, res, next) {\\n next(createError(404));\\n}); // error handler\\n\\napp.use(function (err, req, res, next) {\\n // set locals, only providing error in development\\n res.locals.message = err.message;\\n res.locals.error = req.app.get('env') === 'development' ? err : {}; // render the error page\\n\\n res.status(err.status || 500);\\n res.render('error');\\n});\\nmodule.exports = app;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC5qcyJdLCJuYW1lcyI6WyJjcmVhdGVFcnJvciIsInJlcXVpcmUiLCJleHByZXNzIiwiY29ycyIsInBhdGgiLCJib2R5UGFyc2VyIiwiZXhwcmVzc1ZhbGlkYXRvciIsInNlc3Npb24iLCJGaWxlU3RvcmUiLCJjb29raWVQYXJzZXIiLCJsb2dnZXIiLCJwYXNzcG9ydCIsIm1vbmdvb3NlIiwiY29uZmlnIiwidXNlclJvdXRlciIsImVtcGxveWVlUm91dGVyIiwicGxhY2VSb3V0ZXIiLCJzY2hlZHVsZVJvdXRlciIsInRvdXJpc3RSb3V0ZXIiLCJkYXNoYm9hcmRSb3V0ZXIiLCJhcHAiLCJzZXQiLCJqb2luIiwiX19kaXJuYW1lIiwidXNlIiwiaW5pdGlhbGl6ZSIsImpzb24iLCJ1cmxlbmNvZGVkIiwiZXh0ZW5kZWQiLCJzdGF0aWMiLCJ1cmwiLCJwcm9jZXNzIiwiZW52IiwibW9uZ29VcmwiLCJOT0RFX0VOViIsInRlc3RNb25nb1VybCIsImNvbm5lY3QiLCJ1c2VOZXdVcmxQYXJzZXIiLCJ1c2VDcmVhdGVJbmRleCIsInVzZVVuaWZpZWRUb3BvbG9neSIsInRoZW4iLCJkYiIsImVyciIsImNvbnNvbGUiLCJsb2ciLCJyZXEiLCJyZXMiLCJuZXh0IiwibG9jYWxzIiwibWVzc2FnZSIsImVycm9yIiwiZ2V0Iiwic3RhdHVzIiwicmVuZGVyIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsSUFBSUEsV0FBVyxHQUFHQyxPQUFPLENBQUMsYUFBRCxDQUF6Qjs7QUFDQSxJQUFJQyxPQUFPLEdBQUdELE9BQU8sQ0FBQyxTQUFELENBQXJCOztBQUNBLE1BQU1FLElBQUksR0FBR0YsT0FBTyxDQUFDLE1BQUQsQ0FBcEI7O0FBQ0EsSUFBSUcsSUFBSSxHQUFHSCxPQUFPLENBQUMsTUFBRCxDQUFsQjs7QUFDQSxNQUFNSSxVQUFVLEdBQUdKLE9BQU8sQ0FBQyxhQUFELENBQTFCOztBQUNBLE1BQU1LLGdCQUFnQixHQUFHTCxPQUFPLENBQUMs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a0JWLFVBQWxCO0FBQ0FNLEdBQUcsQ0FBQ0ksR0FBSixDQUFRLFlBQVIsRUFBc0JULGNBQXRCO0FBQ0FLLEdBQUcsQ0FBQ0ksR0FBSixDQUFRLFNBQVIsRUFBbUJSLFdBQW5CO0FBQ0FJLEdBQUcsQ0FBQ0ksR0FBSixDQUFRLFlBQVIsRUFBc0JQLGNBQXRCO0FBQ0FHLEdBQUcsQ0FBQ0ksR0FBSixDQUFRLFdBQVIsRUFBcUJOLGFBQXJCO0FBQ0FFLEdBQUcsQ0FBQ0ksR0FBSixDQUFRLFlBQVIsRUFBc0JMLGVBQXRCLEUsQ0FFQTs7QUFDQUMsR0FBRyxDQUFDSSxHQUFKLENBQVEsVUFBVXFCLEdBQVYsRUFBZUMsR0FBZixFQUFvQkMsSUFBcEIsRUFBMEI7QUFDaENBLEVBQUFBLElBQUksQ0FBQy9DLFdBQVcsQ0FBQyxHQUFELENBQVosQ0FBSjtBQUNELENBRkQsRSxDQUlBOztBQUNBb0IsR0FBRyxDQUFDSSxHQUFKLENBQVEsVUFBVWtCLEdBQVYsRUFBZUcsR0FBZixFQUFvQkMsR0FBcEIsRUFBeUJDLElBQXpCLEVBQStCO0FBQ3JDO0FBQ0FELEVBQUFBLEdBQUcsQ0FBQ0UsTUFBSixDQUFXQyxPQUFYLEdBQXFCUCxHQUFHLENBQUNPLE9BQXpCO0FBQ0FILEVBQUFBLEdBQUcsQ0FBQ0UsTUFBSixDQUFXRSxLQUFYLEdBQW1CTCxHQUFHLENBQUN6QixHQUFKLENBQVErQixHQUFSLENBQVksS0FBWixNQUF1QixhQUF2QixHQUF1Q1QsR0FBdkMsR0FBNkMsRUFBaEUsQ0FIcUMsQ0FLckM7O0FBQ0FJLEVBQUFBLEdBQUcsQ0FBQ00sTUFBSixDQUFXVixHQUFHLENBQUNVLE1BQUosSUFBYyxHQUF6QjtBQUNBTixFQUFBQSxHQUFHLENBQUNPLE1BQUosQ0FBVyxPQUFYO0FBQ0QsQ0FSRDtBQVVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUJuQyxHQUFqQiIsInNvdXJjZXNDb250ZW50IjpbInZhciBjcmVhdGVFcnJvciA9IHJlcXVpcmUoJ2h0dHAtZXJyb3JzJyk7XHJcbnZhciBleHByZXNzID0gcmVxdWlyZSgnZXhwcmVzcycpO1xyXG5jb25zdCBjb3JzID0gcmVxdWlyZSgnY29ycycpO1xyXG52YXIgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcclxuY29uc3QgYm9keVBhcnNlciA9IHJlcXVpcmUoJ2JvZHktcGFyc2VyJylcclxuY29uc3QgZXhwcmVzc1ZhbGlkYXRvciA9IHJlcXVpcmUoJ2V4cHJlc3MtdmFsaWRhdG9yJylcclxudmFyIHNlc3Npb24gPSByZXF1aXJlKCdleHByZXNzLXNlc3Npb24nKTtcclxudmFyIEZpbGVTdG9yZSA9IHJlcXVpcmUoJ3Nlc3Npb24tZmlsZS1zdG9yZScpKHNlc3Npb24pO1xyXG52YXIgY29va2llUGFyc2VyID0gcmVxdWlyZSgnY29va2llLXBhcnNlcicpO1xyXG52YXIgbG9nZ2VyID0gcmVxdWlyZSgnbW9yZ2FuJyk7XHJcbnZhciBwYXNzcG9ydCA9IHJlcXVpcmUoJ3Bhc3Nwb3J0Jyk7XHJcbmNvbnN0IG1vbmdvb3NlID0gcmVxdWlyZSgnbW9uZ29vc2UnKTtcclxucmVxdWlyZSgnZG90ZW52JykuY29uZmlnKClcclxuXHJcbnZhciB1c2VyUm91dGVyID0gcmVxdWlyZSgnLi9yb3V0ZXMvdXNlclJvdXRlcicpO1xyXG52YXIgZW1wbG95ZWVSb3V0ZXIgPSByZXF1aXJlKCcuL3JvdXRlcy9lbXBsb3llZVJvdXRlcicpO1xyXG52YXIgcGxhY2VSb3V0ZXIgPSByZXF1aXJlKCcuL3JvdXRlcy9wbGFjZVJvdXRlcicpO1xyXG52YXIgc2NoZWR1bGVSb3V0ZXIgPSByZXF1aXJlKCcuL3JvdXRlcy9zY2hlZHVsZVJvdXRlcicpO1xyXG52YXIgdG91cmlzdFJvdXRlciA9IHJlcXVpcmUoJy4vcm91dGVzL3RvdXJpc3RSb3V0ZXInKTtcclxudmFyIGRhc2hib2FyZFJvdXRlciA9IHJlcXVpcmUoJy4vcm91dGVzL2Rhc2hib2FyZFJvdXRlcicpO1xyXG5cclxudmFyIGFwcCA9IGV4cHJlc3MoKTtcclxuXHJcbi8vIHZpZXcgZW5naW5lIHNldHVwXHJcbmFwcC5zZXQoJ3ZpZXdzJywgcGF0aC5qb2luKF9fZGlybmFtZSwgJ3ZpZXdzJykpO1xyXG5hcHAuc2V0KCd2aWV3IGVuZ2luZScsICdqYWRlJyk7XHJcbmFwcC51c2UoY29ycygpKTtcclxuYXBwLnVzZShwYXNzcG9ydC5pbml0aWFsaXplKCkpO1xyXG5cclxuYXBwLnVzZShib2R5UGFyc2VyLmpzb24oKSk7XHJcblxyXG5hcHAudXNlKGNvb2tpZVBhcnNlcigndGhlLWltbW9ydGFsLWNvaWxzJykpO1xyXG4vLyBhcHAudXNlKGxvZ2dlcignZGV2JykpO1xyXG5hcHAudXNlKGV4cHJlc3MuanNvbigpKTtcclxuYXBwLnVzZShleHByZXNzLnVybGVuY29kZWQoeyBleHRlbmRlZDogZmFsc2UgfSkpO1xyXG5hcHAudXNlKGNvb2tpZVBhcnNlcigpKTtcclxuLy8gYXBwLnVzZShleHByZXNzLnN0YXRpYygnYnVpbGQnKSk7XHJcbmFwcC51c2UoZXhwcmVzcy5zdGF0aWMocGF0aC5qb2luKF9fZGlybmFtZSwgJ2J1aWxkJykpKTtcclxuXHJcbnZhciB1cmwgPSBwcm9jZXNzLmVudi5tb25nb1VybDtcclxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAndGVzdCcpIHtcclxuICB1cmwgPSBwcm9jZXNzLmVudi50ZXN0TW9uZ29Vcmw7XHJcbn1cclxubW9uZ29vc2UuY29ubmVjdCh1cmwsIHsgdXNlTmV3VXJsUGFyc2VyOiB0cnVlLCB1c2VDcmVhdGVJbmRleDogdHJ1ZSwgdXNlVW5pZmllZFRvcG9sb2d5OiB0cnVlIH0pLnRoZW4oKGRiKSA9PiB7XHJcbn0sIChlcnIpID0+IHtcclxuICBpZiAoZXJyKSB7XHJcbiAgICBjb25zb2xlLmxvZygn8J+RuiAgRXJyb3IgY29ubmVjdGluZyB0byBNb25nb0RCJyk7XHJcbiAgfSBlbHNlIHtcclxuICAgIGNvbnNvbGUubG9nKCfinIUgIENvbm5lY3RlZCB0byBNb25nb0RCJyk7XHJcbiAgfVxyXG59KTtcclxuXHJcbmFwcC51c2UoJy91c2VycycsIHVzZXJSb3V0ZXIpO1xyXG5hcHAudXNlKCcvZW1wbG95ZWVzJywgZW1wbG95ZWVSb3V0ZXIpO1xyXG5hcHAudXNlKCcvcGxhY2VzJywgcGxhY2VSb3V0ZXIpO1xyXG5hcHAudXNlKCcvc2NoZWR1bGVzJywgc2NoZWR1bGVSb3V0ZXIpO1xyXG5hcHAudXNlKCcvdG91cmlzdHMnLCB0b3VyaXN0Um91dGVyKTtcclxuYXBwLnVzZSgnL2Rhc2hib2FyZCcsIGRhc2hib2FyZFJvdXRlcik7XHJcblxyXG4vLyBjYXRjaCA0MDQgYW5kIGZvcndhcmQgdG8gZXJyb3IgaGFuZGxlclxyXG5hcHAudXNlKGZ1bmN0aW9uIChyZXEsIHJlcywgbmV4dCkge1xyXG4gIG5leHQoY3JlYXRlRXJyb3IoNDA0KSk7XHJcbn0pO1xyXG5cclxuLy8gZXJyb3IgaGFuZGxlclxyXG5hcHAudXNlKGZ1bmN0aW9uIChlcnIsIHJlcSwgcmVzLCBuZXh0KSB7XHJcbiAgLy8gc2V0IGxvY2Fscywgb25seSBwcm92aWRpbmcgZXJyb3IgaW4gZGV2ZWxvcG1lbnRcclxuICByZXMubG9jYWxzLm1lc3NhZ2UgPSBlcnIubWVzc2FnZTtcclxuICByZXMubG9jYWxzLmVycm9yID0gcmVxLmFwcC5nZXQoJ2VudicpID09PSAnZGV2ZWxvcG1lbnQnID8gZXJyIDoge307XHJcblxyXG4gIC8vIHJlbmRlciB0aGUgZXJyb3IgcGFnZVxyXG4gIHJlcy5zdGF0dXMoZXJyLnN0YXR1cyB8fCA1MDApO1xyXG4gIHJlcy5yZW5kZXIoJ2Vycm9yJyk7XHJcbn0pO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBhcHA7XHJcbiJdfQ==\",\"originalCode\":\"var createError = require('http-errors');\\r\\nvar express = require('express');\\r\\nconst cors = require('cors');\\r\\nvar path = require('path');\\r\\nconst bodyParser = require('body-parser')\\r\\nconst expressValidator = require('express-validator')\\r\\nvar session = require('express-session');\\r\\nvar FileStore = require('session-file-store')(session);\\r\\nvar cookieParser = require('cookie-parser');\\r\\nvar logger = require('morgan');\\r\\nvar passport = require('passport');\\r\\nconst mongoose = require('mongoose');\\r\\nrequire('dotenv').config()\\r\\n\\r\\nvar userRouter = require('./routes/userRouter');\\r\\nvar employeeRouter = require('./routes/employeeRouter');\\r\\nvar placeRouter = require('./routes/placeRouter');\\r\\nvar scheduleRouter = require('./routes/scheduleRouter');\\r\\nvar touristRouter = require('./routes/touristRouter');\\r\\nvar dashboardRouter = require('./routes/dashboardRouter');\\r\\n\\r\\nvar app = express();\\r\\n\\r\\n// view engine setup\\r\\napp.set('views', path.join(__dirname, 'views'));\\r\\napp.set('view engine', 'jade');\\r\\napp.use(cors());\\r\\napp.use(passport.initialize());\\r\\n\\r\\napp.use(bodyParser.json());\\r\\n\\r\\napp.use(cookieParser('the-immortal-coils'));\\r\\n// app.use(logger('dev'));\\r\\napp.use(express.json());\\r\\napp.use(express.urlencoded({ extended: false }));\\r\\napp.use(cookieParser());\\r\\n// app.use(express.static('build'));\\r\\napp.use(express.static(path.join(__dirname, 'build')));\\r\\n\\r\\nvar url = process.env.mongoUrl;\\r\\nif (process.env.NODE_ENV === 'test') {\\r\\n url = process.env.testMongoUrl;\\r\\n}\\r\\nmongoose.connect(url, { useNewUrlParser: true, useCreateIndex: true, useUnifiedTopology: true }).then((db) => {\\r\\n}, (err) => {\\r\\n if (err) {\\r\\n console.log('👺 Error connecting to MongoDB');\\r\\n } else {\\r\\n console.log('✅ Connected to MongoDB');\\r\\n }\\r\\n});\\r\\n\\r\\napp.use('/users', userRouter);\\r\\napp.use('/employees', employeeRouter);\\r\\napp.use('/places', placeRouter);\\r\\napp.use('/schedules', scheduleRouter);\\r\\napp.use('/tourists', touristRouter);\\r\\napp.use('/dashboard', dashboardRouter);\\r\\n\\r\\n// catch 404 and forward to error handler\\r\\napp.use(function (req, res, next) {\\r\\n next(createError(404));\\r\\n});\\r\\n\\r\\n// error handler\\r\\napp.use(function (err, req, res, next) {\\r\\n // set locals, only providing error in development\\r\\n res.locals.message = err.message;\\r\\n res.locals.error = req.app.get('env') === 'development' ? err : {};\\r\\n\\r\\n // render the error page\\r\\n res.status(err.status || 500);\\r\\n res.render('error');\\r\\n});\\r\\n\\r\\nmodule.exports = app;\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/01/app_010e21b7416079df77678cc6cb70a530.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"1596\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\app.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":10626,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":10623,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1632,\"endOffset\":1640,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1642,\"endOffset\":1776,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":2049,\"endOffset\":2104,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":2133,\"endOffset\":2408,\"count\":1}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"var express = require('express');\\n\\nvar userRouter = express.Router();\\n\\nconst bodyParser = require('body-parser');\\n\\nvar upload = require('../controllers/upload');\\n\\nconst {\\n checkSchema\\n} = require('express-validator');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nvar validationRules = require('../middleware/validation');\\n\\nvar userController = require('../controllers/userController');\\n\\nconst cors = require('./cors');\\n\\nuserRouter.use(bodyParser.json());\\nuserRouter.options('*', cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n});\\nuserRouter.post('/signup/admin', cors.corsWithOptions, userController.signupAdmin);\\nuserRouter.post('/login', cors.corsWithOptions, userController.login);\\nuserRouter.post('/changepassoword/:id', authenticate.verifyUser, userController.changePassoword);\\nuserRouter.post(\\\"/updateprofilepicture/:id\\\", authenticate.verifyUser, upload.UploadUserImage);\\nuserRouter.get('/logout', authenticate.verifyUser, userController.logout);\\nmodule.exports = userRouter;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVzZXJSb3V0ZXIuanMiXSwibmFtZXMiOlsiZXhwcmVzcyIsInJlcXVpcmUiLCJ1c2VyUm91dGVyIiwiUm91dGVyIiwiYm9keVBhcnNlciIsInVwbG9hZCIsImNoZWNrU2NoZW1hIiwiYXV0aGVudGljYXRlIiwidmFsaWRhdGlvblJ1bGVzIiwidXNlckNvbnRyb2xsZXIiLCJjb3JzIiwidXNlIiwianNvbiIsIm9wdGlvbnMiLCJjb3JzV2l0aE9wdGlvbnMiLCJyZXEiLCJyZXMiLCJzZW5kU3RhdHVzIiwicG9zdCIsInNpZ251cEFkbWluIiwibG9naW4iLCJ2ZXJpZnlVc2VyIiwiY2hhbmdlUGFzc293b3JkIiwiVXBsb2FkVXNlckltYWdlIiwiZ2V0IiwibG9nb3V0IiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsSUFBSUEsT0FBTyxHQUFHQyxPQUFPLENBQUMsU0FBRCxDQUFyQjs7QUFDQSxJQUFJQyxVQUFVLEdBQUdGLE9BQU8sQ0FBQ0csTUFBUixFQUFqQjs7QUFFQSxNQUFNQyxVQUFVLEdBQUdILE9BQU8sQ0FBQyxhQUFELENBQTFCOztBQUNBLElBQUlJLE1BQU0sR0FBR0osT0FBTyxDQUFDLHVCQUFELENBQXBCOztBQUNBLE1BQU07QUFBRUssRUFBQUE7QUFBRixJQUFrQkwsT0FBTyxDQUFDLG1CQUFELENBQS9COztBQUNBLElBQUlNLFlBQVksR0FBR04sT0FBTyxDQUFDLDRCQUFELENBQTFCOztBQUNBLElBQUlPLGVBQWUsR0FBR1AsT0FBTyxDQUFDLDBCQUFELENBQTdCOztBQUNBLElBQUlRLGNBQWMsR0FBR1IsT0FBTyxDQUFDLCtCQUFELENBQTVCOztBQUNBLE1BQU1TLElBQUksR0FBR1QsT0FBTyxDQUFDLFFBQUQsQ0FBcEI7O0FBRUFDLFVBQVUsQ0FBQ1MsR0FBWCxDQUFlUCxVQUFVLENBQUNRLElBQVgsRUFBZjtBQUVBVixVQUFVLENBQUNXLE9BQVgsQ0FBbUIsR0FBbkIsRUFBd0JILElBQUksQ0FBQ0ksZUFBN0IsRUFBOEMsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEtBQWM7QUFBRUEsRUFBQUEsR0FBRyxDQUFDQyxVQUFKLENBQWUsR0FBZjtBQUFzQixDQUFwRjtBQUVBZixVQUFVLENBQUNnQixJQUFYLENBQWdCLGVBQWhCLEVBQWlDUixJQUFJLENBQUNJLGVBQXRDLEVBQXVETCxjQUFjLENBQUNVLFdBQXRFO0FBRUFqQixVQUFVLENBQUNnQixJQUFYLENBQWdCLFFBQWhCLEVBQTBCUixJQUFJLENBQUNJLGVBQS9CLEVBQWdETCxjQUFjLENBQUNXLEtBQS9EO0FBRUFsQixVQUFVLENBQUNnQixJQUFYLENBQWdCLHNCQUFoQixFQUF1Q1gsWUFBWSxDQUFDYyxVQUFwRCxFQUFnRVosY0FBYyxDQUFDYSxlQUEvRTtBQUVBcEIsVUFBVSxDQUFDZ0IsSUFBWCxDQUFnQiwyQkFBaEIsRUFBNENYLFlBQVksQ0FBQ2MsVUFBekQsRUFBcUVoQixNQUFNLENBQUNrQixlQUE1RTtBQUVBckIsVUFBVSxDQUFDc0IsR0FBWCxDQUFlLFNBQWYsRUFBeUJqQixZQUFZLENBQUNjLFVBQXRDLEVBQWtEWixjQUFjLENBQUNnQixNQUFqRTtBQUVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUJ6QixVQUFqQiIsInNvdXJjZXNDb250ZW50IjpbInZhciBleHByZXNzID0gcmVxdWlyZSgnZXhwcmVzcycpO1xyXG52YXIgdXNlclJvdXRlciA9IGV4cHJlc3MuUm91dGVyKCk7XHJcblxyXG5jb25zdCBib2R5UGFyc2VyID0gcmVxdWlyZSgnYm9keS1wYXJzZXInKTtcclxudmFyIHVwbG9hZCA9IHJlcXVpcmUoJy4uL2NvbnRyb2xsZXJzL3VwbG9hZCcpO1xyXG5jb25zdCB7IGNoZWNrU2NoZW1hIH0gPSByZXF1aXJlKCdleHByZXNzLXZhbGlkYXRvcicpO1xyXG52YXIgYXV0aGVudGljYXRlID0gcmVxdWlyZSgnLi4vbWlkZGxld2FyZS9hdXRoZW50aWNhdGUnKTtcclxudmFyIHZhbGlkYXRpb25SdWxlcyA9IHJlcXVpcmUoJy4uL21pZGRsZXdhcmUvdmFsaWRhdGlvbicpO1xyXG52YXIgdXNlckNvbnRyb2xsZXIgPSByZXF1aXJlKCcuLi9jb250cm9sbGVycy91c2VyQ29udHJvbGxlcicpO1xyXG5jb25zdCBjb3JzID0gcmVxdWlyZSgnLi9jb3JzJyk7XHJcblxyXG51c2VyUm91dGVyLnVzZShib2R5UGFyc2VyLmpzb24oKSk7XHJcblxyXG51c2VyUm91dGVyLm9wdGlvbnMoJyonLCBjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcblxyXG51c2VyUm91dGVyLnBvc3QoJy9zaWdudXAvYWRtaW4nLCBjb3JzLmNvcnNXaXRoT3B0aW9ucywgdXNlckNvbnRyb2xsZXIuc2lnbnVwQWRtaW4pO1xyXG5cclxudXNlclJvdXRlci5wb3N0KCcvbG9naW4nLCBjb3JzLmNvcnNXaXRoT3B0aW9ucywgdXNlckNvbnRyb2xsZXIubG9naW4pO1xyXG5cclxudXNlclJvdXRlci5wb3N0KCcvY2hhbmdlcGFzc293b3JkLzppZCcsYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIHVzZXJDb250cm9sbGVyLmNoYW5nZVBhc3Nvd29yZCk7XHJcblxyXG51c2VyUm91dGVyLnBvc3QoXCIvdXBkYXRlcHJvZmlsZXBpY3R1cmUvOmlkXCIsYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIHVwbG9hZC5VcGxvYWRVc2VySW1hZ2UpO1xyXG5cclxudXNlclJvdXRlci5nZXQoJy9sb2dvdXQnLGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCB1c2VyQ29udHJvbGxlci5sb2dvdXQpO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSB1c2VyUm91dGVyO1xyXG4iXX0=\",\"originalCode\":\"var express = require('express');\\r\\nvar userRouter = express.Router();\\r\\n\\r\\nconst bodyParser = require('body-parser');\\r\\nvar upload = require('../controllers/upload');\\r\\nconst { checkSchema } = require('express-validator');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\nvar validationRules = require('../middleware/validation');\\r\\nvar userController = require('../controllers/userController');\\r\\nconst cors = require('./cors');\\r\\n\\r\\nuserRouter.use(bodyParser.json());\\r\\n\\r\\nuserRouter.options('*', cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n\\r\\nuserRouter.post('/signup/admin', cors.corsWithOptions, userController.signupAdmin);\\r\\n\\r\\nuserRouter.post('/login', cors.corsWithOptions, userController.login);\\r\\n\\r\\nuserRouter.post('/changepassoword/:id',authenticate.verifyUser, userController.changePassoword);\\r\\n\\r\\nuserRouter.post(\\\"/updateprofilepicture/:id\\\",authenticate.verifyUser, upload.UploadUserImage);\\r\\n\\r\\nuserRouter.get('/logout',authenticate.verifyUser, userController.logout);\\r\\n\\r\\nmodule.exports = userRouter;\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/a6/userRouter_a6221ff3be20743fe1c0fd1dc9fd8435.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2377\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\userRouter.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":4566,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":4563,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":606,\"endOffset\":646,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const sharp = require('sharp');\\n\\nconst uid = require('uid');\\n\\nconst fs = require('fs');\\n\\nconst Users = require('../models/users');\\n\\nconst Places = require('../models/visitingPlaces');\\n\\nconst uploadFile = async (req, res) => {\\n try {\\n await upload(req, res);\\n\\n if (req.file == undefined) {\\n return res.send(`You must select a file.`);\\n }\\n\\n return res.send(`File has been uploaded.`);\\n } catch (error) {\\n return res.send(`Error when trying upload image: ${error}`);\\n }\\n};\\n\\nconst UploadUserImage = async (req, res, next) => {\\n try {\\n const user_id = req.params._id;\\n const user = await Users.findById(user_id);\\n console.log(req);\\n let imageUrl;\\n\\n if (req.file) {\\n imageUrl = `${uid()}__${req.file.originalname}`;\\n let filename = `images/userImages/${imageUrl}`;\\n let previousImagePath = `images/userImages/${user.image}`;\\n const imageExist = fs.existsSync(previousImagePath);\\n\\n if (imageExist) {\\n deleteImage(previousImagePath);\\n }\\n\\n await sharp(req.file.path).rotate().resize(500, 500).toFile(filename);\\n fs.unlink(req.file.path, err => {\\n if (err) {}\\n });\\n } else {\\n imageUrl = 'profile.png';\\n }\\n\\n user.image = imageUrl;\\n await user.save();\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n message: 'Successfully updated profile picture'\\n });\\n } catch (err) {\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Error while updating profile picture'\\n });\\n }\\n};\\n\\nconst uploadPlaceImage = async (req, res, next) => {\\n try {\\n const place_id = req.params._id;\\n const place = await Places.findById(place_id);\\n let imageUrl;\\n\\n if (req.file) {\\n imageUrl = `${uid()}__${req.file.originalname}`;\\n let filename = `images/placeImages/${imageUrl}`;\\n let previousImagePath = `images/placeImages/${place.image}`;\\n const imageExist = fs.existsSync(previousImagePath);\\n\\n if (imageExist) {\\n deleteImage(previousImagePath);\\n }\\n\\n await sharp(req.file.path).rotate().resize(500, 500).toFile(filename);\\n fs.unlink(req.file.path, err => {\\n if (err) {}\\n });\\n } else {\\n imageUrl = 'image.png';\\n }\\n\\n place.image = imageUrl;\\n await place.save();\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n message: 'Successfully updated profile picture'\\n });\\n } catch (err) {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Error while updating profile picture'\\n });\\n }\\n};\\n\\nexports.UploadUserImage = UploadUserImage;\\nexports.uploadFile = uploadFile;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVwbG9hZC5qcyJdLCJuYW1lcyI6WyJzaGFycCIsInJlcXVpcmUiLCJ1aWQiLCJmcyIsIlVzZXJzIiwiUGxhY2VzIiwidXBsb2FkRmlsZSIsInJlcSIsInJlcyIsInVwbG9hZCIsImZpbGUiLCJ1bmRlZmluZWQiLCJzZW5kIiwiZXJyb3IiLCJVcGxvYWRVc2VySW1hZ2UiLCJuZXh0IiwidXNlcl9pZCIsInBhcmFtcyIsIl9pZCIsInVzZXIiLCJmaW5kQnlJZCIsImNvbnNvbGUiLCJsb2ciLCJpbWFnZVVybCIsIm9yaWdpbmFsbmFtZSIsImZpbGVuYW1lIiwicHJldmlvdXNJbWFnZVBhdGgiLCJpbWFnZSIsImltYWdlRXhpc3QiLCJleGlzdHNTeW5jIiwiZGVsZXRlSW1hZ2UiLCJwYXRoIiwicm90YXRlIiwicmVzaXplIiwidG9GaWxlIiwidW5saW5rIiwiZXJyIiwic2F2ZSIsInN0YXR1c0NvZGUiLCJzZXRIZWFkZXIiLCJqc29uIiwic3VjY2VzcyIsIm1lc3NhZ2UiLCJ1cGxvYWRQbGFjZUltYWdlIiwicGxhY2VfaWQiLCJwbGFjZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLEtBQUssR0FBR0MsT0FBTyxDQUFDLE9BQUQsQ0FBckI7O0FBQ0EsTUFBTUMsR0FBRyxHQUFHRCxPQUFPLENBQUMsS0FBRCxDQUFuQjs7QUFDQSxNQUFNRSxFQUFFLEdBQUdGLE9BQU8sQ0FBQyxJQUFELENBQWxCOztBQUNBLE1BQU1HLEtBQUssR0FBR0gsT0FBTyxDQUFDLGlCQUFELENBQXJCOztBQUNBLE1BQU1JLE1BQU0sR0FBR0osT0FBTyxDQUFDLDBCQUFELENBQXRCOztBQUVBLE1BQU1LLFVBQVUsR0FBRyxPQUFPQyxHQUFQLEVBQVlDLEdBQVosS0FBb0I7QUFDbkMsTUFBSTtBQUNBLFVBQU1DLE1BQU0sQ0FBQ0YsR0FBRCxFQUFNQyxHQUFOLENBQVo7O0FBRUEsUUFBSUQsR0FBRyxDQUFDRyxJQUFKLElBQVlDLFNBQWhCLEVBQTJCO0FBQ3ZCLGFBQU9I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Q0FBQzhCLFVBQUosR0FBaUIsR0FBakI7QUFDQTlCLElBQUFBLEdBQUcsQ0FBQytCLFNBQUosQ0FBYyxjQUFkLEVBQThCLGtCQUE5QjtBQUNBL0IsSUFBQUEsR0FBRyxDQUFDZ0MsSUFBSixDQUFTO0FBQUVDLE1BQUFBLE9BQU8sRUFBRSxLQUFYO0FBQWtCQyxNQUFBQSxPQUFPLEVBQUU7QUFBM0IsS0FBVDtBQUNIO0FBQ0osQ0F6Q0Q7O0FBMkNBSSxPQUFPLENBQUNoQyxlQUFSLEdBQTBCQSxlQUExQjtBQUNBZ0MsT0FBTyxDQUFDeEMsVUFBUixHQUFxQkEsVUFBckIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBzaGFycCA9IHJlcXVpcmUoJ3NoYXJwJyk7XHJcbmNvbnN0IHVpZCA9IHJlcXVpcmUoJ3VpZCcpO1xyXG5jb25zdCBmcyA9IHJlcXVpcmUoJ2ZzJyk7XHJcbmNvbnN0IFVzZXJzID0gcmVxdWlyZSgnLi4vbW9kZWxzL3VzZXJzJyk7XHJcbmNvbnN0IFBsYWNlcyA9IHJlcXVpcmUoJy4uL21vZGVscy92aXNpdGluZ1BsYWNlcycpXHJcblxyXG5jb25zdCB1cGxvYWRGaWxlID0gYXN5bmMgKHJlcSwgcmVzKSA9PiB7XHJcbiAgICB0cnkge1xyXG4gICAgICAgIGF3YWl0IHVwbG9hZChyZXEsIHJlcyk7XHJcblxyXG4gICAgICAgIGlmIChyZXEuZmlsZSA9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlcy5zZW5kKGBZb3UgbXVzdCBzZWxlY3QgYSBmaWxlLmApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHJlcy5zZW5kKGBGaWxlIGhhcyBiZWVuIHVwbG9hZGVkLmApO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICByZXR1cm4gcmVzLnNlbmQoYEVycm9yIHdoZW4gdHJ5aW5nIHVwbG9hZCBpbWFnZTogJHtlcnJvcn1gKTtcclxuICAgIH1cclxufTtcclxuXHJcbmNvbnN0IFVwbG9hZFVzZXJJbWFnZSA9IGFzeW5jIChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgICBjb25zdCB1c2VyX2lkID0gcmVxLnBhcmFtcy5faWQ7XHJcbiAgICAgICAgY29uc3QgdXNlciA9IGF3YWl0IFVzZXJzLmZpbmRCeUlkKHVzZXJfaWQpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKHJlcSk7XHJcblxyXG4gICAgICAgIGxldCBpbWFnZVVybDtcclxuICAgICAgICBpZiAocmVxLmZpbGUpIHtcclxuICAgICAgICAgICAgaW1hZ2VVcmwgPSBgJHt1aWQoKX1fXyR7cmVxLmZpbGUub3JpZ2luYWxuYW1lfWA7XHJcbiAgICAgICAgICAgIGxldCBmaWxlbmFtZSA9IGBpbWFnZXMvdXNlckltYWdlcy8ke2ltYWdlVXJsfWA7XHJcbiAgICAgICAgICAgIGxldCBwcmV2aW91c0ltYWdlUGF0aCA9IGBpbWFnZXMvdXNlckltYWdlcy8ke3VzZXIuaW1hZ2V9YDtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGltYWdlRXhpc3QgPSBmcy5leGlzdHNTeW5jKHByZXZpb3VzSW1hZ2VQYXRoKTtcclxuICAgICAgICAgICAgaWYgKGltYWdlRXhpc3QpIHtcclxuICAgICAgICAgICAgICAgIGRlbGV0ZUltYWdlKHByZXZpb3VzSW1hZ2VQYXRoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBhd2FpdCBzaGFycChyZXEuZmlsZS5wYXRoKVxyXG4gICAgICAgICAgICAgICAgLnJvdGF0ZSgpXHJcbiAgICAgICAgICAgICAgICAucmVzaXplKDUwMCwgNTAwKVxyXG4gICAgICAgICAgICAgICAgLnRvRmlsZShmaWxlbmFtZSk7XHJcblxyXG4gICAgICAgICAgICBmcy51bmxpbmsocmVxLmZpbGUucGF0aCwgKGVycikgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGltYWdlVXJsID0gJ3Byb2ZpbGUucG5nJztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHVzZXIuaW1hZ2UgPSBpbWFnZVVybDtcclxuICAgICAgICBhd2FpdCB1c2VyLnNhdmUoKTtcclxuXHJcblxyXG4gICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCBtZXNzYWdlOiAnU3VjY2Vzc2Z1bGx5IHVwZGF0ZWQgcHJvZmlsZSBwaWN0dXJlJyB9KTtcclxuXHJcbiAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDUwMDtcclxuICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogZmFsc2UsIG1lc3NhZ2U6ICdFcnJvciB3aGlsZSB1cGRhdGluZyBwcm9maWxlIHBpY3R1cmUnIH0pO1xyXG4gICAgfVxyXG59O1xyXG5cclxuY29uc3QgdXBsb2FkUGxhY2VJbWFnZSA9IGFzeW5jIChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgICBjb25zdCBwbGFjZV9pZCA9IHJlcS5wYXJhbXMuX2lkO1xyXG4gICAgICAgIGNvbnN0IHBsYWNlID0gYXdhaXQgUGxhY2VzLmZpbmRCeUlkKHBsYWNlX2lkKTtcclxuXHJcbiAgICAgICAgbGV0IGltYWdlVXJsO1xyXG4gICAgICAgIGlmIChyZXEuZmlsZSkge1xyXG4gICAgICAgICAgICBpbWFnZVVybCA9IGAke3VpZCgpfV9fJHtyZXEuZmlsZS5vcmlnaW5hbG5hbWV9YDtcclxuICAgICAgICAgICAgbGV0IGZpbGVuYW1lID0gYGltYWdlcy9wbGFjZUltYWdlcy8ke2ltYWdlVXJsfWA7XHJcbiAgICAgICAgICAgIGxldCBwcmV2aW91c0ltYWdlUGF0aCA9IGBpbWFnZXMvcGxhY2VJbWFnZXMvJHtwbGFjZS5pbWFnZX1gO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgaW1hZ2VFeGlzdCA9IGZzLmV4aXN0c1N5bmMocHJldmlvdXNJbWFnZVBhdGgpO1xyXG4gICAgICAgICAgICBpZiAoaW1hZ2VFeGlzdCkge1xyXG4gICAgICAgICAgICAgICAgZGVsZXRlSW1hZ2UocHJldmlvdXNJbWFnZVBhdGgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGF3YWl0IHNoYXJwKHJlcS5maWxlLnBhdGgpXHJcbiAgICAgICAgICAgICAgICAucm90YXRlKClcclxuICAgICAgICAgICAgICAgIC5yZXNpemUoNTAwLCA1MDApXHJcbiAgICAgICAgICAgICAgICAudG9GaWxlKGZpbGVuYW1lKTtcclxuXHJcbiAgICAgICAgICAgIGZzLnVubGluayhyZXEuZmlsZS5wYXRoLCAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaW1hZ2VVcmwgPSAnaW1hZ2UucG5nJztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHBsYWNlLmltYWdlID0gaW1hZ2VVcmw7XHJcbiAgICAgICAgYXdhaXQgcGxhY2Uuc2F2ZSgpO1xyXG5cclxuXHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA1MDA7XHJcbiAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIG1lc3NhZ2U6ICdTdWNjZXNzZnVsbHkgdXBkYXRlZCBwcm9maWxlIHBpY3R1cmUnIH0pO1xyXG5cclxuICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogJ0Vycm9yIHdoaWxlIHVwZGF0aW5nIHByb2ZpbGUgcGljdHVyZScgfSk7XHJcbiAgICB9XHJcbn07XHJcblxyXG5leHBvcnRzLlVwbG9hZFVzZXJJbWFnZSA9IFVwbG9hZFVzZXJJbWFnZTtcclxuZXhwb3J0cy51cGxvYWRGaWxlID0gdXBsb2FkRmlsZTsiXX0=\",\"originalCode\":\"const sharp = require('sharp');\\r\\nconst uid = require('uid');\\r\\nconst fs = require('fs');\\r\\nconst Users = require('../models/users');\\r\\nconst Places = require('../models/visitingPlaces')\\r\\n\\r\\nconst uploadFile = async (req, res) => {\\r\\n try {\\r\\n await upload(req, res);\\r\\n\\r\\n if (req.file == undefined) {\\r\\n return res.send(`You must select a file.`);\\r\\n }\\r\\n\\r\\n return res.send(`File has been uploaded.`);\\r\\n } catch (error) {\\r\\n return res.send(`Error when trying upload image: ${error}`);\\r\\n }\\r\\n};\\r\\n\\r\\nconst UploadUserImage = async (req, res, next) => {\\r\\n try {\\r\\n const user_id = req.params._id;\\r\\n const user = await Users.findById(user_id);\\r\\n console.log(req);\\r\\n\\r\\n let imageUrl;\\r\\n if (req.file) {\\r\\n imageUrl = `${uid()}__${req.file.originalname}`;\\r\\n let filename = `images/userImages/${imageUrl}`;\\r\\n let previousImagePath = `images/userImages/${user.image}`;\\r\\n\\r\\n const imageExist = fs.existsSync(previousImagePath);\\r\\n if (imageExist) {\\r\\n deleteImage(previousImagePath);\\r\\n }\\r\\n await sharp(req.file.path)\\r\\n .rotate()\\r\\n .resize(500, 500)\\r\\n .toFile(filename);\\r\\n\\r\\n fs.unlink(req.file.path, (err) => {\\r\\n if (err) {\\r\\n }\\r\\n })\\r\\n } else {\\r\\n imageUrl = 'profile.png';\\r\\n }\\r\\n\\r\\n user.image = imageUrl;\\r\\n await user.save();\\r\\n\\r\\n\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, message: 'Successfully updated profile picture' });\\r\\n\\r\\n } catch (err) {\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Error while updating profile picture' });\\r\\n }\\r\\n};\\r\\n\\r\\nconst uploadPlaceImage = async (req, res, next) => {\\r\\n try {\\r\\n const place_id = req.params._id;\\r\\n const place = await Places.findById(place_id);\\r\\n\\r\\n let imageUrl;\\r\\n if (req.file) {\\r\\n imageUrl = `${uid()}__${req.file.originalname}`;\\r\\n let filename = `images/placeImages/${imageUrl}`;\\r\\n let previousImagePath = `images/placeImages/${place.image}`;\\r\\n\\r\\n const imageExist = fs.existsSync(previousImagePath);\\r\\n if (imageExist) {\\r\\n deleteImage(previousImagePath);\\r\\n }\\r\\n await sharp(req.file.path)\\r\\n .rotate()\\r\\n .resize(500, 500)\\r\\n .toFile(filename);\\r\\n\\r\\n fs.unlink(req.file.path, (err) => {\\r\\n if (err) {\\r\\n }\\r\\n })\\r\\n } else {\\r\\n imageUrl = 'image.png';\\r\\n }\\r\\n\\r\\n place.image = imageUrl;\\r\\n await place.save();\\r\\n\\r\\n\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, message: 'Successfully updated profile picture' });\\r\\n\\r\\n } catch (err) {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Error while updating profile picture' });\\r\\n }\\r\\n};\\r\\n\\r\\nexports.UploadUserImage = UploadUserImage;\\r\\nexports.uploadFile = uploadFile;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/7c/upload_7c4638f764653e4bdd79a0ce3f99ff41.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2378\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\upload.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":12934,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":12931,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"uploadFile\",\"ranges\":[{\"startOffset\":293,\"endOffset\":580,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"UploadUserImage\",\"ranges\":[{\"startOffset\":607,\"endOffset\":1726,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"uploadPlaceImage\",\"ranges\":[{\"startOffset\":1754,\"endOffset\":2858,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"var mongoose = require('mongoose');\\n\\nvar Schema = mongoose.Schema;\\n\\nvar passportLocalMongoose = require('passport-local-mongoose');\\n\\nvar User = new Schema({\\n firstname: {\\n type: String,\\n required: true\\n },\\n lastname: {\\n type: String,\\n required: true\\n },\\n email: {\\n type: String,\\n required: true,\\n unique: true\\n },\\n mobile: {\\n type: String\\n },\\n role: {\\n type: String,\\n default: \\\"user\\\",\\n enum: ['user', 'moderater', 'admin']\\n },\\n image: {\\n type: String\\n },\\n suite: {\\n type: String,\\n enum: ['gold', 'luxury', 'platinum']\\n },\\n rommnumber: {\\n type: String\\n },\\n userstate: {\\n type: String,\\n default: \\\"in\\\",\\n enum: ['in', 'out']\\n }\\n}, {\\n timestamps: true\\n});\\nUser.plugin(passportLocalMongoose);\\nUser.index({\\n '$**': 'text'\\n});\\nvar Users = mongoose.model('User', User);\\nmodule.exports = Users;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVzZXJzLmpzIl0sIm5hbWVzIjpbIm1vbmdvb3NlIiwicmVxdWlyZSIsIlNjaGVtYSIsInBhc3Nwb3J0TG9jYWxNb25nb29zZSIsIlVzZXIiLCJmaXJzdG5hbWUiLCJ0eXBlIiwiU3RyaW5nIiwicmVxdWlyZWQiLCJsYXN0bmFtZSIsImVtYWlsIiwidW5pcXVlIiwibW9iaWxlIiwicm9sZSIsImRlZmF1bHQiLCJlbnVtIiwiaW1hZ2UiLCJzdWl0ZSIsInJvbW1udW1iZXIiLCJ1c2Vyc3RhdGUiLCJ0aW1lc3RhbXBzIiwicGx1Z2luIiwiaW5kZXgiLCJVc2VycyIsIm1vZGVsIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsSUFBSUEsUUFBUSxHQUFHQyxPQUFPLENBQUMsVUFBRCxDQUF0Qjs7QUFDQSxJQUFJQyxNQUFNLEdBQUdGLFFBQVEsQ0FBQ0UsTUFBdEI7O0FBRUEsSUFBSUMscUJBQXFCLEdBQUdGLE9BQU8sQ0FBQyx5QkFBRCxDQUFuQzs7QUFFQSxJQUFJRyxJQUFJLEdBQUcsSUFBSUYsTUFBSixDQUFXO0FBQ2xCRyxFQUFBQSxTQUFTLEVBQUU7QUFDUEMsSUFBQUEsSUFBSSxFQUFFQyxNQURDO0FBRVBDLElBQUFBLFFBQVEsRUFBRTtBQUZILEdBRE87QUFLbEJDLEVBQUFBLFFBQVEsRUFBRTtBQUNOSCxJQUFBQSxJQUFJLEVBQUVDLE1BREE7QUFFTkMsSUFBQUEsUUFBUSxFQUFFO0FBRkosR0FMUTtBQVNsQkUsRUFBQUEsS0FBSyxFQUFFO0FBQ0hKLElBQUFBLElBQUksRUFBRUMsTUFESDtBQUVIQyxJQUFBQSxRQUFRLEVBQUUsSUFGUDtBQUdIRyxJQUFBQSxNQUFNLEVBQUU7QUFITCxHQVRXO0FBY2xCQyxFQUFBQSxNQUFNLEVBQUM7QUFDSE4sSUFBQUEsSUFBSSxFQUFFQztBQURILEdBZFc7QUFpQmxCTSxFQUFBQSxJQUFJLEVBQ0o7QUFDSVAsSUFBQUEsSUFBSSxFQUFFQyxNQURWO0FBRUlPLElBQUFBLE9BQU8sRUFBRSxNQUZiO0FBR0lDLElBQUFBLElBQUksRUFBQyxDQUFDLE1BQUQsRUFBUSxXQUFSLEVBQW9CLE9BQXBCO0FBSFQsR0FsQmtCO0FBdUJsQkMsRUFBQUEsS0FBSyxFQUFFO0FBQ0hWLElBQUFBLElBQUksRUFBRUM7QUFESCxHQXZCVztBQTBCbEJVLEVBQUFBLEtBQUssRUFBQztBQUNGWCxJQUFBQSxJQUFJLEVBQUVDLE1BREo7QUFFRlEsSUFBQUEsSUFBSSxFQUFDLENBQUMsTUFBRCxFQUFRLFFBQVIsRUFBaUIsVUFBakI7QUFGSCxHQTFCWTtBQThCbEJHLEVBQUFBLFVBQVUsRUFBQztBQUNQWixJQUFBQSxJQUFJLEVBQUVDO0FBREMsR0E5Qk87QUFpQ2xCWSxFQUFBQSxTQUFTLEVBQUM7QUFDTmIsSUFBQUEsSUFBSSxFQUFFQyxNQURBO0FBRU5PLElBQUFBLE9BQU8sRUFBRSxJQUZIO0FBR05DLElBQUFBLElBQUksRUFBQyxDQUFDLElBQUQsRUFBTSxLQUFOO0FBSEM7QUFqQ1EsQ0FBWCxFQXNDUjtBQUNDSyxFQUFBQSxVQUFVLEVBQUU7QUFEYixDQXRDUSxDQUFYO0FBMENBaEIsSUFBSSxDQUFDaUIsTUFBTCxDQUFZbEIscUJBQVo7QUFDQUMsSUFBSSxDQUFDa0IsS0FBTCxDQUFXO0FBQUMsU0FBTTtBQUFQLENBQVg7QUFDQSxJQUFJQyxLQUFLLEdBQUd2QixRQUFRLENBQUN3QixLQUFULENBQWUsTUFBZixFQUF1QnBCLElBQXZCLENBQVo7QUFFQXFCLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQkgsS0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgbW9uZ29vc2UgPSByZXF1aXJlKCdtb25nb29zZScpO1xyXG52YXIgU2NoZW1hID0gbW9uZ29vc2UuU2NoZW1hO1xyXG5cclxudmFyIHBhc3Nwb3J0TG9jYWxNb25nb29zZSA9IHJlcXVpcmUoJ3Bhc3Nwb3J0LWxvY2FsLW1vbmdvb3NlJyk7XHJcblxyXG52YXIgVXNlciA9IG5ldyBTY2hlbWEoe1xyXG4gICAgZmlyc3RuYW1lOiB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlXHJcbiAgICB9LFxyXG4gICAgbGFzdG5hbWU6IHtcclxuICAgICAgICB0eXBlOiBTdHJpbmcsXHJcbiAgICAgICAgcmVxdWlyZWQ6IHRydWVcclxuICAgIH0sXHJcbiAgICBlbWFpbDoge1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgICB1bmlxdWU6IHRydWVcclxuICAgIH0sXHJcbiAgICBtb2JpbGU6e1xyXG4gICAgICAgIHR5cGU6IFN0cmluZ1xyXG4gICAgfSxcclxuICAgIHJvbGU6XHJcbiAgICB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICAgIGRlZmF1bHQ6IFwidXNlclwiLFxyXG4gICAgICAgIGVudW06Wyd1c2VyJywnbW9kZXJhdGVyJywnYWRtaW4nXVxyXG4gICAgfSxcclxuICAgIGltYWdlOiB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nXHJcbiAgICB9LFxyXG4gICAgc3VpdGU6e1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICBlbnVtOlsnZ29sZCcsJ2x1eHVyeScsJ3BsYXRpbnVtJ11cclxuICAgIH0sXHJcbiAgICByb21tbnVtYmVyOntcclxuICAgICAgICB0eXBlOiBTdHJpbmdcclxuICAgIH0sXHJcbiAgICB1c2Vyc3RhdGU6e1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICBkZWZhdWx0OiBcImluXCIsXHJcbiAgICAgICAgZW51bTpbJ2luJywnb3V0J11cclxuICAgIH1cclxufSwge1xyXG4gICAgdGltZXN0YW1wczogdHJ1ZVxyXG59KTtcclxuXHJcblVzZXIucGx1Z2luKHBhc3Nwb3J0TG9jYWxNb25nb29zZSk7XHJcblVzZXIuaW5kZXgoeyckKionOid0ZXh0J30pO1xyXG52YXIgVXNlcnMgPSBtb25nb29zZS5tb2RlbCgnVXNlcicsIFVzZXIpO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBVc2VyczsiXX0=\",\"originalCode\":\"var mongoose = require('mongoose');\\r\\nvar Schema = mongoose.Schema;\\r\\n\\r\\nvar passportLocalMongoose = require('passport-local-mongoose');\\r\\n\\r\\nvar User = new Schema({\\r\\n firstname: {\\r\\n type: String,\\r\\n required: true\\r\\n },\\r\\n lastname: {\\r\\n type: String,\\r\\n required: true\\r\\n },\\r\\n email: {\\r\\n type: String,\\r\\n required: true,\\r\\n unique: true\\r\\n },\\r\\n mobile:{\\r\\n type: String\\r\\n },\\r\\n role:\\r\\n {\\r\\n type: String,\\r\\n default: \\\"user\\\",\\r\\n enum:['user','moderater','admin']\\r\\n },\\r\\n image: {\\r\\n type: String\\r\\n },\\r\\n suite:{\\r\\n type: String,\\r\\n enum:['gold','luxury','platinum']\\r\\n },\\r\\n rommnumber:{\\r\\n type: String\\r\\n },\\r\\n userstate:{\\r\\n type: String,\\r\\n default: \\\"in\\\",\\r\\n enum:['in','out']\\r\\n }\\r\\n}, {\\r\\n timestamps: true\\r\\n});\\r\\n\\r\\nUser.plugin(passportLocalMongoose);\\r\\nUser.index({'$**':'text'});\\r\\nvar Users = mongoose.model('User', User);\\r\\n\\r\\nmodule.exports = Users;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/fa/users_fa250a82bd410ffb1909f920e93eed19.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2448\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\models\\\\users.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":4633,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":4630,\"count\":1}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const mongoose = require('mongoose');\\n\\nconst Schema = mongoose.Schema;\\nconst pointSchema = new Schema({\\n type: {\\n type: String,\\n enum: ['Point'],\\n required: true,\\n default: 'Point'\\n },\\n coordinates: {\\n type: [Number],\\n required: true\\n }\\n});\\nconst placeSchema = new Schema({\\n name: {\\n type: String,\\n required: true,\\n unique: true\\n },\\n description: {\\n type: String,\\n required: true\\n },\\n location: {\\n type: pointSchema,\\n index: '2dsphere',\\n required: true\\n },\\n distance: {\\n type: String,\\n required: true\\n },\\n timeToReach: {\\n type: String,\\n required: true\\n },\\n image: {\\n type: String\\n },\\n travellingMethods: [{\\n type: String,\\n enum: ['Bus', 'Car', 'Train', 'Threewheeler', 'Foot']\\n }]\\n}, {\\n timestamps: true\\n});\\nplaceSchema.index({\\n '$**': 'text'\\n});\\nvar Places = mongoose.model('Place', placeSchema);\\nmodule.exports = Places;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInZpc2l0aW5nUGxhY2VzLmpzIl0sIm5hbWVzIjpbIm1vbmdvb3NlIiwicmVxdWlyZSIsIlNjaGVtYSIsInBvaW50U2NoZW1hIiwidHlwZSIsIlN0cmluZyIsImVudW0iLCJyZXF1aXJlZCIsImRlZmF1bHQiLCJjb29yZGluYXRlcyIsIk51bWJlciIsInBsYWNlU2NoZW1hIiwibmFtZSIsInVuaXF1ZSIsImRlc2NyaXB0aW9uIiwibG9jYXRpb24iLCJpbmRleCIsImRpc3RhbmNlIiwidGltZVRvUmVhY2giLCJpbWFnZSIsInRyYXZlbGxpbmdNZXRob2RzIiwidGltZXN0YW1wcyIsIlBsYWNlcyIsIm1vZGVsIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsUUFBUSxHQUFHQyxPQUFPLENBQUMsVUFBRCxDQUF4Qjs7QUFDQSxNQUFNQyxNQUFNLEdBQUdGLFFBQVEsQ0FBQ0UsTUFBeEI7QUFFQSxNQUFNQyxXQUFXLEdBQUcsSUFBSUQsTUFBSixDQUFXO0FBQzNCRSxFQUFBQSxJQUFJLEVBQUU7QUFDRkEsSUFBQUEsSUFBSSxFQUFFQyxNQURKO0FBRUZDLElBQUFBLElBQUksRUFBRSxDQUFDLE9BQUQsQ0FGSjtBQUdGQyxJQUFBQSxRQUFRLEVBQUUsSUFIUjtBQUlGQyxJQUFBQSxPQUFPLEVBQUU7QUFKUCxHQURxQjtBQU8zQkMsRUFBQUEsV0FBVyxFQUFFO0FBQ1RMLElBQUFBLElBQUksRUFBRSxDQUFDTSxNQUFELENBREc7QUFFVEgsSUFBQUEsUUFBUSxFQUFFO0FBRkQ7QUFQYyxDQUFYLENBQXBCO0FBYUEsTUFBTUksV0FBVyxHQUFHLElBQUlULE1BQUosQ0FBVztBQUMzQlUsRUFBQUEsSUFBSSxFQUFFO0FBQ0ZSLElBQUFBLElBQUksRUFBRUMsTUFESjtBQUVGRSxJQUFBQSxRQUFRLEVBQUUsSUFGUjtBQUdGTSxJQUFBQSxNQUFNLEVBQUU7QUFITixHQURxQjtBQU0zQkMsRUFBQUEsV0FBVyxFQUFFO0FBQ1RWLElBQUFBLElBQUksRUFBRUMsTUFERztBQUVURSxJQUFBQSxRQUFRLEVBQUU7QUFGRCxHQU5jO0FBVTNCUSxFQUFBQSxRQUFRLEVBQUU7QUFDTlgsSUFBQUEsSUFBSSxFQUFFRCxXQURBO0FBRU5hLElBQUFBLEtBQUssRUFBRSxVQUZEO0FBR05ULElBQUFBLFFBQVEsRUFBRTtBQUhKLEdBVmlCO0FBZTNCVSxFQUFBQSxRQUFRLEVBQUU7QUFDTmIsSUFBQUEsSUFBSSxFQUFFQyxNQURBO0FBRU5FLElBQUFBLFFBQVEsRUFBRTtBQUZKLEdBZmlCO0FBbUIzQlcsRUFBQUEsV0FBVyxFQUFFO0FBQ1RkLElBQUFBLElBQUksRUFBRUMsTUFERztBQUVURSxJQUFBQSxRQUFRLEVBQUU7QUFGRCxHQW5CYztBQXVCM0JZLEVBQUFBLEtBQUssRUFDTDtBQUNJZixJQUFBQSxJQUFJLEVBQUVDO0FBRFYsR0F4QjJCO0FBMkIzQmUsRUFBQUEsaUJBQWlCLEVBQUUsQ0FDZjtBQUNJaEIsSUFBQUEsSUFBSSxFQUFFQyxNQURWO0FBRUlDLElBQUFBLElBQUksRUFBRSxDQUFDLEtBQUQsRUFBUSxLQUFSLEVBQWUsT0FBZixFQUF3QixjQUF4QixFQUF3QyxNQUF4QztBQUZWLEdBRGU7QUEzQlEsQ0FBWCxFQWlDakI7QUFDQ2UsRUFBQUEsVUFBVSxFQUFFO0FBRGIsQ0FqQ2lCLENBQXBCO0FBcUNBVixXQUFXLENBQUNLLEtBQVosQ0FBa0I7QUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJTSxNQUFNLEdBQUd0QixRQUFRLENBQUN1QixLQUFULENBQWUsT0FBZixFQUF3QlosV0FBeEIsQ0FBYjtBQUVBYSxNQUFNLENBQUNDLE9BQVAsR0FBaUJILE1BQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgbW9uZ29vc2UgPSByZXF1aXJlKCdtb25nb29zZScpO1xyXG5jb25zdCBTY2hlbWEgPSBtb25nb29zZS5TY2hlbWE7XHJcblxyXG5jb25zdCBwb2ludFNjaGVtYSA9IG5ldyBTY2hlbWEoe1xyXG4gICAgdHlwZToge1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICBlbnVtOiBbJ1BvaW50J10sXHJcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXHJcbiAgICAgICAgZGVmYXVsdDogJ1BvaW50J1xyXG4gICAgfSxcclxuICAgIGNvb3JkaW5hdGVzOiB7XHJcbiAgICAgICAgdHlwZTogW051bWJlcl0sXHJcbiAgICAgICAgcmVxdWlyZWQ6IHRydWVcclxuICAgIH1cclxufSk7XHJcblxyXG5jb25zdCBwbGFjZVNjaGVtYSA9IG5ldyBTY2hlbWEoe1xyXG4gICAgbmFtZToge1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgICB1bmlxdWU6IHRydWVcclxuICAgIH0sXHJcbiAgICBkZXNjcmlwdGlvbjoge1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICByZXF1aXJlZDogdHJ1ZVxyXG4gICAgfSxcclxuICAgIGxvY2F0aW9uOiB7XHJcbiAgICAgICAgdHlwZTogcG9pbnRTY2hlbWEsXHJcbiAgICAgICAgaW5kZXg6ICcyZHNwaGVyZScsXHJcbiAgICAgICAgcmVxdWlyZWQ6IHRydWVcclxuICAgIH0sXHJcbiAgICBkaXN0YW5jZToge1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICByZXF1aXJlZDogdHJ1ZVxyXG4gICAgfSxcclxuICAgIHRpbWVUb1JlYWNoOiB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlXHJcbiAgICB9LFxyXG4gICAgaW1hZ2U6XHJcbiAgICB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgfSxcclxuICAgIHRyYXZlbGxpbmdNZXRob2RzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXHJcbiAgICAgICAgICAgIGVudW06IFsnQnVzJywgJ0NhcicsICdUcmFpbicsICdUaHJlZXdoZWVsZXInLCAnRm9vdCddXHJcbiAgICAgICAgfVxyXG4gICAgXVxyXG59LCB7XHJcbiAgICB0aW1lc3RhbXBzOiB0cnVlXHJcbn0pO1xyXG5cclxucGxhY2VTY2hlbWEuaW5kZXgoeyAnJCoqJzogJ3RleHQnIH0pO1xyXG52YXIgUGxhY2VzID0gbW9uZ29vc2UubW9kZWwoJ1BsYWNlJywgcGxhY2VTY2hlbWEpO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBQbGFjZXM7Il19\",\"originalCode\":\"const mongoose = require('mongoose');\\r\\nconst Schema = mongoose.Schema;\\r\\n\\r\\nconst pointSchema = new Schema({\\r\\n type: {\\r\\n type: String,\\r\\n enum: ['Point'],\\r\\n required: true,\\r\\n default: 'Point'\\r\\n },\\r\\n coordinates: {\\r\\n type: [Number],\\r\\n required: true\\r\\n }\\r\\n});\\r\\n\\r\\nconst placeSchema = new Schema({\\r\\n name: {\\r\\n type: String,\\r\\n required: true,\\r\\n unique: true\\r\\n },\\r\\n description: {\\r\\n type: String,\\r\\n required: true\\r\\n },\\r\\n location: {\\r\\n type: pointSchema,\\r\\n index: '2dsphere',\\r\\n required: true\\r\\n },\\r\\n distance: {\\r\\n type: String,\\r\\n required: true\\r\\n },\\r\\n timeToReach: {\\r\\n type: String,\\r\\n required: true\\r\\n },\\r\\n image:\\r\\n {\\r\\n type: String,\\r\\n },\\r\\n travellingMethods: [\\r\\n {\\r\\n type: String,\\r\\n enum: ['Bus', 'Car', 'Train', 'Threewheeler', 'Foot']\\r\\n }\\r\\n ]\\r\\n}, {\\r\\n timestamps: true\\r\\n});\\r\\n\\r\\nplaceSchema.index({ '$**': 'text' });\\r\\nvar Places = mongoose.model('Place', placeSchema);\\r\\n\\r\\nmodule.exports = Places;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/c4/visitingPlaces_c4ccc91c117df8c4aeada72a82534688.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2459\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\models\\\\visitingPlaces.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":4920,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":4917,\"count\":1}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"var passport = require('passport');\\n\\nvar LocalStrategy = require('passport-local').Strategy;\\n\\nvar User = require('../models/users');\\n\\nvar JwtStrategy = require('passport-jwt').Strategy;\\n\\nvar ExtractJwt = require('passport-jwt').ExtractJwt;\\n\\nvar jwt = require('jsonwebtoken');\\n\\npassport.use(new LocalStrategy(User.authenticate()));\\npassport.serializeUser(User.serializeUser());\\npassport.deserializeUser(User.deserializeUser());\\n\\nexports.getToken = user => {\\n return jwt.sign(user, process.env.secretKey, {\\n expiresIn: 3600\\n });\\n};\\n\\nvar opts = {};\\nopts.jwtFromRequest = ExtractJwt.fromAuthHeaderAsBearerToken();\\nopts.secretOrKey = process.env.secretKey;\\nexports.jwtPassport = passport.use(new JwtStrategy(opts, (jwt_payload, done) => {\\n User.findOne({\\n _id: jwt_payload._id\\n }, (err, user) => {\\n if (err) {\\n return done(err, false);\\n } else if (user) {\\n return done(null, user);\\n } else {\\n return done(null, false);\\n }\\n });\\n}));\\nexports.verifyUser = passport.authenticate('jwt', {\\n session: false\\n});\\n\\nexports.verifyAdmin = (req, res, next) => {\\n if (req.user.role == 'admin') {\\n return next();\\n } else if (req.user.role != 'admin') {\\n err = new Error('You are not authorized to perform this operation!');\\n err.status = 403;\\n return next(err);\\n } else {\\n err = new Error('Admin Verification Failed!');\\n err.status = 500;\\n return next(err);\\n }\\n};\\n\\nexports.verifyModerater = (req, res, next) => {\\n if (req.user.role != 'user') {\\n return next();\\n } else if (req.user.role == 'user') {\\n err = new Error('You are not authorized to perform this operation!');\\n err.status = 403;\\n return next(err);\\n }\\n};\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF1dGhlbnRpY2F0ZS5qcyJdLCJuYW1lcyI6WyJwYXNzcG9ydCIsInJlcXVpcmUiLCJMb2NhbFN0cmF0ZWd5IiwiU3RyYXRlZ3kiLCJVc2VyIiwiSnd0U3RyYXRlZ3kiLCJFeHRyYWN0Snd0Iiwiand0IiwidXNlIiwiYXV0aGVudGljYXRlIiwic2VyaWFsaXplVXNlciIsImRlc2VyaWFsaXplVXNlciIsImV4cG9ydHMiLCJnZXRUb2tlbiIsInVzZXIiLCJzaWduIiwicHJvY2VzcyIsImVudiIsInNlY3JldEtleSIsImV4cGlyZXNJbiIsIm9wdHMiLCJqd3RGcm9tUmVxdWVzdCIsImZyb21BdXRoSGVhZGVyQXNCZWFyZXJUb2tlbiIsInNlY3JldE9yS2V5Iiwiand0UGFzc3BvcnQiLCJqd3RfcGF5bG9hZCIsImRvbmUiLCJmaW5kT25lIiwiX2lkIiwiZXJyIiwidmVyaWZ5VXNlciIsInNlc3Npb24iLCJ2ZXJpZnlBZG1pbiIsInJlcSIsInJlcyIsIm5leHQiLCJyb2xlIiwiRXJyb3IiLCJzdGF0dXMiLCJ2ZXJpZnlNb2RlcmF0ZXIiXSwibWFwcGluZ3MiOiJBQUFBLElBQUlBLFFBQVEsR0FBR0MsT0FBTyxDQUFDLFVBQUQsQ0FBdEI7O0FBQ0EsSUFBSUMsYUFBYSxHQUFHRCxPQUFPLENBQUMsZ0JBQUQsQ0FBUCxDQUEwQkUsUUFBOUM7O0FBQ0EsSUFBSUMsSUFBSSxHQUFHSCxPQUFPLENBQUMsaUJBQUQsQ0FBbEI7O0FBRUEsSUFBSUksV0FBVyxHQUFHSixPQUFPLENBQUMsY0FBRCxDQUFQLENBQXdCRSxRQUExQzs7QUFDQSxJQUFJRyxVQUFVLEdBQUdMLE9BQU8sQ0FBQyxjQUFELENBQVAsQ0FBd0JLLFVBQXpDOztBQUNBLElBQUlDLEdBQUcsR0FBR04sT0FBTyxDQUFDLGNBQUQsQ0FBakI7O0FBR0FELFFBQVEsQ0FBQ1EsR0FBVCxDQUFhLElBQUlOLGFBQUosQ0FBa0JFLElBQUksQ0FBQ0ssWUFBTCxFQUFsQixDQUFiO0FBQ0FULFFBQVEsQ0FBQ1UsYUFB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dCI6WyJ2YXIgcGFzc3BvcnQgPSByZXF1aXJlKCdwYXNzcG9ydCcpO1xyXG52YXIgTG9jYWxTdHJhdGVneSA9IHJlcXVpcmUoJ3Bhc3Nwb3J0LWxvY2FsJykuU3RyYXRlZ3k7XHJcbnZhciBVc2VyID0gcmVxdWlyZSgnLi4vbW9kZWxzL3VzZXJzJyk7XHJcblxyXG52YXIgSnd0U3RyYXRlZ3kgPSByZXF1aXJlKCdwYXNzcG9ydC1qd3QnKS5TdHJhdGVneTtcclxudmFyIEV4dHJhY3RKd3QgPSByZXF1aXJlKCdwYXNzcG9ydC1qd3QnKS5FeHRyYWN0Snd0O1xyXG52YXIgand0ID0gcmVxdWlyZSgnanNvbndlYnRva2VuJyk7XHJcblxyXG5cclxucGFzc3BvcnQudXNlKG5ldyBMb2NhbFN0cmF0ZWd5KFVzZXIuYXV0aGVudGljYXRlKCkpKTtcclxucGFzc3BvcnQuc2VyaWFsaXplVXNlcihVc2VyLnNlcmlhbGl6ZVVzZXIoKSk7XHJcbnBhc3Nwb3J0LmRlc2VyaWFsaXplVXNlcihVc2VyLmRlc2VyaWFsaXplVXNlcigpKTtcclxuXHJcbmV4cG9ydHMuZ2V0VG9rZW4gPSAodXNlcikgPT4ge1xyXG4gICAgcmV0dXJuIGp3dC5zaWduKHVzZXIsIHByb2Nlc3MuZW52LnNlY3JldEtleSxcclxuICAgICAgICB7IGV4cGlyZXNJbjogMzYwMCB9KTtcclxufTtcclxuXHJcbnZhciBvcHRzID0ge307XHJcbm9wdHMuand0RnJvbVJlcXVlc3QgPSBFeHRyYWN0Snd0LmZyb21BdXRoSGVhZGVyQXNCZWFyZXJUb2tlbigpO1xyXG5vcHRzLnNlY3JldE9yS2V5ID0gcHJvY2Vzcy5lbnYuc2VjcmV0S2V5O1xyXG5cclxuZXhwb3J0cy5qd3RQYXNzcG9ydCA9IHBhc3Nwb3J0LnVzZShuZXcgSnd0U3RyYXRlZ3kob3B0cyxcclxuICAgIChqd3RfcGF5bG9hZCwgZG9uZSkgPT4ge1xyXG4gICAgICAgIFVzZXIuZmluZE9uZSh7IF9pZDogand0X3BheWxvYWQuX2lkIH0sIChlcnIsIHVzZXIpID0+IHtcclxuICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRvbmUoZXJyLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAodXNlcikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRvbmUobnVsbCwgdXNlcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZG9uZShudWxsLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH0pKTtcclxuXHJcbmV4cG9ydHMudmVyaWZ5VXNlciA9IHBhc3Nwb3J0LmF1dGhlbnRpY2F0ZSgnand0JywgeyBzZXNzaW9uOiBmYWxzZSB9KTtcclxuXHJcbmV4cG9ydHMudmVyaWZ5QWRtaW4gPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIGlmIChyZXEudXNlci5yb2xlID09ICdhZG1pbicpIHtcclxuICAgICAgICByZXR1cm4gbmV4dCgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAocmVxLnVzZXIucm9sZSAhPSAnYWRtaW4nKSB7XHJcbiAgICAgICAgZXJyID0gbmV3IEVycm9yKCdZb3UgYXJlIG5vdCBhdXRob3JpemVkIHRvIHBlcmZvcm0gdGhpcyBvcGVyYXRpb24hJyk7XHJcbiAgICAgICAgZXJyLnN0YXR1cyA9IDQwMztcclxuICAgICAgICByZXR1cm4gbmV4dChlcnIpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgZXJyID0gbmV3IEVycm9yKCdBZG1pbiBWZXJpZmljYXRpb24gRmFpbGVkIScpO1xyXG4gICAgICAgIGVyci5zdGF0dXMgPSA1MDA7XHJcbiAgICAgICAgcmV0dXJuIG5leHQoZXJyKTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0cy52ZXJpZnlNb2RlcmF0ZXIgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIGlmIChyZXEudXNlci5yb2xlICE9ICd1c2VyJykge1xyXG4gICAgICAgIHJldHVybiBuZXh0KCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChyZXEudXNlci5yb2xlID09ICd1c2VyJykge1xyXG4gICAgICAgIGVyciA9IG5ldyBFcnJvcignWW91IGFyZSBub3QgYXV0aG9yaXplZCB0byBwZXJmb3JtIHRoaXMgb3BlcmF0aW9uIScpO1xyXG4gICAgICAgIGVyci5zdGF0dXMgPSA0MDM7XHJcbiAgICAgICAgcmV0dXJuIG5leHQoZXJyKTtcclxuICAgIH1cclxufVxyXG4iXX0=\",\"originalCode\":\"var passport = require('passport');\\r\\nvar LocalStrategy = require('passport-local').Strategy;\\r\\nvar User = require('../models/users');\\r\\n\\r\\nvar JwtStrategy = require('passport-jwt').Strategy;\\r\\nvar ExtractJwt = require('passport-jwt').ExtractJwt;\\r\\nvar jwt = require('jsonwebtoken');\\r\\n\\r\\n\\r\\npassport.use(new LocalStrategy(User.authenticate()));\\r\\npassport.serializeUser(User.serializeUser());\\r\\npassport.deserializeUser(User.deserializeUser());\\r\\n\\r\\nexports.getToken = (user) => {\\r\\n return jwt.sign(user, process.env.secretKey,\\r\\n { expiresIn: 3600 });\\r\\n};\\r\\n\\r\\nvar opts = {};\\r\\nopts.jwtFromRequest = ExtractJwt.fromAuthHeaderAsBearerToken();\\r\\nopts.secretOrKey = process.env.secretKey;\\r\\n\\r\\nexports.jwtPassport = passport.use(new JwtStrategy(opts,\\r\\n (jwt_payload, done) => {\\r\\n User.findOne({ _id: jwt_payload._id }, (err, user) => {\\r\\n if (err) {\\r\\n return done(err, false);\\r\\n }\\r\\n else if (user) {\\r\\n return done(null, user);\\r\\n }\\r\\n else {\\r\\n return done(null, false);\\r\\n }\\r\\n });\\r\\n }));\\r\\n\\r\\nexports.verifyUser = passport.authenticate('jwt', { session: false });\\r\\n\\r\\nexports.verifyAdmin = (req, res, next) => {\\r\\n if (req.user.role == 'admin') {\\r\\n return next();\\r\\n }\\r\\n else if (req.user.role != 'admin') {\\r\\n err = new Error('You are not authorized to perform this operation!');\\r\\n err.status = 403;\\r\\n return next(err);\\r\\n }\\r\\n else {\\r\\n err = new Error('Admin Verification Failed!');\\r\\n err.status = 500;\\r\\n return next(err);\\r\\n }\\r\\n}\\r\\n\\r\\nexports.verifyModerater = (req, res, next) => {\\r\\n if (req.user.role != 'user') {\\r\\n return next();\\r\\n }\\r\\n else if (req.user.role == 'user') {\\r\\n err = new Error('You are not authorized to perform this operation!');\\r\\n err.status = 403;\\r\\n return next(err);\\r\\n }\\r\\n}\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/17/authenticate_1749ed24acd3b9174e3e8d9c003de68d.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2460\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\middleware\\\\authenticate.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":8164,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":8161,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
.exports.getToken\",\"ranges\":[{\"startOffset\":536,\"endOffset\":622,\"count\":2}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":803,\"endOffset\":1050,\"count\":11}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":875,\"endOffset\":1046,\"count\":11}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
.exports.verifyAdmin\",\"ranges\":[{\"startOffset\":1150,\"endOffset\":1495,\"count\":6}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
.exports.verifyModerater\",\"ranges\":[{\"startOffset\":1524,\"endOffset\":1761,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"var validationRules = {\\n id: {\\n in: ['params', 'query'],\\n errorMessage: 'ID is wrong',\\n isInt: true,\\n toInt: true\\n },\\n name: {\\n errorMessage: 'Name should be at least 2 chars long and maximum of 50 chars',\\n isLength: {\\n options: {\\n min: 2,\\n max: 50\\n }\\n },\\n trim: true\\n },\\n description: {\\n errorMessage: 'Description should be at least 2 chars long and maximum of 200 chars',\\n isLength: {\\n options: {\\n min: 2,\\n max: 200\\n }\\n },\\n trim: true\\n },\\n distance: {\\n errorMessage: 'Distance should be at least 1 chars long and maximum of 200 chars',\\n isLength: {\\n options: {\\n min: 1,\\n max: 200\\n }\\n },\\n trim: true\\n },\\n timeToReach: {\\n errorMessage: 'Time To Reach should be at least 2 chars long and maximum of 200 chars',\\n isLength: {\\n options: {\\n min: 2,\\n max: 200\\n }\\n },\\n trim: true\\n },\\n firstname: {\\n errorMessage: 'First Name should be at least 3 chars long and maximum of 50 chars',\\n isLength: {\\n options: {\\n min: 3,\\n max: 50\\n }\\n },\\n trim: true\\n },\\n lastname: {\\n errorMessage: 'Last Name should be at least 3 chars long and maximum of 50 chars',\\n isLength: {\\n options: {\\n min: 3,\\n max: 50\\n }\\n },\\n trim: true\\n },\\n email: {\\n errorMessage: 'Please enter a valid email address',\\n isEmail: true,\\n trim: true\\n },\\n mobile: {\\n errorMessage: 'Please enter Phone Number in 10 digits',\\n isLength: {\\n options: {\\n min: 10,\\n max: 10\\n }\\n },\\n matches: {\\n options: [/^\\\\d{10}$/],\\n errorMessage: \\\"Please enter digits\\\"\\n },\\n trim: true\\n },\\n password: {\\n isLength: {\\n errorMessage: 'Password should be at least 6 chars long',\\n options: {\\n min: 6\\n }\\n }\\n },\\n confirm_password: {\\n errorMessage: 'Must have the same value as the password field',\\n custom: {\\n options: (value, {\\n req\\n }) => value === req.body.password\\n }\\n },\\n suite: {\\n errorMessage: 'Please select suite type',\\n isIn: {\\n options: [['gold', 'luxury', 'platinum']]\\n }\\n },\\n roomnumber: {\\n errorMessage: 'Room Number should be at least 3 chars long and maximum of 50 chars',\\n isLength: {\\n options: {\\n min: 3,\\n max: 50\\n }\\n },\\n trim: true\\n },\\n state: {\\n errorMessage: 'Please select correct state',\\n isIn: {\\n options: [[\\\"new\\\", \\\"not-completed\\\", \\\"canceled\\\", \\\"completed\\\"]]\\n }\\n },\\n method: {\\n errorMessage: 'Please select correct travelling method',\\n isIn: {\\n options: [['Bus', 'Car', 'Train', 'Threewheeler', 'Foot']]\\n }\\n }\\n};\\nexports.validationRules = validationRules;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInZhbGlkYXRpb24uanMiXSwibmFtZXMiOlsidmFsaWRhdGlvblJ1bGVzIiwiaWQiLCJpbiIsImVycm9yTWVzc2FnZSIsImlzSW50IiwidG9JbnQiLCJuYW1lIiwiaXNMZW5ndGgiLCJvcHRpb25zIiwibWluIiwibWF4IiwidHJpbSIsImRlc2NyaXB0aW9uIiwiZGlzdGFuY2UiLCJ0aW1lVG9SZWFjaCIsImZpcnN0bmFtZSIsImxhc3RuYW1lIiwiZW1haWwiLCJpc0VtYWlsIiwibW9iaWxlIiwibWF0Y2hlcyIsInBhc3N3b3JkIiwiY29uZmlybV9wYXNzd29yZCIsImN1c3RvbSIsInZhbHVlIiwicmVxIiwiYm9keSIsInN1aXRlIiwiaXNJbiIsInJvb21udW1iZXIiLCJzdGF0ZSIsIm1ldGhvZCIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLElBQUlBLGVBQWUsR0FBRztBQUNsQkMsRUFBQUEsRUFBRSxFQUFFO0FBQ0FDLElBQUFBLEVBQUUsRUFBRSxDQUFDLFFBQUQsRUFBVyxPQUFYLENBREo7QUFFQUMsSUFBQUEsWUFBWSxFQUFFLGFBRmQ7QUFHQUMsSUFBQUEsS0FBSyxFQUFFLElBSFA7QUFJQUMsSUFBQUEsS0FBSyxFQUFFO0FBSlAsR0FEYztBQU9sQkMsRUFBQUEsSUFBSSxFQUFFO0FBQ0ZILElBQUFBLFlBQVksRUFBRSw4REFEWjtBQUVGSSxJQUFBQSxRQUFRLEVBQUU7QUFDTkMsTUFBQUEsT0FBTyxFQUFFO0FBQUVDLFFBQUFBLEdBQUcsRUFBRSxDQUFQO0FBQVVDLFFBQUFBLEdBQUcsRUFBRTtBQUFmO0FBREgsS0FGUjtBQUtGQyxJQUFBQSxJQUFJLEVBQUU7QUFMSixHQVBZO0FBY2xCQyxFQUFBQSxXQUFXLEVBQUU7QUFDVFQsSUFBQUEsWUFBWSxFQUFFLHNFQURMO0FBRVRJLElBQUFBLFFBQVEsRUFBRTtBQUNOQyxNQUFBQSxPQUFPLEVBQUU7QUFBRUMsUUFBQUEsR0FBRyxFQUFFLENBQVA7QUFBVUMsUUFBQUEsR0FBRyxFQUFFO0FBQWY7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RTtBQUFFQyxRQUFBQSxHQUFHLEVBQUUsQ0FBUDtBQUFVQyxRQUFBQSxHQUFHLEVBQUU7QUFBZjtBQURILEtBRkY7QUFLUkMsSUFBQUEsSUFBSSxFQUFFO0FBTEUsR0FuRk07QUEwRmxCbUIsRUFBQUEsS0FBSyxFQUFFO0FBQ0gzQixJQUFBQSxZQUFZLEVBQUUsNkJBRFg7QUFFSHlCLElBQUFBLElBQUksRUFBRTtBQUNGcEIsTUFBQUEsT0FBTyxFQUFFLENBQUMsQ0FBQyxLQUFELEVBQVEsZUFBUixFQUF5QixVQUF6QixFQUFxQyxXQUFyQyxDQUFEO0FBRFA7QUFGSCxHQTFGVztBQWdHbEJ1QixFQUFBQSxNQUFNLEVBQUU7QUFDSjVCLElBQUFBLFlBQVksRUFBRSx5Q0FEVjtBQUVKeUIsSUFBQUEsSUFBSSxFQUFFO0FBQ0ZwQixNQUFBQSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEtBQUQsRUFBUSxLQUFSLEVBQWUsT0FBZixFQUF3QixjQUF4QixFQUF3QyxNQUF4QyxDQUFEO0FBRFA7QUFGRjtBQWhHVSxDQUF0QjtBQXdHQXdCLE9BQU8sQ0FBQ2hDLGVBQVIsR0FBMEJBLGVBQTFCIiwic291cmNlc0NvbnRlbnQiOlsidmFyIHZhbGlkYXRpb25SdWxlcyA9IHtcclxuICAgIGlkOiB7XHJcbiAgICAgICAgaW46IFsncGFyYW1zJywgJ3F1ZXJ5J10sXHJcbiAgICAgICAgZXJyb3JNZXNzYWdlOiAnSUQgaXMgd3JvbmcnLFxyXG4gICAgICAgIGlzSW50OiB0cnVlLFxyXG4gICAgICAgIHRvSW50OiB0cnVlLFxyXG4gICAgfSxcclxuICAgIG5hbWU6IHtcclxuICAgICAgICBlcnJvck1lc3NhZ2U6ICdOYW1lIHNob3VsZCBiZSBhdCBsZWFzdCAyIGNoYXJzIGxvbmcgYW5kIG1heGltdW0gb2YgNTAgY2hhcnMnLFxyXG4gICAgICAgIGlzTGVuZ3RoOiB7XHJcbiAgICAgICAgICAgIG9wdGlvbnM6IHsgbWluOiAyLCBtYXg6IDUwIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHRyaW06IHRydWVcclxuICAgIH0sXHJcbiAgICBkZXNjcmlwdGlvbjoge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ0Rlc2NyaXB0aW9uIHNob3VsZCBiZSBhdCBsZWFzdCAyIGNoYXJzIGxvbmcgYW5kIG1heGltdW0gb2YgMjAwIGNoYXJzJyxcclxuICAgICAgICBpc0xlbmd0aDoge1xyXG4gICAgICAgICAgICBvcHRpb25zOiB7IG1pbjogMiwgbWF4OiAyMDAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHJpbTogdHJ1ZVxyXG4gICAgfSxcclxuICAgIGRpc3RhbmNlOiB7XHJcbiAgICAgICAgZXJyb3JNZXNzYWdlOiAnRGlzdGFuY2Ugc2hvdWxkIGJlIGF0IGxlYXN0IDEgY2hhcnMgbG9uZyBhbmQgbWF4aW11bSBvZiAyMDAgY2hhcnMnLFxyXG4gICAgICAgIGlzTGVuZ3RoOiB7XHJcbiAgICAgICAgICAgIG9wdGlvbnM6IHsgbWluOiAxLCBtYXg6IDIwMCB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICB0cmltOiB0cnVlXHJcbiAgICB9LFxyXG4gICAgdGltZVRvUmVhY2g6IHtcclxuICAgICAgICBlcnJvck1lc3NhZ2U6ICdUaW1lIFRvIFJlYWNoIHNob3VsZCBiZSBhdCBsZWFzdCAyIGNoYXJzIGxvbmcgYW5kIG1heGltdW0gb2YgMjAwIGNoYXJzJyxcclxuICAgICAgICBpc0xlbmd0aDoge1xyXG4gICAgICAgICAgICBvcHRpb25zOiB7IG1pbjogMiwgbWF4OiAyMDAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHJpbTogdHJ1ZVxyXG4gICAgfSxcclxuICAgIGZpcnN0bmFtZToge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ0ZpcnN0IE5hbWUgc2hvdWxkIGJlIGF0IGxlYXN0IDMgY2hhcnMgbG9uZyBhbmQgbWF4aW11bSBvZiA1MCBjaGFycycsXHJcbiAgICAgICAgaXNMZW5ndGg6IHtcclxuICAgICAgICAgICAgb3B0aW9uczogeyBtaW46IDMsIG1heDogNTAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHJpbTogdHJ1ZVxyXG4gICAgfSxcclxuICAgIGxhc3RuYW1lOiB7XHJcbiAgICAgICAgZXJyb3JNZXNzYWdlOiAnTGFzdCBOYW1lIHNob3VsZCBiZSBhdCBsZWFzdCAzIGNoYXJzIGxvbmcgYW5kIG1heGltdW0gb2YgNTAgY2hhcnMnLFxyXG4gICAgICAgIGlzTGVuZ3RoOiB7XHJcbiAgICAgICAgICAgIG9wdGlvbnM6IHsgbWluOiAzLCBtYXg6IDUwIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHRyaW06IHRydWVcclxuICAgIH0sXHJcbiAgICBlbWFpbDoge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ1BsZWFzZSBlbnRlciBhIHZhbGlkIGVtYWlsIGFkZHJlc3MnLFxyXG4gICAgICAgIGlzRW1haWw6IHRydWUsXHJcbiAgICAgICAgdHJpbTogdHJ1ZSxcclxuICAgIH0sXHJcbiAgICBtb2JpbGU6IHtcclxuICAgICAgICBlcnJvck1lc3NhZ2U6ICdQbGVhc2UgZW50ZXIgUGhvbmUgTnVtYmVyIGluIDEwIGRpZ2l0cycsXHJcbiAgICAgICAgaXNMZW5ndGg6IHtcclxuICAgICAgICAgICAgb3B0aW9uczogeyBtaW46IDEwLCBtYXg6IDEwIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIG1hdGNoZXM6IHtcclxuICAgICAgICAgICAgb3B0aW9uczogWy9eXFxkezEwfSQvXSxcclxuICAgICAgICAgICAgZXJyb3JNZXNzYWdlOiBcIlBsZWFzZSBlbnRlciBkaWdpdHNcIlxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHJpbTogdHJ1ZVxyXG4gICAgfSxcclxuICAgIHBhc3N3b3JkOiB7XHJcbiAgICAgICAgaXNMZW5ndGg6IHtcclxuICAgICAgICAgICAgZXJyb3JNZXNzYWdlOiAnUGFzc3dvcmQgc2hvdWxkIGJlIGF0IGxlYXN0IDYgY2hhcnMgbG9uZycsXHJcbiAgICAgICAgICAgIG9wdGlvbnM6IHsgbWluOiA2IH1cclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgY29uZmlybV9wYXNzd29yZDoge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ011c3QgaGF2ZSB0aGUgc2FtZSB2YWx1ZSBhcyB0aGUgcGFzc3dvcmQgZmllbGQnLFxyXG4gICAgICAgIGN1c3RvbToge1xyXG4gICAgICAgICAgICBvcHRpb25zOiAodmFsdWUsIHsgcmVxIH0pID0+IHZhbHVlID09PSByZXEuYm9keS5wYXNzd29yZFxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICBzdWl0ZToge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ1BsZWFzZSBzZWxlY3Qgc3VpdGUgdHlwZScsXHJcbiAgICAgICAgaXNJbjoge1xyXG4gICAgICAgICAgICBvcHRpb25zOiBbWydnb2xkJywgJ2x1eHVyeScsICdwbGF0aW51bSddXSxcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgcm9vbW51bWJlcjoge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ1Jvb20gTnVtYmVyIHNob3VsZCBiZSBhdCBsZWFzdCAzIGNoYXJzIGxvbmcgYW5kIG1heGltdW0gb2YgNTAgY2hhcnMnLFxyXG4gICAgICAgIGlzTGVuZ3RoOiB7XHJcbiAgICAgICAgICAgIG9wdGlvbnM6IHsgbWluOiAzLCBtYXg6IDUwIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHRyaW06IHRydWVcclxuICAgIH0sXHJcbiAgICBzdGF0ZToge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ1BsZWFzZSBzZWxlY3QgY29ycmVjdCBzdGF0ZScsXHJcbiAgICAgICAgaXNJbjoge1xyXG4gICAgICAgICAgICBvcHRpb25zOiBbW1wibmV3XCIsIFwibm90LWNvbXBsZXRlZFwiLCBcImNhbmNlbGVkXCIsIFwiY29tcGxldGVkXCJdXSxcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgbWV0aG9kOiB7XHJcbiAgICAgICAgZXJyb3JNZXNzYWdlOiAnUGxlYXNlIHNlbGVjdCBjb3JyZWN0IHRyYXZlbGxpbmcgbWV0aG9kJyxcclxuICAgICAgICBpc0luOiB7XHJcbiAgICAgICAgICAgIG9wdGlvbnM6IFtbJ0J1cycsICdDYXInLCAnVHJhaW4nLCAnVGhyZWV3aGVlbGVyJywgJ0Zvb3QnXV0sXHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxufVxyXG5cclxuZXhwb3J0cy52YWxpZGF0aW9uUnVsZXMgPSB2YWxpZGF0aW9uUnVsZXM7Il19\",\"originalCode\":\"var validationRules = {\\r\\n id: {\\r\\n in: ['params', 'query'],\\r\\n errorMessage: 'ID is wrong',\\r\\n isInt: true,\\r\\n toInt: true,\\r\\n },\\r\\n name: {\\r\\n errorMessage: 'Name should be at least 2 chars long and maximum of 50 chars',\\r\\n isLength: {\\r\\n options: { min: 2, max: 50 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n description: {\\r\\n errorMessage: 'Description should be at least 2 chars long and maximum of 200 chars',\\r\\n isLength: {\\r\\n options: { min: 2, max: 200 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n distance: {\\r\\n errorMessage: 'Distance should be at least 1 chars long and maximum of 200 chars',\\r\\n isLength: {\\r\\n options: { min: 1, max: 200 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n timeToReach: {\\r\\n errorMessage: 'Time To Reach should be at least 2 chars long and maximum of 200 chars',\\r\\n isLength: {\\r\\n options: { min: 2, max: 200 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n firstname: {\\r\\n errorMessage: 'First Name should be at least 3 chars long and maximum of 50 chars',\\r\\n isLength: {\\r\\n options: { min: 3, max: 50 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n lastname: {\\r\\n errorMessage: 'Last Name should be at least 3 chars long and maximum of 50 chars',\\r\\n isLength: {\\r\\n options: { min: 3, max: 50 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n email: {\\r\\n errorMessage: 'Please enter a valid email address',\\r\\n isEmail: true,\\r\\n trim: true,\\r\\n },\\r\\n mobile: {\\r\\n errorMessage: 'Please enter Phone Number in 10 digits',\\r\\n isLength: {\\r\\n options: { min: 10, max: 10 }\\r\\n },\\r\\n matches: {\\r\\n options: [/^\\\\d{10}$/],\\r\\n errorMessage: \\\"Please enter digits\\\"\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n password: {\\r\\n isLength: {\\r\\n errorMessage: 'Password should be at least 6 chars long',\\r\\n options: { min: 6 }\\r\\n }\\r\\n },\\r\\n confirm_password: {\\r\\n errorMessage: 'Must have the same value as the password field',\\r\\n custom: {\\r\\n options: (value, { req }) => value === req.body.password\\r\\n }\\r\\n },\\r\\n suite: {\\r\\n errorMessage: 'Please select suite type',\\r\\n isIn: {\\r\\n options: [['gold', 'luxury', 'platinum']],\\r\\n }\\r\\n },\\r\\n roomnumber: {\\r\\n errorMessage: 'Room Number should be at least 3 chars long and maximum of 50 chars',\\r\\n isLength: {\\r\\n options: { min: 3, max: 50 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n state: {\\r\\n errorMessage: 'Please select correct state',\\r\\n isIn: {\\r\\n options: [[\\\"new\\\", \\\"not-completed\\\", \\\"canceled\\\", \\\"completed\\\"]],\\r\\n }\\r\\n },\\r\\n method: {\\r\\n errorMessage: 'Please select correct travelling method',\\r\\n isIn: {\\r\\n options: [['Bus', 'Car', 'Train', 'Threewheeler', 'Foot']],\\r\\n }\\r\\n },\\r\\n}\\r\\n\\r\\nexports.validationRules = validationRules;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/4b/validation_4b7a8ff68e044daa8c6daa8312a761dc.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2493\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\middleware\\\\validation.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":11520,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":11517,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"options\",\"ranges\":[{\"startOffset\":2073,\"endOffset\":2134,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"var express = require('express');\\n\\nvar router = express.Router();\\n\\nvar Users = require('../models/users');\\n\\nvar passport = require('passport');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nconst signupAdmin = (req, res, next) => {\\n var admin = {\\n username: req.body.email,\\n firstname: req.body.firstname,\\n lastname: req.body.lastname,\\n email: req.body.email,\\n role: 'admin'\\n };\\n Users.register(new Users(admin), req.body.password, (err, user) => {\\n if (err) {\\n res.statusCode = 403;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n status: 'Registration Unsuccessful!'\\n });\\n } else {\\n if (req.body.firstname) user.firstname = req.body.firstname;\\n if (req.body.lastname) user.lastname = req.body.lastname;\\n user.save((err, user) => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n status: 'Registration Successful!'\\n });\\n });\\n }\\n });\\n};\\n\\nconst login = (req, res, next) => {\\n passport.authenticate('local', (err, user, info) => {\\n if (!user) {\\n res.statusCode = 401;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n status: 'Login Unsuccessful!',\\n err: info\\n });\\n return next(err);\\n }\\n\\n req.logIn(user, err => {\\n var token = authenticate.getToken({\\n _id: req.user._id,\\n role: user.role\\n });\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n status: 'Login Successful!',\\n token: token\\n });\\n });\\n })(req, res, next);\\n};\\n\\nconst changePassoword = (req, res, next) => {\\n var userId = req.params.id;\\n var newPasswordString = req.body.password;\\n Users.findById(userId).then(function (sanitizedUser) {\\n if (sanitizedUser) {\\n sanitizedUser.setPassword(newPasswordString, function () {\\n sanitizedUser.save();\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n message: 'password reset successful'\\n });\\n });\\n } else {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'This user does not exist'\\n });\\n }\\n }, function (err) {\\n next(err);\\n });\\n};\\n\\nconst logout = (req, res) => {\\n if (req.session) {\\n req.session.destroy();\\n res.clearCookie('session-id');\\n } else {\\n var err = new Error('You are not logged in!');\\n err.status = 403;\\n }\\n};\\n\\nexports.signupAdmin = signupAdmin;\\nexports.login = login;\\nexports.logout = logout;\\nexports.changePassoword = changePassoword;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVzZXJDb250cm9sbGVyLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwicm91dGVyIiwiUm91dGVyIiwiVXNlcnMiLCJwYXNzcG9ydCIsImF1dGhlbnRpY2F0ZSIsInNpZ251cEFkbWluIiwicmVxIiwicmVzIiwibmV4dCIsImFkbWluIiwidXNlcm5hbWUiLCJib2R5IiwiZW1haWwiLCJmaXJzdG5hbWUiLCJsYXN0bmFtZSIsInJvbGUiLCJyZWdpc3RlciIsInBhc3N3b3JkIiwiZXJyIiwidXNlciIsInN0YXR1c0NvZGUiLCJzZXRIZWFkZXIiLCJqc29uIiwic3VjY2VzcyIsInN0YXR1cyIsInNhdmUiLCJsb2dpbiIsImluZm8iLCJsb2dJbiIsInRva2VuIiwiZ2V0VG9rZW4iLCJfaWQiLCJjaGFuZ2VQYXNzb3dvcmQiLCJ1c2VySWQiLCJwYXJhbXMiLCJpZCIsIm5ld1Bhc3N3b3JkU3RyaW5nIiwiZmluZEJ5SWQiLCJ0aGVuIiwic2FuaXRpemVkVXNlciIsInNldFBhc3N3b3JkIiwibWVzc2FnZSIsImxvZ291dCIsInNlc3Npb24iLCJkZXN0cm95IiwiY2xlYXJDb29raWUiLCJFcnJvciIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLElBQUlBLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBckI7O0FBQ0EsSUFBSUMsTUFBTSxHQUFHRixPQUFPLENBQUNHLE1BQVIsRUFBYjs7QUFFQSxJQUFJQyxLQUFLLEdBQUdILE9BQU8sQ0FBQyxpQkFBRCxDQUFuQjs7QUFDQSxJQUFJSSxRQUFRLEdBQUdKLE9BQU8sQ0FBQyxVQUFELENBQXRCOztBQUNBLElBQUlLLFlBQVksR0FBR0wsT0FBTyxDQUFDLDRCQUFELENBQTFCOztBQUdBLE1BQU1NLFdBQVcsR0FBRyxDQUFDQyxHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUNwQyxNQUFJQyxLQUFLLEdBQUc7QUFDUkMsSUFBQUEsUUFBUSxFQUFFSixHQUFHLENBQUNLLElBQUos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YkQsRUFhRyxVQUFVdkIsR0FBVixFQUFlO0FBQ2RWLElBQUFBLElBQUksQ0FBQ1UsR0FBRCxDQUFKO0FBQ0gsR0FmRDtBQWdCSCxDQW5CRDs7QUFxQkEsTUFBTXdCLE1BQU0sR0FBRyxDQUFDcEMsR0FBRCxFQUFNQyxHQUFOLEtBQWM7QUFDekIsTUFBSUQsR0FBRyxDQUFDcUMsT0FBUixFQUFpQjtBQUNickMsSUFBQUEsR0FBRyxDQUFDcUMsT0FBSixDQUFZQyxPQUFaO0FBQ0FyQyxJQUFBQSxHQUFHLENBQUNzQyxXQUFKLENBQWdCLFlBQWhCO0FBQ0gsR0FIRCxNQUlLO0FBQ0QsUUFBSTNCLEdBQUcsR0FBRyxJQUFJNEIsS0FBSixDQUFVLHdCQUFWLENBQVY7QUFDQTVCLElBQUFBLEdBQUcsQ0FBQ00sTUFBSixHQUFhLEdBQWI7QUFDSDtBQUNKLENBVEQ7O0FBV0F1QixPQUFPLENBQUMxQyxXQUFSLEdBQXNCQSxXQUF0QjtBQUNBMEMsT0FBTyxDQUFDckIsS0FBUixHQUFnQkEsS0FBaEI7QUFDQXFCLE9BQU8sQ0FBQ0wsTUFBUixHQUFpQkEsTUFBakI7QUFDQUssT0FBTyxDQUFDZixlQUFSLEdBQTBCQSxlQUExQiIsInNvdXJjZXNDb250ZW50IjpbInZhciBleHByZXNzID0gcmVxdWlyZSgnZXhwcmVzcycpO1xyXG52YXIgcm91dGVyID0gZXhwcmVzcy5Sb3V0ZXIoKTtcclxuXHJcbnZhciBVc2VycyA9IHJlcXVpcmUoJy4uL21vZGVscy91c2VycycpO1xyXG52YXIgcGFzc3BvcnQgPSByZXF1aXJlKCdwYXNzcG9ydCcpO1xyXG52YXIgYXV0aGVudGljYXRlID0gcmVxdWlyZSgnLi4vbWlkZGxld2FyZS9hdXRoZW50aWNhdGUnKTtcclxuXHJcblxyXG5jb25zdCBzaWdudXBBZG1pbiA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgdmFyIGFkbWluID0ge1xyXG4gICAgICAgIHVzZXJuYW1lOiByZXEuYm9keS5lbWFpbCxcclxuICAgICAgICBmaXJzdG5hbWU6IHJlcS5ib2R5LmZpcnN0bmFtZSxcclxuICAgICAgICBsYXN0bmFtZTogcmVxLmJvZHkubGFzdG5hbWUsXHJcbiAgICAgICAgZW1haWw6IHJlcS5ib2R5LmVtYWlsLFxyXG4gICAgICAgIHJvbGU6ICdhZG1pbidcclxuICAgIH1cclxuICAgIFVzZXJzLnJlZ2lzdGVyKG5ldyBVc2VycyhhZG1pbiksXHJcbiAgICAgICAgcmVxLmJvZHkucGFzc3dvcmQsIChlcnIsIHVzZXIpID0+IHtcclxuICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgc3RhdHVzOiAnUmVnaXN0cmF0aW9uIFVuc3VjY2Vzc2Z1bCEnIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlcS5ib2R5LmZpcnN0bmFtZSlcclxuICAgICAgICAgICAgICAgICAgICB1c2VyLmZpcnN0bmFtZSA9IHJlcS5ib2R5LmZpcnN0bmFtZTtcclxuICAgICAgICAgICAgICAgIGlmIChyZXEuYm9keS5sYXN0bmFtZSlcclxuICAgICAgICAgICAgICAgICAgICB1c2VyLmxhc3RuYW1lID0gcmVxLmJvZHkubGFzdG5hbWU7XHJcbiAgICAgICAgICAgICAgICB1c2VyLnNhdmUoKGVyciwgdXNlcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCBzdGF0dXM6ICdSZWdpc3RyYXRpb24gU3VjY2Vzc2Z1bCEnIH0pO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxufVxyXG5cclxuY29uc3QgbG9naW4gPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHBhc3Nwb3J0LmF1dGhlbnRpY2F0ZSgnbG9jYWwnLCAoZXJyLCB1c2VyLCBpbmZvKSA9PiB7XHJcblxyXG4gICAgICAgIGlmICghdXNlcikge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwMTtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgc3RhdHVzOiAnTG9naW4gVW5zdWNjZXNzZnVsIScsIGVycjogaW5mbyB9KTtcclxuICAgICAgICAgICAgcmV0dXJuIG5leHQoZXJyKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmVxLmxvZ0luKHVzZXIsIChlcnIpID0+IHtcclxuICAgICAgICAgICAgdmFyIHRva2VuID0gYXV0aGVudGljYXRlLmdldFRva2VuKHsgX2lkOiByZXEudXNlci5faWQsIHJvbGU6IHVzZXIucm9sZSB9KTtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgc3RhdHVzOiAnTG9naW4gU3VjY2Vzc2Z1bCEnLCB0b2tlbjogdG9rZW4sIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSkocmVxLCByZXMsIG5leHQpO1xyXG59XHJcblxyXG5jb25zdCBjaGFuZ2VQYXNzb3dvcmQgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHZhciB1c2VySWQgPSByZXEucGFyYW1zLmlkO1xyXG4gICAgdmFyIG5ld1Bhc3N3b3JkU3RyaW5nID0gcmVxLmJvZHkucGFzc3dvcmQ7XHJcbiAgICBVc2Vycy5maW5kQnlJZCh1c2VySWQpLnRoZW4oZnVuY3Rpb24gKHNhbml0aXplZFVzZXIpIHtcclxuICAgICAgICBpZiAoc2FuaXRpemVkVXNlcikge1xyXG4gICAgICAgICAgICBzYW5pdGl6ZWRVc2VyLnNldFBhc3N3b3JkKG5ld1Bhc3N3b3JkU3RyaW5nLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICBzYW5pdGl6ZWRVc2VyLnNhdmUoKTtcclxuICAgICAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgbWVzc2FnZTogJ3Bhc3N3b3JkIHJlc2V0IHN1Y2Nlc3NmdWwnIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwNDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogJ1RoaXMgdXNlciBkb2VzIG5vdCBleGlzdCcgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSwgZnVuY3Rpb24gKGVycikge1xyXG4gICAgICAgIG5leHQoZXJyKTtcclxuICAgIH0pO1xyXG59XHJcblxyXG5jb25zdCBsb2dvdXQgPSAocmVxLCByZXMpID0+IHtcclxuICAgIGlmIChyZXEuc2Vzc2lvbikge1xyXG4gICAgICAgIHJlcS5zZXNzaW9uLmRlc3Ryb3koKTtcclxuICAgICAgICByZXMuY2xlYXJDb29raWUoJ3Nlc3Npb24taWQnKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoJ1lvdSBhcmUgbm90IGxvZ2dlZCBpbiEnKTtcclxuICAgICAgICBlcnIuc3RhdHVzID0gNDAzO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnRzLnNpZ251cEFkbWluID0gc2lnbnVwQWRtaW47XHJcbmV4cG9ydHMubG9naW4gPSBsb2dpbjtcclxuZXhwb3J0cy5sb2dvdXQgPSBsb2dvdXQ7XHJcbmV4cG9ydHMuY2hhbmdlUGFzc293b3JkID0gY2hhbmdlUGFzc293b3JkOyJdfQ==\",\"originalCode\":\"var express = require('express');\\r\\nvar router = express.Router();\\r\\n\\r\\nvar Users = require('../models/users');\\r\\nvar passport = require('passport');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\n\\r\\n\\r\\nconst signupAdmin = (req, res, next) => {\\r\\n var admin = {\\r\\n username: req.body.email,\\r\\n firstname: req.body.firstname,\\r\\n lastname: req.body.lastname,\\r\\n email: req.body.email,\\r\\n role: 'admin'\\r\\n }\\r\\n Users.register(new Users(admin),\\r\\n req.body.password, (err, user) => {\\r\\n if (err) {\\r\\n res.statusCode = 403;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, status: 'Registration Unsuccessful!' });\\r\\n }\\r\\n else {\\r\\n if (req.body.firstname)\\r\\n user.firstname = req.body.firstname;\\r\\n if (req.body.lastname)\\r\\n user.lastname = req.body.lastname;\\r\\n user.save((err, user) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, status: 'Registration Successful!' });\\r\\n });\\r\\n }\\r\\n });\\r\\n}\\r\\n\\r\\nconst login = (req, res, next) => {\\r\\n passport.authenticate('local', (err, user, info) => {\\r\\n\\r\\n if (!user) {\\r\\n res.statusCode = 401;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, status: 'Login Unsuccessful!', err: info });\\r\\n return next(err);\\r\\n }\\r\\n req.logIn(user, (err) => {\\r\\n var token = authenticate.getToken({ _id: req.user._id, role: user.role });\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, status: 'Login Successful!', token: token, });\\r\\n });\\r\\n })(req, res, next);\\r\\n}\\r\\n\\r\\nconst changePassoword = (req, res, next) => {\\r\\n var userId = req.params.id;\\r\\n var newPasswordString = req.body.password;\\r\\n Users.findById(userId).then(function (sanitizedUser) {\\r\\n if (sanitizedUser) {\\r\\n sanitizedUser.setPassword(newPasswordString, function () {\\r\\n sanitizedUser.save();\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, message: 'password reset successful' });\\r\\n });\\r\\n } else {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'This user does not exist' });\\r\\n }\\r\\n }, function (err) {\\r\\n next(err);\\r\\n });\\r\\n}\\r\\n\\r\\nconst logout = (req, res) => {\\r\\n if (req.session) {\\r\\n req.session.destroy();\\r\\n res.clearCookie('session-id');\\r\\n }\\r\\n else {\\r\\n var err = new Error('You are not logged in!');\\r\\n err.status = 403;\\r\\n }\\r\\n}\\r\\n\\r\\nexports.signupAdmin = signupAdmin;\\r\\nexports.login = login;\\r\\nexports.logout = logout;\\r\\nexports.changePassoword = changePassoword;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/df/userController_dfcc3c245d97ff3aba4c4e3eb1674b0e.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2494\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\userController.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":12954,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":12951,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"signupAdmin\",\"ranges\":[{\"startOffset\":313,\"endOffset\":1156,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":553,\"endOffset\":1152,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":926,\"endOffset\":1140,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"login\",\"ranges\":[{\"startOffset\":1173,\"endOffset\":1848,\"count\":2}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1228,\"endOffset\":1828,\"count\":2}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1512,\"endOffset\":1822,\"count\":2}],\"isBlockCoverage\":false},{\"functionName\":\"changePassoword\",\"ranges\":[{\"startOffset\":1875,\"endOffset\":2594,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"logout\",\"ranges\":[{\"startOffset\":2612,\"endOffset\":2800,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const express = require('express');\\n\\nconst cors = require('cors');\\n\\nconst app = express();\\n\\nconst util = require('util');\\n\\nconst whitelist = ['http://localhost:3000', 'http://localhost:3001', 'https://localhost:5000'];\\n\\nvar corsOptionsDelegate = (req, callback) => {\\n var corsOptions;\\n\\n if (whitelist.indexOf(req.header('Origin')) !== -1) {\\n corsOptions = {\\n origin: true\\n };\\n } else {\\n corsOptions = {\\n origin: false\\n };\\n }\\n\\n callback(null, corsOptions);\\n}; // if we want to allow all origins\\n\\n\\nexports.cors = cors(); // if we want to allow only the whitelisted origins\\n\\nexports.corsWithOptions = cors(corsOptionsDelegate);\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvcnMuanMiXSwibmFtZXMiOlsiZXhwcmVzcyIsInJlcXVpcmUiLCJjb3JzIiwiYXBwIiwidXRpbCIsIndoaXRlbGlzdCIsImNvcnNPcHRpb25zRGVsZWdhdGUiLCJyZXEiLCJjYWxsYmFjayIsImNvcnNPcHRpb25zIiwiaW5kZXhPZiIsImhlYWRlciIsIm9yaWdpbiIsImV4cG9ydHMiLCJjb3JzV2l0aE9wdGlvbnMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBdkI7O0FBQ0EsTUFBTUMsSUFBSSxHQUFHRCxPQUFPLENBQUMsTUFBRCxDQUFwQjs7QUFDQSxNQUFNRSxHQUFHLEdBQUdILE9BQU8sRUFBbkI7O0FBQ0EsTUFBTUksSUFBSSxHQUFHSCxPQUFPLENBQUMsTUFBRCxDQUFwQjs7QUFFQSxNQUFNSSxTQUFTLEdBQUcsQ0FBQyx1QkFBRCxFQUEwQix1QkFBMUIsRUFBbUQsd0JBQW5ELENBQWxCOztBQUNBLElBQUlDLG1CQUFtQixHQUFHLENBQUNDLEdBQUQsRUFBTUMsUUFBTixLQUFtQjtBQUN6QyxNQUFJQyxXQUFKOztBQUNBLE1BQUdKLFNBQVMsQ0FBQ0ssT0FBVixDQUFrQkgsR0FBRyxDQUFDSSxNQUFKLENBQVcsUUFBWCxDQUFsQixNQUE0QyxDQUFDLENBQWhELEVBQW1EO0FBQy9DRixJQUFBQSxXQUFXLEdBQUc7QUFBRUcsTUFBQUEsTUFBTSxFQUFFO0FBQVYsS0FBZDtBQUNILEdBRkQsTUFHSztBQUNESCxJQUFBQSxXQUFXLEdBQUc7QUFBRUcsTUFBQUEsTUFBTSxFQUFFO0FBQVYsS0FBZDtBQUNIOztBQUNESixFQUFBQSxRQUFRLENBQUMsSUFBRCxFQUFPQyxXQUFQLENBQVI7QUFDSCxDQVRELEMsQ0FXQTs7O0FBQ0FJLE9BQU8sQ0FBQ1gsSUFBUixHQUFlQSxJQUFJLEVBQW5CLEMsQ0FFQTs7QUFDQVcsT0FBTyxDQUFDQyxlQUFSLEdBQTBCWixJQUFJLENBQUNJLG1CQUFELENBQTlCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZXhwcmVzcyA9IHJlcXVpcmUoJ2V4cHJlc3MnKTtcclxuY29uc3QgY29ycyA9IHJlcXVpcmUoJ2NvcnMnKTtcclxuY29uc3QgYXBwID0gZXhwcmVzcygpO1xyXG5jb25zdCB1dGlsID0gcmVxdWlyZSgndXRpbCcpO1xyXG5cclxuY29uc3Qgd2hpdGVsaXN0ID0gWydodHRwOi8vbG9jYWxob3N0OjMwMDAnLCAnaHR0cDovL2xvY2FsaG9zdDozMDAxJywgJ2h0dHBzOi8vbG9jYWxob3N0OjUwMDAnXTtcclxudmFyIGNvcnNPcHRpb25zRGVsZWdhdGUgPSAocmVxLCBjYWxsYmFjaykgPT4ge1xyXG4gICAgdmFyIGNvcnNPcHRpb25zO1xyXG4gICAgaWYod2hpdGVsaXN0LmluZGV4T2YocmVxLmhlYWRlcignT3JpZ2luJykpICE9PSAtMSkge1xyXG4gICAgICAgIGNvcnNPcHRpb25zID0geyBvcmlnaW46IHRydWUgfTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGNvcnNPcHRpb25zID0geyBvcmlnaW46IGZhbHNlIH07XHJcbiAgICB9XHJcbiAgICBjYWxsYmFjayhudWxsLCBjb3JzT3B0aW9ucyk7XHJcbn07XHJcblxyXG4vLyBpZiB3ZSB3YW50IHRvIGFsbG93IGFsbCBvcmlnaW5zXHJcbmV4cG9ydHMuY29ycyA9IGNvcnMoKTtcclxuXHJcbi8vIGlmIHdlIHdhbnQgdG8gYWxsb3cgb25seSB0aGUgd2hpdGVsaXN0ZWQgb3JpZ2luc1xyXG5leHBvcnRzLmNvcnNXaXRoT3B0aW9ucyA9IGNvcnMoY29yc09wdGlvbnNEZWxlZ2F0ZSk7Il19\",\"originalCode\":\"const express = require('express');\\r\\nconst cors = require('cors');\\r\\nconst app = express();\\r\\nconst util = require('util');\\r\\n\\r\\nconst whitelist = ['http://localhost:3000', 'http://localhost:3001', 'https://localhost:5000'];\\r\\nvar corsOptionsDelegate = (req, callback) => {\\r\\n var corsOptions;\\r\\n if(whitelist.indexOf(req.header('Origin')) !== -1) {\\r\\n corsOptions = { origin: true };\\r\\n }\\r\\n else {\\r\\n corsOptions = { origin: false };\\r\\n }\\r\\n callback(null, corsOptions);\\r\\n};\\r\\n\\r\\n// if we want to allow all origins\\r\\nexports.cors = cors();\\r\\n\\r\\n// if we want to allow only the whitelisted origins\\r\\nexports.corsWithOptions = cors(corsOptionsDelegate);\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/34/cors_34beef0e65d7cfb3f2bb7a05fb9de802.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2495\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\cors.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":2982,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":2979,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"corsOptionsDelegate\",\"ranges\":[{\"startOffset\":335,\"endOffset\":573,\"count\":16}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const express = require('express');\\n\\nconst bodyParser = require('body-parser');\\n\\nconst {\\n checkSchema\\n} = require('express-validator');\\n\\nconst cors = require('./cors');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nvar validationRules = require('../middleware/validation');\\n\\nconst employeeController = require('../controllers/employeeController');\\n\\nconst employeeRouter = express.Router();\\nemployeeRouter.use(bodyParser.json()); // **********************************************************************************\\n// \\n// Employee Routes\\n// \\n// **********************************************************************************\\n\\nemployeeRouter.route('/').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.getAllEmployees).post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.addEmployee).put(cors.corsWithOptions, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('PUT operation not supported on /employees');\\n}).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.deleteAllEmployees);\\nemployeeRouter.route('/search').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.getAllEmployeesByName); // **********************************************************************************\\n// \\n// Employee Routes Specified by ID\\n// \\n// **********************************************************************************\\n\\nemployeeRouter.route('/:employeeId').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.getEmployeeDetailsById).post(cors.corsWithOptions, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('POST operation not supported on /employees/' + req.params.employeeId);\\n}).put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.updateEmployeeDetailsById).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.deleteAEmployeeById);\\nmodule.exports = employeeRouter;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImVtcGxveWVlUm91dGVyLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwiYm9keVBhcnNlciIsImNoZWNrU2NoZW1hIiwiY29ycyIsImF1dGhlbnRpY2F0ZSIsInZhbGlkYXRpb25SdWxlcyIsImVtcGxveWVlQ29udHJvbGxlciIsImVtcGxveWVlUm91dGVyIiwiUm91dGVyIiwidXNlIiwianNvbiIsInJvdXRlIiwib3B0aW9ucyIsImNvcnNXaXRoT3B0aW9ucyIsInJlcSIsInJlcyIsInNlbmRTdGF0dXMiLCJnZXQiLCJ2ZXJpZnlVc2VyIiwidmVyaWZ5QWRtaW4iLCJnZXRBbGxFbXBsb3llZXMiLCJwb3N0IiwiYWRkRW1wbG95ZWUiLCJwdXQiLCJuZXh0Iiwic3RhdHVzQ29kZSIsImVuZCIsImRlbGV0ZSIsImRlbGV0ZUFsbEVtcGxveWVlcyIsImdldEFsbEVtcGxveWVlc0J5TmFtZSIsImdldEVtcGxveWVlRGV0YWlsc0J5SWQiLCJwYXJhbXMiLCJlbXBsb3llZUlkIiwidXBkYXRlRW1wbG95ZWVEZXRhaWxzQnlJZCIsImRlbGV0ZUFFbXBsb3llZUJ5SWQiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxPQUFPLEdBQUdDLE9BQU8sQ0FBQyxTQUFELENBQXZCOztBQUNBLE1BQU1DLFVBQVUsR0FBR0QsT0FBTyxDQUFDLGFBQUQsQ0FBMUI7O0FBQ0EsTUFBTTtBQUFFRSxFQUFBQTtBQUFGLElBQWtCRixPQUFPLENBQUMsbUJBQUQsQ0FBL0I7O0FBQ0EsTUFBTUcsSUFBSSxHQUFHSCxPQUFPLENBQUMsUUFBRCxDQUFwQjs7QUFDQSxJQUFJSSxZQUFZLEdBQUdKLE9BQU8sQ0FBQyw0QkFBRCxDQUExQjs7QUFDQSxJQUFJSyxlQUFlLEdBQUdMLE9BQU8sQ0FBQywwQkFBRCxDQUE3Qjs7QUFDQSxNQUFNTSxrQkFBa0IsR0FBR04sT0FBTyxDQUFDLG1DQUFELENBQWxDOztBQUVBLE1BQU1PLGNBQWMsR0FBR1IsT0FB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cHJlc3MnKTtcclxuY29uc3QgYm9keVBhcnNlciA9IHJlcXVpcmUoJ2JvZHktcGFyc2VyJyk7XHJcbmNvbnN0IHsgY2hlY2tTY2hlbWEgfSA9IHJlcXVpcmUoJ2V4cHJlc3MtdmFsaWRhdG9yJyk7XHJcbmNvbnN0IGNvcnMgPSByZXF1aXJlKCcuL2NvcnMnKTtcclxudmFyIGF1dGhlbnRpY2F0ZSA9IHJlcXVpcmUoJy4uL21pZGRsZXdhcmUvYXV0aGVudGljYXRlJyk7XHJcbnZhciB2YWxpZGF0aW9uUnVsZXMgPSByZXF1aXJlKCcuLi9taWRkbGV3YXJlL3ZhbGlkYXRpb24nKTtcclxuY29uc3QgZW1wbG95ZWVDb250cm9sbGVyID0gcmVxdWlyZSgnLi4vY29udHJvbGxlcnMvZW1wbG95ZWVDb250cm9sbGVyJyk7XHJcblxyXG5jb25zdCBlbXBsb3llZVJvdXRlciA9IGV4cHJlc3MuUm91dGVyKCk7XHJcblxyXG5lbXBsb3llZVJvdXRlci51c2UoYm9keVBhcnNlci5qc29uKCkpO1xyXG5cclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyBcclxuLy8gICAgICAgICAgICAgIEVtcGxveWVlIFJvdXRlc1xyXG4vLyBcclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuZW1wbG95ZWVSb3V0ZXIucm91dGUoJy8nKVxyXG4gICAgLm9wdGlvbnMoY29ycy5jb3JzV2l0aE9wdGlvbnMsIChyZXEsIHJlcykgPT4geyByZXMuc2VuZFN0YXR1cygyMDApOyB9KVxyXG4gICAgLmdldChjb3JzLmNvcnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCBhdXRoZW50aWNhdGUudmVyaWZ5QWRtaW4sICBlbXBsb3llZUNvbnRyb2xsZXIuZ2V0QWxsRW1wbG95ZWVzKVxyXG4gICAgLnBvc3QoY29ycy5jb3JzV2l0aE9wdGlvbnMsYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgZW1wbG95ZWVDb250cm9sbGVyLmFkZEVtcGxveWVlKVxyXG4gICAgLnB1dChjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgcmVzLmVuZCgnUFVUIG9wZXJhdGlvbiBub3Qgc3VwcG9ydGVkIG9uIC9lbXBsb3llZXMnKTtcclxuICAgIH0pXHJcbiAgICAuZGVsZXRlKGNvcnMuY29yc1dpdGhPcHRpb25zLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeUFkbWluLCAgZW1wbG95ZWVDb250cm9sbGVyLmRlbGV0ZUFsbEVtcGxveWVlcyk7XHJcbmVtcGxveWVlUm91dGVyLnJvdXRlKCcvc2VhcmNoJylcclxuICAgIC5vcHRpb25zKGNvcnMuY29yc1dpdGhPcHRpb25zLCAocmVxLCByZXMpID0+IHsgcmVzLnNlbmRTdGF0dXMoMjAwKTsgfSlcclxuICAgIC5wb3N0KGNvcnMuY29yc1dpdGhPcHRpb25zLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeUFkbWluLCBlbXBsb3llZUNvbnRyb2xsZXIuZ2V0QWxsRW1wbG95ZWVzQnlOYW1lKTtcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuLy8gXHJcbi8vICAgICAgICAgICAgICBFbXBsb3llZSBSb3V0ZXMgU3BlY2lmaWVkIGJ5IElEXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG5lbXBsb3llZVJvdXRlci5yb3V0ZSgnLzplbXBsb3llZUlkJylcclxuICAgIC5vcHRpb25zKGNvcnMuY29yc1dpdGhPcHRpb25zLCAocmVxLCByZXMpID0+IHsgcmVzLnNlbmRTdGF0dXMoMjAwKTsgfSlcclxuICAgIC5nZXQoY29ycy5jb3JzLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeUFkbWluLCAgZW1wbG95ZWVDb250cm9sbGVyLmdldEVtcGxveWVlRGV0YWlsc0J5SWQpXHJcbiAgICAucG9zdChjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgcmVzLmVuZCgnUE9TVCBvcGVyYXRpb24gbm90IHN1cHBvcnRlZCBvbiAvZW1wbG95ZWVzLycgKyByZXEucGFyYW1zLmVtcGxveWVlSWQpO1xyXG4gICAgfSlcclxuICAgIC5wdXQoY29ycy5jb3JzV2l0aE9wdGlvbnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCBhdXRoZW50aWNhdGUudmVyaWZ5QWRtaW4sICBlbXBsb3llZUNvbnRyb2xsZXIudXBkYXRlRW1wbG95ZWVEZXRhaWxzQnlJZClcclxuICAgIC5kZWxldGUoY29ycy5jb3JzV2l0aE9wdGlvbnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCBhdXRoZW50aWNhdGUudmVyaWZ5QWRtaW4sICBlbXBsb3llZUNvbnRyb2xsZXIuZGVsZXRlQUVtcGxveWVlQnlJZCk7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IGVtcGxveWVlUm91dGVyOyJdfQ==\",\"originalCode\":\"const express = require('express');\\r\\nconst bodyParser = require('body-parser');\\r\\nconst { checkSchema } = require('express-validator');\\r\\nconst cors = require('./cors');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\nvar validationRules = require('../middleware/validation');\\r\\nconst employeeController = require('../controllers/employeeController');\\r\\n\\r\\nconst employeeRouter = express.Router();\\r\\n\\r\\nemployeeRouter.use(bodyParser.json());\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Employee Routes\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nemployeeRouter.route('/')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.getAllEmployees)\\r\\n .post(cors.corsWithOptions,authenticate.verifyUser, authenticate.verifyAdmin, employeeController.addEmployee)\\r\\n .put(cors.corsWithOptions, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('PUT operation not supported on /employees');\\r\\n })\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.deleteAllEmployees);\\r\\nemployeeRouter.route('/search')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.getAllEmployeesByName);\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Employee Routes Specified by ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nemployeeRouter.route('/:employeeId')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.getEmployeeDetailsById)\\r\\n .post(cors.corsWithOptions, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('POST operation not supported on /employees/' + req.params.employeeId);\\r\\n })\\r\\n .put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.updateEmployeeDetailsById)\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.deleteAEmployeeById);\\r\\n\\r\\nmodule.exports = employeeRouter;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/3b/employeeRouter_3bb83cd3174a28ed34e0f44c133b9b42.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2496\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\employeeRouter.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":9455,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":9452,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":802,\"endOffset\":842,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1082,\"endOffset\":1185,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1369,\"endOffset\":1409,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1828,\"endOffset\":1868,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":2006,\"endOffset\":2135,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const Employees = require('../models/users');\\n\\nconst utils = require('../utils/utils'); // **********************************************************************************\\n// \\n// Employee Operations \\n// \\n// **********************************************************************************\\n\\n/**\\r\\n * @description get details of the assistants\\r\\n * @param {*} req \\r\\n * @param {*} res \\r\\n * @param {*} next \\r\\n * @returns {array} list of employees\\r\\n */\\n\\n\\nconst getAllEmployees = (req, res, next) => {\\n var query = {\\n \\\"role\\\": \\\"moderater\\\"\\n };\\n Employees.find(query).then(employees => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n employees: employees\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst getAllEmployeesByName = (req, res, next) => {\\n var query = {\\n \\\"role\\\": \\\"moderater\\\"\\n }; // if (req.body.similarTo) {\\n // var searchBy = req.body.similarTo || {}\\n // query = { \\\"role\\\": \\\"moderater\\\", $text: { $search: searchBy } }\\n // }\\n\\n if (req.body.similarTo) {\\n var searchBy = req.body.similarTo || {};\\n query = {\\n \\\"role\\\": \\\"moderater\\\",\\n firstname: {\\n $regex: `${searchBy}`,\\n $options: \\\"i\\\"\\n }\\n };\\n }\\n\\n var sortby = req.body.sortBy || {};\\n Employees.find(query).sort(sortby).then(employees => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n employees: employees\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst addEmployee = async (req, res, next) => {\\n const randomPassword = utils.password_generator(10);\\n var employee = {\\n username: req.body.email,\\n firstname: req.body.firstname,\\n lastname: req.body.lastname,\\n email: req.body.email,\\n role: 'moderater'\\n };\\n\\n try {\\n Employees.register(new Employees(employee), randomPassword, (err, employee) => {\\n if (err) {\\n res.statusCode = 403;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: err.message\\n });\\n } else {\\n employee.save((err, employee) => {\\n if (err) {\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Error while Saving new user.'\\n });\\n }\\n\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n email: employee.email,\\n password: randomPassword\\n });\\n });\\n }\\n });\\n } catch (error) {\\n var err = new Error(\\\"Error while registering new user.\\\");\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: err.message\\n });\\n }\\n};\\n\\nconst deleteAllEmployees = (req, res, next) => {\\n Employees.remove({\\n \\\"role\\\": \\\"moderater\\\"\\n }).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json(resp);\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nexports.getAllEmployees = getAllEmployees;\\nexports.getAllEmployeesByName = getAllEmployeesByName;\\nexports.addEmployee = addEmployee;\\nexports.deleteAllEmployees = deleteAllEmployees; // **********************************************************************************\\n// \\n// Employee Operations Specified by ID\\n// \\n// **********************************************************************************\\n\\nconst getEmployeeDetailsById = (req, res, next) => {\\n Employees.findById(req.params.employeeId).then(employee => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n employee: employee\\n });\\n }, err => {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Could not find employee with given ID'\\n });\\n }).catch(err => next(err));\\n};\\n\\nconst updateEmployeeDetailsById = (req, res, next) => {\\n var employee = {\\n username: req.body.email,\\n firstname: req.body.firstname,\\n lastname: req.body.lastname,\\n email: req.body.email,\\n role: 'moderater'\\n };\\n Employees.findByIdAndUpdate(req.params.employeeId, {\\n $set: employee\\n }, {\\n new: true\\n }).then(employee => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n employee: employee\\n });\\n }, err => next(err)).catch(err => {\\n var err = new Error(\\\"Error while updating.\\\");\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: err.message\\n });\\n });\\n};\\n\\nconst deleteAEmployeeById = (req, res, next) => {\\n Employees.findByIdAndRemove(req.params.employeeId).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json(resp);\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nexports.getEmployeeDetailsById = getEmployeeDetailsById;\\nexports.updateEmployeeDetailsById = updateEmployeeDetailsById;\\nexports.deleteAEmployeeById = deleteAEmployeeById;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImVtcGxveWVlQ29udHJvbGxlci5qcyJdLCJuYW1lcyI6WyJFbXBsb3llZXMiLCJyZXF1aXJlIiwidXRpbHMiLCJnZXRBbGxFbXBsb3llZXMiLCJyZXEiLCJyZXMiLCJuZXh0IiwicXVlcnkiLCJmaW5kIiwidGhlbiIsImVtcGxveWVlcyIsInN0YXR1c0NvZGUiLCJzZXRIZWFkZXIiLCJqc29uIiwic3VjY2VzcyIsImVyciIsImNhdGNoIiwiZ2V0QWxsRW1wbG95ZWVzQnlOYW1lIiwiYm9keSIsInNpbWlsYXJUbyIsInNlYXJjaEJ5IiwiZmlyc3RuYW1lIiwiJHJlZ2V4IiwiJG9wdGlvbnMiLCJzb3J0YnkiLCJzb3J0QnkiLCJzb3J0IiwiYWRkRW1wbG95ZWUiLCJyYW5kb21QYXNzd29yZCIsInBhc3N3b3JkX2dlbmVyYXRvciIsImVtcGxveWVlIiwidXNlcm5hbWUiLCJlbWFpbCIsImxhc3RuYW1lIiwicm9sZSIsInJlZ2lzdGVyIiwibWVzc2FnZSIsInNhdmUiLCJwYXNzd29yZCIsImVycm9yIiwiRXJyb3IiLCJkZWxldGVBbGxFbXBsb3llZXMiLCJyZW1vdmUiLCJyZXNwIiwiZXhwb3J0cyIsImdldEVtcGxveWVlRGV0YWlsc0J5SWQiLCJmaW5kQnlJZCIsInBhcmFtcyIsImVtcGxveWVlSWQiLCJ1cGRhdGVFbXBsb3llZURldGFpbHNCeUlkIiwiZmluZEJ5SWRBbmRVcGRhdGUiLCIkc2V0IiwibmV3IiwiZGVsZXRlQUVtcGxveWVlQnlJZCIsImZpbmRCeUlkQW5kUmVtb3ZlIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxTQUFTLEdBQUdDLE9BQU8sQ0FBQyxpQkFBRCxDQUF6Qjs7QUFDQSxNQUFNQyxLQUFLLEdBQUdELE9BQU8sQ0FBQyxnQkFBRCxDQUFyQixDLENBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0EsTUFBTUUsZUFBZSxHQUFHLENBQUNDLEdBQUQsRUFBTUMsR0FBTixF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SSxDQUFDUyxHQUFELENBTHBCLEVBTUtDLEtBTkwsQ0FNWUQsR0FBRCxJQUFTVCxJQUFJLENBQUNTLEdBQUQsQ0FOeEI7QUFPSCxDQVJEOztBQVVBNkIsT0FBTyxDQUFDQyxzQkFBUixHQUFpQ0Esc0JBQWpDO0FBQ0FELE9BQU8sQ0FBQ0sseUJBQVIsR0FBb0NBLHlCQUFwQztBQUNBTCxPQUFPLENBQUNTLG1CQUFSLEdBQThCQSxtQkFBOUIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBFbXBsb3llZXMgPSByZXF1aXJlKCcuLi9tb2RlbHMvdXNlcnMnKTtcclxuY29uc3QgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscy91dGlscycpO1xyXG5cclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyBcclxuLy8gICAgICAgICAgICAgIEVtcGxveWVlIE9wZXJhdGlvbnMgXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG4vKipcclxuICogQGRlc2NyaXB0aW9uIGdldCBkZXRhaWxzIG9mIHRoZSBhc3Npc3RhbnRzXHJcbiAqIEBwYXJhbSB7Kn0gcmVxIFxyXG4gKiBAcGFyYW0geyp9IHJlcyBcclxuICogQHBhcmFtIHsqfSBuZXh0IFxyXG4gKiBAcmV0dXJucyB7YXJyYXl9IGxpc3Qgb2YgZW1wbG95ZWVzXHJcbiAqL1xyXG5jb25zdCBnZXRBbGxFbXBsb3llZXMgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHZhciBxdWVyeSA9IHsgXCJyb2xlXCI6IFwibW9kZXJhdGVyXCIgfTtcclxuICAgIEVtcGxveWVlcy5maW5kKHF1ZXJ5KVxyXG4gICAgICAgIC50aGVuKChlbXBsb3llZXMpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgZW1wbG95ZWVzOiBlbXBsb3llZXMgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpO1xyXG59XHJcblxyXG5jb25zdCBnZXRBbGxFbXBsb3llZXNCeU5hbWUgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHZhciBxdWVyeSA9IHsgXCJyb2xlXCI6IFwibW9kZXJhdGVyXCIgfTtcclxuICAgIC8vIGlmIChyZXEuYm9keS5zaW1pbGFyVG8pIHtcclxuICAgIC8vICAgICB2YXIgc2VhcmNoQnkgPSByZXEuYm9keS5zaW1pbGFyVG8gfHwge31cclxuICAgIC8vICAgICBxdWVyeSA9IHsgXCJyb2xlXCI6IFwibW9kZXJhdGVyXCIsICR0ZXh0OiB7ICRzZWFyY2g6IHNlYXJjaEJ5IH0gfVxyXG4gICAgLy8gfVxyXG4gICAgaWYgKHJlcS5ib2R5LnNpbWlsYXJUbykge1xyXG4gICAgICAgIHZhciBzZWFyY2hCeSA9IHJlcS5ib2R5LnNpbWlsYXJUbyB8fCB7fVxyXG4gICAgICAgIHF1ZXJ5ID0geyBcInJvbGVcIjogXCJtb2RlcmF0ZXJcIiwgZmlyc3RuYW1lOiB7ICRyZWdleDogYCR7c2VhcmNoQnl9YCwgJG9wdGlvbnM6IFwiaVwiIH0gfVxyXG4gICAgfVxyXG4gICAgdmFyIHNvcnRieSA9IHJlcS5ib2R5LnNvcnRCeSB8fCB7fTtcclxuICAgIEVtcGxveWVlcy5maW5kKHF1ZXJ5KS5zb3J0KHNvcnRieSlcclxuICAgICAgICAudGhlbigoZW1wbG95ZWVzKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIGVtcGxveWVlczogZW1wbG95ZWVzIH0pO1xyXG4gICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuY29uc3QgYWRkRW1wbG95ZWUgPSBhc3luYyAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIGNvbnN0IHJhbmRvbVBhc3N3b3JkID0gdXRpbHMucGFzc3dvcmRfZ2VuZXJhdG9yKDEwKTtcclxuICAgIHZhciBlbXBsb3llZSA9IHtcclxuICAgICAgICB1c2VybmFtZTogcmVxLmJvZHkuZW1haWwsXHJcbiAgICAgICAgZmlyc3RuYW1lOiByZXEuYm9keS5maXJzdG5hbWUsXHJcbiAgICAgICAgbGFzdG5hbWU6IHJlcS5ib2R5Lmxhc3RuYW1lLFxyXG4gICAgICAgIGVtYWlsOiByZXEuYm9keS5lbWFpbCxcclxuICAgICAgICByb2xlOiAnbW9kZXJhdGVyJ1xyXG4gICAgfVxyXG4gICAgdHJ5IHtcclxuICAgICAgICBFbXBsb3llZXMucmVnaXN0ZXIobmV3IEVtcGxveWVlcyhlbXBsb3llZSksXHJcbiAgICAgICAgICAgIHJhbmRvbVBhc3N3b3JkLCAoZXJyLCBlbXBsb3llZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNDAzO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogZXJyLm1lc3NhZ2UgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBlbXBsb3llZS5zYXZlKChlcnIsIGVtcGxveWVlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNTAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IGZhbHNlLCBtZXNzYWdlOiAnRXJyb3Igd2hpbGUgU2F2aW5nIG5ldyB1c2VyLicgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgZW1haWw6IGVtcGxveWVlLmVtYWlsLCBwYXNzd29yZDogcmFuZG9tUGFzc3dvcmQgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICB2YXIgZXJyID0gbmV3IEVycm9yKFwiRXJyb3Igd2hpbGUgcmVnaXN0ZXJpbmcgbmV3IHVzZXIuXCIpO1xyXG4gICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNTAwO1xyXG4gICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogZXJyLm1lc3NhZ2UgfSk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmNvbnN0IGRlbGV0ZUFsbEVtcGxveWVlcyA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgRW1wbG95ZWVzLnJlbW92ZSh7IFwicm9sZVwiOiBcIm1vZGVyYXRlclwiIH0pXHJcbiAgICAgICAgLnRoZW4oKHJlc3ApID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHJlc3ApO1xyXG4gICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuZXhwb3J0cy5nZXRBbGxFbXBsb3llZXMgPSBnZXRBbGxFbXBsb3llZXM7XHJcbmV4cG9ydHMuZ2V0QWxsRW1wbG95ZWVzQnlOYW1lID0gZ2V0QWxsRW1wbG95ZWVzQnlOYW1lO1xyXG5leHBvcnRzLmFkZEVtcGxveWVlID0gYWRkRW1wbG95ZWU7XHJcbmV4cG9ydHMuZGVsZXRlQWxsRW1wbG95ZWVzID0gZGVsZXRlQWxsRW1wbG95ZWVzO1xyXG5cclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyBcclxuLy8gICAgICAgICAgICAgIEVtcGxveWVlIE9wZXJhdGlvbnMgU3BlY2lmaWVkIGJ5IElEXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG5jb25zdCBnZXRFbXBsb3llZURldGFpbHNCeUlkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICBFbXBsb3llZXMuZmluZEJ5SWQocmVxLnBhcmFtcy5lbXBsb3llZUlkKVxyXG4gICAgICAgIC50aGVuKChlbXBsb3llZSkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCBlbXBsb3llZTogZW1wbG95ZWUgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwNDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogJ0NvdWxkIG5vdCBmaW5kIGVtcGxveWVlIHdpdGggZ2l2ZW4gSUQnIH0pO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IG5leHQoZXJyKSk7XHJcbn1cclxuXHJcbmNvbnN0IHVwZGF0ZUVtcGxveWVlRGV0YWlsc0J5SWQgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHZhciBlbXBsb3llZSA9IHtcclxuICAgICAgICB1c2VybmFtZTogcmVxLmJvZHkuZW1haWwsXHJcbiAgICAgICAgZmlyc3RuYW1lOiByZXEuYm9keS5maXJzdG5hbWUsXHJcbiAgICAgICAgbGFzdG5hbWU6IHJlcS5ib2R5Lmxhc3RuYW1lLFxyXG4gICAgICAgIGVtYWlsOiByZXEuYm9keS5lbWFpbCxcclxuICAgICAgICByb2xlOiAnbW9kZXJhdGVyJ1xyXG4gICAgfVxyXG4gICAgRW1wbG95ZWVzLmZpbmRCeUlkQW5kVXBkYXRlKHJlcS5wYXJhbXMuZW1wbG95ZWVJZCwge1xyXG4gICAgICAgICRzZXQ6IGVtcGxveWVlXHJcbiAgICB9LCB7IG5ldzogdHJ1ZSB9KVxyXG4gICAgICAgIC50aGVuKChlbXBsb3llZSkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCBlbXBsb3llZTogZW1wbG95ZWUgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoXCJFcnJvciB3aGlsZSB1cGRhdGluZy5cIik7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNTAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IGZhbHNlLCBtZXNzYWdlOiBlcnIubWVzc2FnZSB9KTtcclxuICAgICAgICB9KTtcclxufVxyXG5cclxuY29uc3QgZGVsZXRlQUVtcGxveWVlQnlJZCA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgRW1wbG95ZWVzLmZpbmRCeUlkQW5kUmVtb3ZlKHJlcS5wYXJhbXMuZW1wbG95ZWVJZClcclxuICAgICAgICAudGhlbigocmVzcCkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24ocmVzcCk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpO1xyXG59XHJcblxyXG5leHBvcnRzLmdldEVtcGxveWVlRGV0YWlsc0J5SWQgPSBnZXRFbXBsb3llZURldGFpbHNCeUlkO1xyXG5leHBvcnRzLnVwZGF0ZUVtcGxveWVlRGV0YWlsc0J5SWQgPSB1cGRhdGVFbXBsb3llZURldGFpbHNCeUlkO1xyXG5leHBvcnRzLmRlbGV0ZUFFbXBsb3llZUJ5SWQgPSBkZWxldGVBRW1wbG95ZWVCeUlkOyJdfQ==\",\"originalCode\":\"const Employees = require('../models/users');\\r\\nconst utils = require('../utils/utils');\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Employee Operations \\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\n/**\\r\\n * @description get details of the assistants\\r\\n * @param {*} req \\r\\n * @param {*} res \\r\\n * @param {*} next \\r\\n * @returns {array} list of employees\\r\\n */\\r\\nconst getAllEmployees = (req, res, next) => {\\r\\n var query = { \\\"role\\\": \\\"moderater\\\" };\\r\\n Employees.find(query)\\r\\n .then((employees) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, employees: employees });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst getAllEmployeesByName = (req, res, next) => {\\r\\n var query = { \\\"role\\\": \\\"moderater\\\" };\\r\\n // if (req.body.similarTo) {\\r\\n // var searchBy = req.body.similarTo || {}\\r\\n // query = { \\\"role\\\": \\\"moderater\\\", $text: { $search: searchBy } }\\r\\n // }\\r\\n if (req.body.similarTo) {\\r\\n var searchBy = req.body.similarTo || {}\\r\\n query = { \\\"role\\\": \\\"moderater\\\", firstname: { $regex: `${searchBy}`, $options: \\\"i\\\" } }\\r\\n }\\r\\n var sortby = req.body.sortBy || {};\\r\\n Employees.find(query).sort(sortby)\\r\\n .then((employees) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, employees: employees });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst addEmployee = async (req, res, next) => {\\r\\n const randomPassword = utils.password_generator(10);\\r\\n var employee = {\\r\\n username: req.body.email,\\r\\n firstname: req.body.firstname,\\r\\n lastname: req.body.lastname,\\r\\n email: req.body.email,\\r\\n role: 'moderater'\\r\\n }\\r\\n try {\\r\\n Employees.register(new Employees(employee),\\r\\n randomPassword, (err, employee) => {\\r\\n if (err) {\\r\\n res.statusCode = 403;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: err.message });\\r\\n }\\r\\n else {\\r\\n employee.save((err, employee) => {\\r\\n if (err) {\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Error while Saving new user.' });\\r\\n }\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, email: employee.email, password: randomPassword });\\r\\n });\\r\\n }\\r\\n });\\r\\n } catch (error) {\\r\\n var err = new Error(\\\"Error while registering new user.\\\");\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: err.message });\\r\\n }\\r\\n}\\r\\n\\r\\nconst deleteAllEmployees = (req, res, next) => {\\r\\n Employees.remove({ \\\"role\\\": \\\"moderater\\\" })\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json(resp);\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nexports.getAllEmployees = getAllEmployees;\\r\\nexports.getAllEmployeesByName = getAllEmployeesByName;\\r\\nexports.addEmployee = addEmployee;\\r\\nexports.deleteAllEmployees = deleteAllEmployees;\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Employee Operations Specified by ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nconst getEmployeeDetailsById = (req, res, next) => {\\r\\n Employees.findById(req.params.employeeId)\\r\\n .then((employee) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, employee: employee });\\r\\n }, (err) => {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Could not find employee with given ID' });\\r\\n })\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst updateEmployeeDetailsById = (req, res, next) => {\\r\\n var employee = {\\r\\n username: req.body.email,\\r\\n firstname: req.body.firstname,\\r\\n lastname: req.body.lastname,\\r\\n email: req.body.email,\\r\\n role: 'moderater'\\r\\n }\\r\\n Employees.findByIdAndUpdate(req.params.employeeId, {\\r\\n $set: employee\\r\\n }, { new: true })\\r\\n .then((employee) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, employee: employee });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => {\\r\\n var err = new Error(\\\"Error while updating.\\\");\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: err.message });\\r\\n });\\r\\n}\\r\\n\\r\\nconst deleteAEmployeeById = (req, res, next) => {\\r\\n Employees.findByIdAndRemove(req.params.employeeId)\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json(resp);\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nexports.getEmployeeDetailsById = getEmployeeDetailsById;\\r\\nexports.updateEmployeeDetailsById = updateEmployeeDetailsById;\\r\\nexports.deleteAEmployeeById = deleteAEmployeeById;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/6e/employeeController_6ee2f5b4e4eea073cb5625109f63cb82.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2497\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\employeeController.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":22470,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":22467,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"getAllEmployees\",\"ranges\":[{\"startOffset\":577,\"endOffset\":889,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getAllEmployeesByName\",\"ranges\":[{\"startOffset\":922,\"endOffset\":1648,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"addEmployee\",\"ranges\":[{\"startOffset\":1671,\"endOffset\":3020,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1998,\"endOffset\":2777,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":2250,\"endOffset\":2761,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"deleteAllEmployees\",\"ranges\":[{\"startOffset\":3050,\"endOffset\":3287,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getEmployeeDetailsById\",\"ranges\":[{\"startOffset\":3736,\"endOffset\":4197,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"updateEmployeeDetailsById\",\"ranges\":[{\"startOffset\":4234,\"endOffset\":4944,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"deleteAEmployeeById\",\"ranges\":[{\"startOffset\":4975,\"endOffset\":5215,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const multer = require('multer');\\n\\nconst {\\n v4: uuidv4\\n} = require('uuid');\\n\\nlet path = require('path');\\n\\nconst password_generator = len => {\\n var length = len ? len : 10;\\n var string = \\\"abcdefghijklmnopqrstuvwxyz\\\"; //to upper \\n\\n var numeric = '0123456789';\\n var punctuation = '!@#$%^&*()_+~`|}{[]\\\\:;?><,./-=';\\n var password = \\\"\\\";\\n var character = \\\"\\\";\\n var crunch = true;\\n\\n while (password.length < length) {\\n entity1 = Math.ceil(string.length * Math.random() * Math.random());\\n entity2 = Math.ceil(numeric.length * Math.random() * Math.random());\\n entity3 = Math.ceil(punctuation.length * Math.random() * Math.random());\\n hold = string.charAt(entity1);\\n hold = password.length % 2 == 0 ? hold.toUpperCase() : hold;\\n character += hold;\\n character += numeric.charAt(entity2);\\n character += punctuation.charAt(entity3);\\n password = character;\\n }\\n\\n password = password.split('').sort(function () {\\n return 0.5 - Math.random();\\n }).join('');\\n return password.substr(0, length);\\n};\\n\\nexports.password_generator = password_generator;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInV0aWxzLmpzIl0sIm5hbWVzIjpbIm11bHRlciIsInJlcXVpcmUiLCJ2NCIsInV1aWR2NCIsInBhdGgiLCJwYXNzd29yZF9nZW5lcmF0b3IiLCJsZW4iLCJsZW5ndGgiLCJzdHJpbmciLCJudW1lcmljIiwicHVuY3R1YXRpb24iLCJwYXNzd29yZCIsImNoYXJhY3RlciIsImNydW5jaCIsImVudGl0eTEiLCJNYXRoIiwiY2VpbCIsInJhbmRvbSIsImVudGl0eTIiLCJlbnRpdHkzIiwiaG9sZCIsImNoYXJBdCIsInRvVXBwZXJDYXNlIiwic3BsaXQiLCJzb3J0Iiwiam9pbiIsInN1YnN0ciIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE1BQU0sR0FBR0MsT0FBTyxDQUFDLFFBQUQsQ0FBdEI7O0FBQ0EsTUFBTTtBQUFFQyxFQUFBQSxFQUFFLEVBQUVDO0FBQU4sSUFBaUJGLE9BQU8sQ0FBQyxNQUFELENBQTlCOztBQUNBLElBQUlHLElBQUksR0FBR0gsT0FBTyxDQUFDLE1BQUQsQ0FBbEI7O0FBRUEsTUFBTUksa0JBQWtCLEdBQUlDLEdBQUQsSUFBUztBQUNoQyxNQUFJQyxNQUFNLEdBQUlELEdBQUQsR0FBU0EsR0FBVCxHQUFpQixFQUE5QjtBQUNBLE1BQUlFLE1BQU0sR0FBRyw0QkFBYixDQUZnQyxDQUVXOztBQUMzQyxNQUFJQyxPQUFPLEdBQUcsWUFBZDtBQUNBLE1BQUlDLFdBQVcsR0FBRyxnQ0FBbEI7QUFDQSxNQUFJQyxRQUFRLEdBQUcsRUFBZjtBQUNBLE1BQUlDLFNBQVMsR0FBRyxFQUFoQjtBQUNBLE1BQUlDLE1BQU0sR0FBRyxJQUFiOztBQUNBLFNBQU9GLFFBQVEsQ0FBQ0osTUFBVCxHQUFrQkEsTUFBekIsRUFBaUM7QUFDN0JPLElBQUFBLE9BQU8sR0FBR0MsSUFBSSxDQUFDQyxJQUFMLENBQVVSLE1BQU0sQ0FBQ0QsTUFBUCxHQUFnQlEsSUFBSSxDQUFDRSxNQUFMLEVBQWhCLEdBQWdDRixJQUFJLENBQUNFLE1BQUwsRUFBMUMsQ0FBVjtBQUNBQyxJQUFBQSxPQUFPLEdBQUdILElBQUksQ0FBQ0MsSUFBTCxDQUFVUCxPQUFPLENBQUNGLE1BQVIsR0FBaUJRLElBQUksQ0FBQ0UsTUFBTCxFQUFqQixHQUFpQ0YsSUFBSSxDQUFDRSxNQUFMLEVBQTNDLENBQVY7QUFDQUUsSUFBQUEsT0FBTyxHQUFHSixJQUFJLENBQUNDLElBQUwsQ0FBVU4sV0FBVyxDQUFDSCxNQUFaLEdBQXFCUSxJQUFJLENBQUNFLE1BQUwsRUFBckIsR0FBcUNGLElBQUksQ0FBQ0UsTUFBTCxFQUEvQyxDQUFWO0FBQ0FHLElBQUFBLElBQUksR0FBR1osTUFBTSxDQUFDYSxNQUFQLENBQWNQLE9BQWQsQ0FBUDtBQUNBTSxJQUFBQSxJQUFJLEdBQUlULFFBQVEsQ0FBQ0osTUFBVCxHQUFrQixDQUFsQixJQUF1QixDQUF4QixHQUE4QmEsSUFBSSxDQUFDRSxXQUFMLEVBQTlCLEdBQXFERixJQUE1RDtBQUNBUixJQUFBQSxTQUFTLElBQUlRLElBQWI7QUFDQVIsSUFBQUEsU0FBUyxJQUFJSCxPQUFPLENBQUNZLE1BQVIsQ0FBZUgsT0FBZixDQUFiO0FBQ0FOLElBQUFBLFNBQVMsSUFBSUYsV0FBVyxDQUFDVyxNQUFaLENBQW1CRixPQUFuQixDQUFiO0FBQ0FSLElBQUFBLFFBQVEsR0FBR0MsU0FBWDtBQUNIOztBQUNERCxFQUFBQSxRQUFRLEdBQUdBLFFBQVEsQ0FBQ1ksS0FBVCxDQUFlLEVBQWYsRUFBbUJDLElBQW5CLENBQXdCLFlBQVk7QUFBRSxXQUFPLE1BQU1ULElBQUksQ0FBQ0UsTUFBTCxFQUFiO0FBQTRCLEdBQWxFLEVBQW9FUSxJQUFwRSxDQUF5RSxFQUF6RSxDQUFYO0FBQ0EsU0FBT2QsUUFBUSxDQUFDZSxNQUFULENBQWdCLENBQWhCLEVBQW1CbkIsTUFBbkIsQ0FBUDtBQUNILENBckJEOztBQXVCQW9CLE9BQU8sQ0FBQ3RCLGtCQUFSLEdBQTZCQSxrQkFBN0IiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBtdWx0ZXIgPSByZXF1aXJlKCdtdWx0ZXInKTtcclxuY29uc3QgeyB2NDogdXVpZHY0IH0gPSByZXF1aXJlKCd1dWlkJyk7XHJcbmxldCBwYXRoID0gcmVxdWlyZSgncGF0aCcpO1xyXG5cclxuY29uc3QgcGFzc3dvcmRfZ2VuZXJhdG9yID0gKGxlbikgPT4ge1xyXG4gICAgdmFyIGxlbmd0aCA9IChsZW4pID8gKGxlbikgOiAoMTApO1xyXG4gICAgdmFyIHN0cmluZyA9IFwiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpcIjsgLy90byB1cHBlciBcclxuICAgIHZhciBudW1lcmljID0gJzAxMjM0NTY3ODknO1xyXG4gICAgdmFyIHB1bmN0dWF0aW9uID0gJyFAIyQlXiYqKClfK35gfH17W11cXDo7Pz48LC4vLT0nO1xyXG4gICAgdmFyIHBhc3N3b3JkID0gXCJcIjtcclxuICAgIHZhciBjaGFyYWN0ZXIgPSBcIlwiO1xyXG4gICAgdmFyIGNydW5jaCA9IHRydWU7XHJcbiAgICB3aGlsZSAocGFzc3dvcmQubGVuZ3RoIDwgbGVuZ3RoKSB7XHJcbiAgICAgICAgZW50aXR5MSA9IE1hdGguY2VpbChzdHJpbmcubGVuZ3RoICogTWF0aC5yYW5kb20oKSAqIE1hdGgucmFuZG9tKCkpO1xyXG4gICAgICAgIGVudGl0eTIgPSBNYXRoLmNlaWwobnVtZXJpYy5sZW5ndGggKiBNYXRoLnJhbmRvbSgpICogTWF0aC5yYW5kb20oKSk7XHJcbiAgICAgICAgZW50aXR5MyA9IE1hdGguY2VpbChwdW5jdHVhdGlvbi5sZW5ndGggKiBNYXRoLnJhbmRvbSgpICogTWF0aC5yYW5kb20oKSk7XHJcbiAgICAgICAgaG9sZCA9IHN0cmluZy5jaGFyQXQoZW50aXR5MSk7XHJcbiAgICAgICAgaG9sZCA9IChwYXNzd29yZC5sZW5ndGggJSAyID09IDApID8gKGhvbGQudG9VcHBlckNhc2UoKSkgOiAoaG9sZCk7XHJcbiAgICAgICAgY2hhcmFjdGVyICs9IGhvbGQ7XHJcbiAgICAgICAgY2hhcmFjdGVyICs9IG51bWVyaWMuY2hhckF0KGVudGl0eTIpO1xyXG4gICAgICAgIGNoYXJhY3RlciArPSBwdW5jdHVhdGlvbi5jaGFyQXQoZW50aXR5Myk7XHJcbiAgICAgICAgcGFzc3dvcmQgPSBjaGFyYWN0ZXI7XHJcbiAgICB9XHJcbiAgICBwYXNzd29yZCA9IHBhc3N3b3JkLnNwbGl0KCcnKS5zb3J0KGZ1bmN0aW9uICgpIHsgcmV0dXJuIDAuNSAtIE1hdGgucmFuZG9tKCkgfSkuam9pbignJyk7XHJcbiAgICByZXR1cm4gcGFzc3dvcmQuc3Vic3RyKDAsIGxlbmd0aCk7XHJcbn1cclxuXHJcbmV4cG9ydHMucGFzc3dvcmRfZ2VuZXJhdG9yID0gcGFzc3dvcmRfZ2VuZXJhdG9yOyJdfQ==\",\"originalCode\":\"const multer = require('multer');\\r\\nconst { v4: uuidv4 } = require('uuid');\\r\\nlet path = require('path');\\r\\n\\r\\nconst password_generator = (len) => {\\r\\n var length = (len) ? (len) : (10);\\r\\n var string = \\\"abcdefghijklmnopqrstuvwxyz\\\"; //to upper \\r\\n var numeric = '0123456789';\\r\\n var punctuation = '!@#$%^&*()_+~`|}{[]\\\\:;?><,./-=';\\r\\n var password = \\\"\\\";\\r\\n var character = \\\"\\\";\\r\\n var crunch = true;\\r\\n while (password.length < length) {\\r\\n entity1 = Math.ceil(string.length * Math.random() * Math.random());\\r\\n entity2 = Math.ceil(numeric.length * Math.random() * Math.random());\\r\\n entity3 = Math.ceil(punctuation.length * Math.random() * Math.random());\\r\\n hold = string.charAt(entity1);\\r\\n hold = (password.length % 2 == 0) ? (hold.toUpperCase()) : (hold);\\r\\n character += hold;\\r\\n character += numeric.charAt(entity2);\\r\\n character += punctuation.charAt(entity3);\\r\\n password = character;\\r\\n }\\r\\n password = password.split('').sort(function () { return 0.5 - Math.random() }).join('');\\r\\n return password.substr(0, length);\\r\\n}\\r\\n\\r\\nexports.password_generator = password_generator;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/12/utils_12501e91058955e05c348a4b2ab3e6a2.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2498\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\utils\\\\utils.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":5216,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":5213,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"password_generator\",\"ranges\":[{\"startOffset\":223,\"endOffset\":1107,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1008,\"endOffset\":1057,\"count\":30}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const express = require('express');\\n\\nconst bodyParser = require('body-parser');\\n\\nconst cors = require('./cors');\\n\\nconst {\\n checkSchema\\n} = require('express-validator');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nvar validationRules = require('../middleware/validation');\\n\\nconst placeController = require('../controllers/placeController');\\n\\nconst visitingPlaceRouter = express.Router();\\nvisitingPlaceRouter.use(bodyParser.json()); // **********************************************************************************\\n// Visiting Place Routes\\n// **********************************************************************************\\n\\nvisitingPlaceRouter.route('/').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, placeController.getAllVisitingPlaces).post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.addVisitingPlace).put(cors.corsWithOptions, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('PUT operation not supported on /visitingPlaces');\\n}).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.deleteAllVisitingPlaces);\\nvisitingPlaceRouter.route('/search').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).post(cors.corsWithOptions, authenticate.verifyUser, placeController.getAllVisitingPlacesByName); // **********************************************************************************\\n// \\n// Visiting Place Routes On ID\\n// \\n// **********************************************************************************\\n\\nvisitingPlaceRouter.route('/:visitingPlaceId').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, placeController.getVisitingPlaceDetailsById).post(cors.corsWithOptions, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('POST operation not supported on /visitingPlaces/' + req.params.visitingPlaceId);\\n}).put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.updateVisitingPlaceDetailsById).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.deleteAVisitingPlaceById);\\nmodule.exports = visitingPlaceRouter;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBsYWNlUm91dGVyLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwiYm9keVBhcnNlciIsImNvcnMiLCJjaGVja1NjaGVtYSIsImF1dGhlbnRpY2F0ZSIsInZhbGlkYXRpb25SdWxlcyIsInBsYWNlQ29udHJvbGxlciIsInZpc2l0aW5nUGxhY2VSb3V0ZXIiLCJSb3V0ZXIiLCJ1c2UiLCJqc29uIiwicm91dGUiLCJvcHRpb25zIiwiY29yc1dpdGhPcHRpb25zIiwicmVxIiwicmVzIiwic2VuZFN0YXR1cyIsImdldCIsInZlcmlmeVVzZXIiLCJnZXRBbGxWaXNpdGluZ1BsYWNlcyIsInBvc3QiLCJ2ZXJpZnlBZG1pbiIsImFkZFZpc2l0aW5nUGxhY2UiLCJwdXQiLCJuZXh0Iiwic3RhdHVzQ29kZSIsImVuZCIsImRlbGV0ZSIsImRlbGV0ZUFsbFZpc2l0aW5nUGxhY2VzIiwiZ2V0QWxsVmlzaXRpbmdQbGFjZXNCeU5hbWUiLCJnZXRWaXNpdGluZ1BsYWNlRGV0YWlsc0J5SWQiLCJwYXJhbXMiLCJ2aXNpdGluZ1BsYWNlSWQiLCJ1cGRhdGVWaXNpdGluZ1BsYWNlRGV0YWlsc0J5SWQiLCJkZWxldGVBVmlzaXRpbmdQbGFjZUJ5SWQiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxPQUFPLEdBQUdDLE9BQU8sQ0FBQyxTQUFELENBQXZCOztBQUNBLE1BQU1DLFVBQVUsR0FBR0QsT0FBTyxDQUFDLGFBQUQsQ0FBMUI7O0FBRUEsTUFBTUUsSUFBSSxHQUFHRixPQUFPLENBQUMsUUFBRCxDQUFwQjs7QUFDQSxNQUFNO0FBQUVHLEVBQUFBO0FBQUYsSUFBa0JILE9BQU8sQ0FBQyxtQkFBRCxDQUEvQjs7QUFDQSxJQUFJSSxZQUFZLEdBQUdKLE9BQU8sQ0FBQyw0QkFBRCxDQUExQjs7QUFDQSxJQUFJSyxlQUFlLEdBQUdMLE9BQU8sQ0FBQywwQkFBRCxDQUE3Qjs7QUFDQSxNQUFNTSxlQUFlLEdBQUdOLE9BQU8sQ0FBQyxnQ0FBRCxDQUEvQjs7QUFFQSxNQUFNTyxtQkFBbUIsR0FBR1IsT0FBTyxDQUFDUyxNQUFSLEVBQTVCO0FBRUFELG1CQUFtQixDQUFDRSxHQUFwQixDQUF3QlIsVUFBVSxDQUFDUyxJQUFYLEVBQXhCLEUsQ0FFQTtBQUVBO0FBRUE7O0FBRUFILG1CQUFtQixDQUFDSSxLQUFwQixDQUEwQixHQUExQixFQUNLQyxPQURMLENBQ2FWLElBQUksQ0FBQ1csZUFEbEIsRUFDbUMsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEtBQWM7QUFBRUEsRUFBQUEsR0FBRyxDQUFDQyxVQUFKLENBQWUsR0FBZjtBQUFzQixDQUR6RSxFQUVLQyxHQUZMLENBRVNmLElBQUksQ0FBQ0EsSUFGZCxFQUVvQkUsWUFBWSxDQUFDYyxVQUZqQyxFQUU2Q1osZUFBZSxDQUFDYSxvQkFGN0QsRUFHS0MsSUFITCxDQUdVbEIsSUFBSSxDQUFDVyxlQUhmLEVBR2dDVCxZQUFZLENBQUNjLFVBSDdDLEVBR3lEZCxZQUFZLENBQUNpQixXQUh0RSxFQUdtRmYsZUFBZSxDQUFDZ0IsZ0JBSG5HLEVBSUtDLEdBSkwsQ0FJU3JCLElBQUksQ0FBQ1csZUFKZCxFQUkrQixDQUFDQyxHQUFELEVBQU1DLEdBQU4sRUFBV1MsSUFBWCxLQUFvQjtBQUMzQ1QsRUFBQUEsR0FBRyxDQUFDVSxVQUFKLEdBQWlCLEdBQWpCO0FBQ0FWLEVBQUFBLEdBQUcsQ0FBQ1csR0FBSixDQUFRLGdEQUFSO0FBQ0gsQ0FQTCxFQVFLQyxNQVJMLENBUVl6QixJQUFJLENBQUNXLGVBUmpCLEVBUWtDVCxZQUFZLENBQUNjLFVBUi9DLEVBUTJEZCxZQUFZLENBQUNpQixXQVJ4RSxFQVFxRmYsZUFBZSxDQUFDc0IsdUJBUnJHO0FBU0FyQixtQkFBbUIsQ0FBQ0ksS0FBcEIsQ0FBMEIsU0FBMUIsRUFDS0MsT0FETCxDQUNhVixJQUFJLENBQUNXLGVBRGxCLEVBQ21DLENBQUNDLEdBQUQsRUFBTUMsR0FBTixLQUFjO0FBQUVBLEVBQUFBLEdBQUcsQ0FBQ0MsVUFBSixDQUFlLEdBQWY7QUFBc0IsQ0FEekUsRUFFS0ksSUFGTCxDQUVVbEIsSUFBSSxDQUFDVyxlQUZmLEVBRWdDVCxZQUFZLENBQUNjLFVBRjdDLEVBRXlEWixlQUFlLENBQUN1QiwwQkFGekUsRSxDQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUF0QixtQkFBbUIsQ0FBQ0ksS0FBcEIsQ0FBMEIsbUJBQTFCLEVBQ0tDLE9BREwsQ0FDYVYsSUFBSSxDQUFDVyxlQURsQixFQUNtQyxDQUFDQyxHQUFELEVBQU1DLEdBQU4sS0FBYztBQUFFQSxFQUFBQSxHQUFHLENBQUNDLFVBQUosQ0FBZSxHQUFmO0FBQXNCLENBRHpFLEVBRUtDLEdBRkwsQ0FFU2YsSUFBSSxDQUFDQSxJQUZkLEVBRW9CRSxZQUFZLENBQUNjLFVBRmpDLEVBRTZDWixlQUFlLENBQUN3QiwyQkFGN0QsRUFHS1YsSUFITCxDQUdVbEIsSUFBSSxDQUFDVyxlQUhmLEVBR2dDLENBQUNDLEdBQUQsRUFBTUMsR0FBTixFQUFXUyxJQUFYLEtBQW9CO0FBQzVDVCxFQUFBQSxHQUFHLENBQUNVLFVBQUosR0FBaUIsR0FBakI7QUFDQVYsRUFBQUEsR0FBRyxDQUFDVyxHQUFKLENBQVEscURBQXFEWixHQUFHLENBQUNpQixNQUFKLENBQVdDLGVBQXhFO0FBQ0gsQ0FOTCxFQU9LVCxHQVBMLENBT1NyQixJQUFJLENBQUNXLGVBUGQsRUFPK0JULFlBQVksQ0FBQ2MsVUFQNUMsRUFPd0RkLFlBQVksQ0FBQ2lCLFdBUHJFLEVBT2tGZixlQUFlLENBQUMyQiw4QkFQbEcsRUFRS04sTUFSTCxDQVFZekIsSUFBSSxDQUFDVyxlQVJqQixFQVFrQ1QsWUFBWSxDQUFDYyxVQVIvQyxFQVEyRGQsWUFBWSxDQUFDaUIsV0FSeEUsRUFRcUZmLGVBQWUsQ0FBQzRCLHdCQVJyRztBQVVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUI3QixtQkFBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBleHByZXNzID0gcmVxdWlyZSgnZXhwcmVzcycpO1xyXG5jb25zdCBib2R5UGFyc2VyID0gcmVxdWlyZSgnYm9keS1wYXJzZXInKTtcclxuXHJcbmNvbnN0IGNvcnMgPSByZXF1aXJlKCcuL2NvcnMnKTtcclxuY29uc3QgeyBjaGVja1NjaGVtYSB9ID0gcmVxdWlyZSgnZXhwcmVzcy12YWxpZGF0b3InKTtcclxudmFyIGF1dGhlbnRpY2F0ZSA9IHJlcXVpcmUoJy4uL21pZGRsZXdhcmUvYXV0aGVudGljYXRlJyk7XHJcbnZhciB2YWxpZGF0aW9uUnVsZXMgPSByZXF1aXJlKCcuLi9taWRkbGV3YXJlL3ZhbGlkYXRpb24nKTtcclxuY29uc3QgcGxhY2VDb250cm9sbGVyID0gcmVxdWlyZSgnLi4vY29udHJvbGxlcnMvcGxhY2VDb250cm9sbGVyJyk7XHJcblxyXG5jb25zdCB2aXNpdGluZ1BsYWNlUm91dGVyID0gZXhwcmVzcy5Sb3V0ZXIoKTtcclxuXHJcbnZpc2l0aW5nUGxhY2VSb3V0ZXIudXNlKGJvZHlQYXJzZXIuanNvbigpKTtcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbi8vICAgICAgICAgICAgICBWaXNpdGluZyBQbGFjZSBSb3V0ZXNcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbnZpc2l0aW5nUGxhY2VSb3V0ZXIucm91dGUoJy8nKVxyXG4gICAgLm9wdGlvbnMoY29ycy5jb3JzV2l0aE9wdGlvbnMsIChyZXEsIHJlcykgPT4geyByZXMuc2VuZFN0YXR1cygyMDApOyB9KVxyXG4gICAgLmdldChjb3JzLmNvcnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCBwbGFjZUNvbnRyb2xsZXIuZ2V0QWxsVmlzaXRpbmdQbGFjZXMpXHJcbiAgICAucG9zdChjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgcGxhY2VDb250cm9sbGVyLmFkZFZpc2l0aW5nUGxhY2UpXHJcbiAgICAucHV0KGNvcnMuY29yc1dpdGhPcHRpb25zLCAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwMztcclxuICAgICAgICByZXMuZW5kKCdQVVQgb3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQgb24gL3Zpc2l0aW5nUGxhY2VzJyk7XHJcbiAgICB9KVxyXG4gICAgLmRlbGV0ZShjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgcGxhY2VDb250cm9sbGVyLmRlbGV0ZUFsbFZpc2l0aW5nUGxhY2VzKTtcclxudmlzaXRpbmdQbGFjZVJvdXRlci5yb3V0ZSgnL3NlYXJjaCcpXHJcbiAgICAub3B0aW9ucyhjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcbiAgICAucG9zdChjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIHBsYWNlQ29udHJvbGxlci5nZXRBbGxWaXNpdGluZ1BsYWNlc0J5TmFtZSk7XHJcblxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbi8vIFxyXG4vLyAgICAgICAgICAgICAgVmlzaXRpbmcgUGxhY2UgUm91dGVzIE9uIElEXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG52aXNpdGluZ1BsYWNlUm91dGVyLnJvdXRlKCcvOnZpc2l0aW5nUGxhY2VJZCcpXHJcbiAgICAub3B0aW9ucyhjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcbiAgICAuZ2V0KGNvcnMuY29ycywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIHBsYWNlQ29udHJvbGxlci5nZXRWaXNpdGluZ1BsYWNlRGV0YWlsc0J5SWQpXHJcbiAgICAucG9zdChjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgcmVzLmVuZCgnUE9TVCBvcGVyYXRpb24gbm90IHN1cHBvcnRlZCBvbiAvdmlzaXRpbmdQbGFjZXMvJyArIHJlcS5wYXJhbXMudmlzaXRpbmdQbGFjZUlkKTtcclxuICAgIH0pXHJcbiAgICAucHV0KGNvcnMuY29yc1dpdGhPcHRpb25zLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeUFkbWluLCBwbGFjZUNvbnRyb2xsZXIudXBkYXRlVmlzaXRpbmdQbGFjZURldGFpbHNCeUlkKVxyXG4gICAgLmRlbGV0ZShjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgcGxhY2VDb250cm9sbGVyLmRlbGV0ZUFWaXNpdGluZ1BsYWNlQnlJZCk7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IHZpc2l0aW5nUGxhY2VSb3V0ZXI7XHJcbiJdfQ==\",\"originalCode\":\"const express = require('express');\\r\\nconst bodyParser = require('body-parser');\\r\\n\\r\\nconst cors = require('./cors');\\r\\nconst { checkSchema } = require('express-validator');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\nvar validationRules = require('../middleware/validation');\\r\\nconst placeController = require('../controllers/placeController');\\r\\n\\r\\nconst visitingPlaceRouter = express.Router();\\r\\n\\r\\nvisitingPlaceRouter.use(bodyParser.json());\\r\\n\\r\\n// **********************************************************************************\\r\\n\\r\\n// Visiting Place Routes\\r\\n\\r\\n// **********************************************************************************\\r\\n\\r\\nvisitingPlaceRouter.route('/')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, placeController.getAllVisitingPlaces)\\r\\n .post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.addVisitingPlace)\\r\\n .put(cors.corsWithOptions, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('PUT operation not supported on /visitingPlaces');\\r\\n })\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.deleteAllVisitingPlaces);\\r\\nvisitingPlaceRouter.route('/search')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .post(cors.corsWithOptions, authenticate.verifyUser, placeController.getAllVisitingPlacesByName);\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Visiting Place Routes On ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nvisitingPlaceRouter.route('/:visitingPlaceId')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, placeController.getVisitingPlaceDetailsById)\\r\\n .post(cors.corsWithOptions, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('POST operation not supported on /visitingPlaces/' + req.params.visitingPlaceId);\\r\\n })\\r\\n .put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.updateVisitingPlaceDetailsById)\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.deleteAVisitingPlaceById);\\r\\n\\r\\nmodule.exports = visitingPlaceRouter;\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/9d/placeRouter_9d9aca2c41f2c1b6283bdacdd67537b2.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2539\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\placeRouter.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":9353,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":9350,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":809,\"endOffset\":849,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1067,\"endOffset\":1175,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1366,\"endOffset\":1406,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1807,\"endOffset\":1847,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1961,\"endOffset\":2100,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const VisitingPlaces = require('../models/visitingPlaces'); // **********************************************************************************\\n// \\n// Visiting Place Operations \\n// \\n// **********************************************************************************\\n\\n\\nconst getAllVisitingPlaces = (req, res, next) => {\\n var query = {};\\n VisitingPlaces.find(query, 'name description distance location timeToReach image travellingMethods').then(visitingPlaces => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n visitingPlaces: visitingPlaces\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst getAllVisitingPlacesByName = (req, res, next) => {\\n var query = {};\\n\\n if (req.body.similarTo) {\\n query = {\\n name: {\\n $regex: `${req.body.similarTo}`,\\n $options: \\\"i\\\"\\n }\\n };\\n }\\n\\n VisitingPlaces.find(query, 'name description distance location timeToReach image travellingMethods').then(visitingPlaces => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n visitingPlaces: visitingPlaces\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst addVisitingPlace = (req, res, next) => {\\n var imagesArray = []; // files = req.files;\\n // files.forEach(file => {\\n // imagesArray.push(file.filename);\\n // });\\n\\n var place = {\\n name: req.body.name,\\n description: req.body.description,\\n location: {\\n coordinates: req.body.location.coordinates\\n },\\n distance: req.body.distance,\\n timeToReach: req.body.timeToReach,\\n images: imagesArray,\\n travellingMethods: req.body.methods\\n };\\n VisitingPlaces.create(place).then(visitingPlace => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n visitingPlace: visitingPlace\\n });\\n }, err => {\\n res.statusCode = 403;\\n res.setHeader('Content-Type', 'application/json');\\n const msg = err.driver ? \\\"Duplicate Key\\\" : err._message;\\n res.json({\\n success: false,\\n message: msg\\n });\\n }).catch(err => next(err));\\n};\\n\\nconst deleteAllVisitingPlaces = (req, res, next) => {\\n VisitingPlaces.remove({}).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json(resp);\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nexports.getAllVisitingPlaces = getAllVisitingPlaces;\\nexports.getAllVisitingPlacesByName = getAllVisitingPlacesByName;\\nexports.addVisitingPlace = addVisitingPlace;\\nexports.deleteAllVisitingPlaces = deleteAllVisitingPlaces; // **********************************************************************************\\n// \\n// Visiting Place Operations Specified by ID\\n// \\n// **********************************************************************************\\n\\nconst getVisitingPlaceDetailsById = (req, res, next) => {\\n VisitingPlaces.findById(req.params.visitingPlaceId).then(visitingPlace => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n visitingPlace: visitingPlace\\n });\\n }, err => {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: \\\"Could not find the place\\\"\\n });\\n }).catch(err => next(err));\\n};\\n\\nconst updateVisitingPlaceDetailsById = (req, res, next) => {\\n VisitingPlaces.findByIdAndUpdate(req.params.visitingPlaceId, {\\n $set: req.body\\n }, {\\n new: true\\n }).then(visitingPlace => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n visitingPlace: visitingPlace\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst deleteAVisitingPlaceById = (req, res, next) => {\\n VisitingPlaces.findByIdAndRemove(req.params.visitingPlaceId).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n response: resp\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nexports.getVisitingPlaceDetailsById = getVisitingPlaceDetailsById;\\nexports.updateVisitingPlaceDetailsById = updateVisitingPlaceDetailsById;\\nexports.deleteAVisitingPlaceById = deleteAVisitingPlaceById;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBsYWNlQ29udHJvbGxlci5qcyJdLCJuYW1lcyI6WyJWaXNpdGluZ1BsYWNlcyIsInJlcXVpcmUiLCJnZXRBbGxWaXNpdGluZ1BsYWNlcyIsInJlcSIsInJlcyIsIm5leHQiLCJxdWVyeSIsImZpbmQiLCJ0aGVuIiwidmlzaXRpbmdQbGFjZXMiLCJzdGF0dXNDb2RlIiwic2V0SGVhZGVyIiwianNvbiIsInN1Y2Nlc3MiLCJlcnIiLCJjYXRjaCIsImdldEFsbFZpc2l0aW5nUGxhY2VzQnlOYW1lIiwiYm9keSIsInNpbWlsYXJUbyIsIm5hbWUiLCIkcmVnZXgiLCIkb3B0aW9ucyIsImFkZFZpc2l0aW5nUGxhY2UiLCJpbWFnZXNBcnJheSIsInBsYWNlIiwiZGVzY3JpcHRpb24iLCJsb2NhdGlvbiIsImNvb3JkaW5hdGVzIiwiZGlzdGFuY2UiLCJ0aW1lVG9SZWFjaCIsImltYWdlcyIsInRyYXZlbGxpbmdNZXRob2RzIiwibWV0aG9kcyIsImNyZWF0ZSIsInZpc2l0aW5nUGxhY2UiLCJtc2ciLCJkcml2ZXIiLCJfbWVzc2FnZSIsIm1lc3NhZ2UiLCJkZWxldGVBbGxWaXNpdGluZ1BsYWNlcyIsInJlbW92ZSIsInJlc3AiLCJleHBvcnRzIiwiZ2V0VmlzaXRpbmdQbGFjZURldGFpbHNCeUlkIiwiZmluZEJ5SWQiLCJwYXJhbXMiLCJ2aXNpdGluZ1BsYWNlSWQiLCJ1cGRhdGVWaXNpdGluZ1BsYWNlRGV0YWlsc0J5SWQiLCJmaW5kQnlJZEFuZFVwZGF0ZSIsIiRzZXQiLCJuZXciLCJkZWxldGVBVmlzaXRpbmdQbGFjZUJ5SWQiLCJmaW5kQnlJZEFuZFJlbW92ZSIsInJlc3BvbnNlIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxjQUFjLEdBQUdDLE9BQU8sQ0FBQywwQkFBRCxDQUE5QixDLENBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUEsTUFBTUMsb0JBQW9CLEdBQUcsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDN0MsTUFBSUMsS0FBSyxHQUFHLEVBQVo7QUFDQU4sRUFBQUEsY0FBYyxDQUFDTyxJQUFmLENBQW9CRCxLQUFwQixFQUEyQix3RUFBM0IsRUFDS0UsSUFETCxDQUNXQyxjQUFELElBQW9CO0FBQ3RCTCxJQUFBQSxHQUFHLENBQUNNLFVBQUosR0FBaUIsR0FBakI7QUFDQU4sSUFBQUEsR0FBRyxDQUFDTyxTQUFKLENBQWMsY0FBZCxFQUE4QixrQkFBOUI7QUFDQVAsSUFBQUEsR0FBRyxDQUFDUSxJQUFKLENBQVM7QUFBRUMsTUFBQUEsT0FBTyxFQUFFLElBQVg7QUFBaUJKLE1BQUFBLGNBQWMsRUFBRUE7QUFBakMsS0FBVDtBQUNILEdBTEwsRUFLUUssR0FBRCxJQUFTVCxJQUFJLENBQUNTLEdBQUQsQ0FMcEIsRUFNS0MsS0FOTCxDQU1ZRCxHQUFELElBQVNULElBQUksQ0FBQ1MsR0FBRCxDQU54QjtBQU9ILENBVEQ7O0FBV0EsTUFBTUUsMEJBQTBCLEdBQUcsQ0FBQ2IsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDbkQsTUFBSUMsS0FBSyxHQUFHLEVBQVo7O0FBQ0EsTUFBSUgsR0FBRyxDQUFDYyxJQUFKLENBQVNDLFNBQWIsRUFBd0I7QUFDcEJaLElBQUFBLEtBQUssR0FBRztBQUFFYSxNQUFBQSxJQUFJLEVBQUU7QUFBRUMsUUFBQUEsTUFBTSxFQUFHLEdBQUVqQixHQUFHLENBQUNjLElBQUosQ0FBU0MsU0FBVSxFQUFoQztBQUFtQ0csUUFBQUEsUUFBUSxFQUFFO0FBQTdDO0FBQVIsS0FBUjtBQUNIOztBQUNEckIsRUFBQUEsY0FBYyxDQUFDTyxJQUFmLENBQW9CRCxLQUFwQixFQUEyQix3RUFBM0IsRUFDS0UsSUFETCxDQUNXQyxjQUFELElBQW9CO0FBQ3RCTCxJQUFBQSxHQUFHLENBQUNNLFVBQUosR0FBaUIsR0FBakI7QUFDQU4sSUFBQUEsR0FBRyxDQUFDTyxTQUFKLENBQWMsY0FBZCxFQUE4QixrQkFBOUI7QUFDQVAsSUFBQUEsR0FBRyxDQUFDUSxJQUFKLENBQVM7QUFBRUMsTUFBQUEsT0FBTyxFQUFFLElBQVg7QUFBaUJKLE1BQUFBLGNBQWMsRUFBRUE7QUFBakMsS0FBVDtBQUNILEdBTEwsRUFLUUssR0FBRCxJQUFTVCxJQUFJLENBQUNTLEdBQUQsQ0FMcEIsRUFNS0MsS0FOTCxDQU1ZRCxHQUFELElBQVNULElBQUksQ0FBQ1MsR0FBRCxDQU54QjtBQU9ILENBWkQ7O0FBY0EsTUFBTVEsZ0JBQWdCLEdBQUcsQ0FBQ25CLEdBQUQsRUFBTUMsR0FBTixFQUFXQyxJQUFYLEtBQW9CO0FBQ3pDLE1BQUlrQixXQUFXLEdBQUcsRUFBbEIsQ0FEeUMsQ0FFekM7QUFDQTtBQUNBO0FBQ0E7O0FBQ0EsTUFBSUMsS0FBSyxHQUNUO0FBQ0lMLElBQUFBLElBQUksRUFBRWhCLEdBQUcsQ0FBQ2MsSUFBSixDQUFTRSxJQURuQjtBQUVJTSxJQUFBQSxXQUFXLEVBQUV0QixHQUFHLENBQUNjLElBQUosQ0FBU1EsV0FGMUI7QUFHSUMsSUFBQUEsUUFBUSxFQUFFO0FBQ05DLE1BQUFBLFdBQVcsRUFBRXhCLEdBQUcsQ0FBQ2MsSUFBSixDQUFTUyxRQUFULENBQWtCQztBQUR6QixLQUhkO0FBTUlDLElBQUFBLFFBQVEsRUFBRXpCLEdBQUcsQ0FBQ2MsSUFBSixDQUFTVyxRQU52QjtBQU9JQyxJQUFBQSxXQUFXLEVBQUUxQixHQUFHLENBQUNjLElBQUosQ0FBU1ksV0FQMUI7QUFRSUMsSUFBQUEsTUFBTSxFQUFFUCxXQVJaO0FBU0lRLElBQUFBLGlCQUFpQixFQUFFNUIsR0FBRyxDQUFDYyxJQUFKLENBQVNlO0FBVGhDLEdBREE7QUFZQWhDLEVBQUFBLGNBQWMsQ0FBQ2lDLE1BQWYsQ0FBc0JULEtBQXRCLEVBQ0toQixJQURMLENBQ1cwQixhQUFELElBQW1CO0FBQ3JCOUIsSUFBQUEsR0FBRyxDQUFDTSxVQUFKLEdBQWlCLEdBQWpCO0FBQ0FOLElBQUFBLEdBQUcsQ0FBQ08sU0FBSixDQUFjLGNBQWQsRUFBOEIsa0JBQTlCO0FBQ0FQLElBQUFBLEdBQUcsQ0FBQ1EsSUFBSixDQUFTO0FBQUVDLE1BQUFBLE9BQU8sRUFBRSxJQUFYO0FBQWlCcUIsTUFBQUEsYUFBYSxFQUFFQTtBQUFoQyxLQUFUO0FBQ0gsR0FMTCxFQUtRcEIsR0FBRCxJQUFTO0FBQ1JWLElBQUFBLEdBQUcsQ0FBQ00sVUFBSixHQUFpQixHQUFqQjtBQUNBTixJQUFBQSxHQUFHLENBQUNPLFNBQUosQ0FBYyxjQUFkLEVBQThCLGtCQUE5QjtBQUNBLFVBQU13QixHQUFHLEdBQUdyQixHQUFHLENBQUNzQixNQUFKLEdBQWEsZUFBYixHQUErQnRCLEdBQUcsQ0FBQ3VCLFFBQS9DO0FBQ0FqQyxJQUFBQSxHQUFHLENBQUNRLElBQUosQ0FBUztBQUFFQyxNQUFBQSxPQUFPLEVBQUUsS0FBWDtBQUFrQnlCLE1BQUFBLE9BQU8sRUFBRUg7QUFBM0IsS0FBVDtBQUNILEdBVkwsRUFXS3BCLEtBWEwsQ0FXWUQsR0FBRCxJQUFTVCxJQUFJLENBQUNTLEdBQUQsQ0FYeEI7QUFZSCxDQTlCRDs7QUFnQ0EsTUFBTXlCLHVCQUF1QixHQUFHLENBQUNwQyxHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUNoREwsRUFBQUEsY0FBYyxDQUFDd0MsTUFBZixDQUFzQixFQUF0QixFQUNLaEMsSUFETCxDQUNXaUMsSUFBRCxJQUFVO0FBQ1pyQyxJQUFBQSxHQUFHLENBQUNNLFVBQUosR0FBaUIsR0FBakI7QUFDQU4sSUFBQUEsR0FBRyxDQUFDTyxTQUFKLENBQWMsY0FBZCxFQUE4QixrQkFBOUI7QUFDQVAsSUFBQUEsR0FBRyxDQUFDUSxJQUFKLENBQVM2QixJQUFUO0FBQ0gsR0FMTCxFQUtRM0IsR0FBRCxJQUFTVCxJQUFJLENBQUNTLEdBQUQsQ0FMcEIsRUFNS0MsS0FOTCxDQU1ZRCxHQUFELElBQVNULElBQUksQ0FBQ1MsR0FBRCxDQU54QjtBQU9ILENBUkQ7O0FBVUE0QixPQUFPLENBQUN4QyxvQkFBUixHQUErQkEsb0JBQS9CO0FBQ0F3QyxPQUFPLENBQUMxQiwwQkFBUixHQUFxQ0EsMEJBQXJDO0FBQ0EwQixPQUFPLENBQUNwQixnQkFBUixHQUEyQkEsZ0JBQTNCO0FBQ0FvQixPQUFPLENBQUNILHVCQUFSLEdBQWtDQSx1QkFBbEMsQyxDQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsTUFBTUksMkJBQTJCLEdBQUcsQ0FBQ3hDLEdBQUQsRUFBTUMsR0FBTixFQUFXQyxJQUFYLEtBQW9CO0FBQ3BETCxFQUFBQSxjQUFjLENBQUM0QyxRQUFmLENBQXdCekMsR0FBRyxDQUFDMEMsTUFBSixDQUFXQyxlQUFuQyxFQUNLdEMsSUFETCxDQUNXMEIsYUFBRCxJQUFtQjtBQUNyQjlCLElBQUFBLEdBQUcsQ0FBQ00sVUFBSixHQUFpQixHQUFqQjtBQUNBTixJQUFBQSxHQUFHLENBQUNPLFNBQUosQ0FBYyxjQUFkLEVBQThCLGtCQUE5QjtBQUNBUCxJQUFBQSxHQUFHLENBQUNRLElBQUosQ0FBUztBQUFFQyxNQUFBQSxPQUFPLEVBQUUsSUFBWDtBQUFpQnFCLE1BQUFBLGFBQWEsRUFBRUE7QUFBaEMsS0FBVDtBQUNILEdBTEwsRUFLUXBCLEdBQUQsSUFBUztBQUNSVixJQUFBQSxHQUFHLENBQUNNLFVBQUosR0FBaUIsR0FBakI7QUFDQU4sSUFBQUEsR0FBRyxDQUFDTyxTQUFKLENBQWMsY0FBZCxFQUE4QixrQkFBOUI7QUFDQVAsSUFBQUEsR0FBRyxDQUFDUSxJQUFKLENBQVM7QUFBRUMsTUFBQUEsT0FBTyxFQUFFLEtBQVg7QUFBa0J5QixNQUFBQSxPQUFPLEVBQUU7QUFBM0IsS0FBVDtBQUNILEdBVEwsRUFVS3ZCLEtBVkwsQ0FVWUQsR0FBRCxJQUFTVCxJQUFJLENBQUNTLEdBQUQsQ0FWeEI7QUFXSCxDQVpEOztBQWNBLE1BQU1pQyw4QkFBOEIsR0FBRyxDQUFDNUMsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDdkRMLEVBQUFBLGNBQWMsQ0FBQ2dELGlCQUFmLENBQWlDN0MsR0FBRyxDQUFDMEMsTUFBSixDQUFXQyxlQUE1QyxFQUE2RDtBQUN6REcsSUFBQUEsSUFBSSxFQUFFOUMsR0FBRyxDQUFDYztBQUQrQyxHQUE3RCxFQUVHO0FBQUVpQyxJQUFBQSxHQUFHLEVBQUU7QUFBUCxHQUZILEVBR0sxQyxJQUhMLENBR1cwQixhQUFELElBQW1CO0FBQ3JCOUIsSUFBQUEsR0FBRyxDQUFDTSxVQUFKLEdBQWlCLEdBQWpCO0FBQ0FOLElBQUFBLEdBQUcsQ0FBQ08sU0FBSixDQUFjLGNBQWQsRUFBOEIsa0JBQTlCO0FBQ0FQLElBQUFBLEdBQUcsQ0FBQ1EsSUFBSixDQUFTO0FBQUVDLE1BQUFBLE9BQU8sRUFBRSxJQUFYO0FBQWlCcUIsTUFBQUEsYUFBYSxFQUFFQTtBQUFoQyxLQUFUO0FBQ0gsR0FQTCxFQU9RcEIsR0FBRCxJQUFTVCxJQUFJLENBQUNTLEdBQUQsQ0FQcEIsRUFRS0MsS0FSTCxDQVFZRCxHQUFELElBQVNULElBQUksQ0FBQ1MsR0FBRCxDQVJ4QjtBQVNILENBVkQ7O0FBWUEsTUFBTXFDLHdCQUF3QixHQUFHLENBQUNoRCxHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUNqREwsRUFBQUEsY0FBYyxDQUFDb0QsaUJBQWYsQ0FBaUNqRCxHQUFHLENBQUMwQyxNQUFKLENBQVdDLGVBQTVDLEVBQ0t0QyxJQURMLENBQ1dpQyxJQUFELElBQVU7QUFDWnJDLElBQUFBLEdBQUcsQ0FBQ00sVUFBSixHQUFpQixHQUFqQjtBQUNBTixJQUFBQSxHQUFHLENBQUNPLFNBQUosQ0FBYyxjQUFkLEVBQThCLGtCQUE5QjtBQUNBUCxJQUFBQSxHQUFHLENBQUNRLElBQUosQ0FBUztBQUFFQyxNQUFBQSxPQUFPLEVBQUUsSUFBWDtBQUFpQndDLE1BQUFBLFFBQVEsRUFBRVo7QUFBM0IsS0FBVDtBQUNILEdBTEwsRUFLUTNCLEdBQUQsSUFBU1QsSUFBSSxDQUFDUyxHQUFELENBTHBCLEVBTUtDLEtBTkwsQ0FNWUQsR0FBRCxJQUFTVCxJQUFJLENBQUNTLEdBQUQsQ0FOeEI7QUFPSCxDQVJEOztBQVVBNEIsT0FBTyxDQUFDQywyQkFBUixHQUFzQ0EsMkJBQXRDO0FBQ0FELE9BQU8sQ0FBQ0ssOEJBQVIsR0FBeUNBLDhCQUF6QztBQUNBTCxPQUFPLENBQUNTLHdCQUFSLEdBQW1DQSx3QkFBbkMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBWaXNpdGluZ1BsYWNlcyA9IHJlcXVpcmUoJy4uL21vZGVscy92aXNpdGluZ1BsYWNlcycpO1xyXG5cclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyBcclxuLy8gICAgICAgICAgICAgIFZpc2l0aW5nIFBsYWNlIE9wZXJhdGlvbnMgXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG5jb25zdCBnZXRBbGxWaXNpdGluZ1BsYWNlcyA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgdmFyIHF1ZXJ5ID0ge307XHJcbiAgICBWaXNpdGluZ1BsYWNlcy5maW5kKHF1ZXJ5LCAnbmFtZSBkZXNjcmlwdGlvbiBkaXN0YW5jZSBsb2NhdGlvbiB0aW1lVG9SZWFjaCBpbWFnZSB0cmF2ZWxsaW5nTWV0aG9kcycpXHJcbiAgICAgICAgLnRoZW4oKHZpc2l0aW5nUGxhY2VzKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHZpc2l0aW5nUGxhY2VzOiB2aXNpdGluZ1BsYWNlcyB9KTtcclxuICAgICAgICB9LCAoZXJyKSA9PiBuZXh0KGVycikpXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IG5leHQoZXJyKSk7XHJcbn1cclxuXHJcbmNvbnN0IGdldEFsbFZpc2l0aW5nUGxhY2VzQnlOYW1lID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICB2YXIgcXVlcnkgPSB7fTtcclxuICAgIGlmIChyZXEuYm9keS5zaW1pbGFyVG8pIHtcclxuICAgICAgICBxdWVyeSA9IHsgbmFtZTogeyAkcmVnZXg6IGAke3JlcS5ib2R5LnNpbWlsYXJUb31gLCAkb3B0aW9uczogXCJpXCIgfSB9XHJcbiAgICB9XHJcbiAgICBWaXNpdGluZ1BsYWNlcy5maW5kKHF1ZXJ5LCAnbmFtZSBkZXNjcmlwdGlvbiBkaXN0YW5jZSBsb2NhdGlvbiB0aW1lVG9SZWFjaCBpbWFnZSB0cmF2ZWxsaW5nTWV0aG9kcycpXHJcbiAgICAgICAgLnRoZW4oKHZpc2l0aW5nUGxhY2VzKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHZpc2l0aW5nUGxhY2VzOiB2aXNpdGluZ1BsYWNlcyB9KTtcclxuICAgICAgICB9LCAoZXJyKSA9PiBuZXh0KGVycikpXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IG5leHQoZXJyKSk7XHJcbn1cclxuXHJcbmNvbnN0IGFkZFZpc2l0aW5nUGxhY2UgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHZhciBpbWFnZXNBcnJheSA9IFtdO1xyXG4gICAgLy8gZmlsZXMgPSByZXEuZmlsZXM7XHJcbiAgICAvLyBmaWxlcy5mb3JFYWNoKGZpbGUgPT4ge1xyXG4gICAgLy8gICAgIGltYWdlc0FycmF5LnB1c2goZmlsZS5maWxlbmFtZSk7XHJcbiAgICAvLyB9KTtcclxuICAgIHZhciBwbGFjZSA9XHJcbiAgICB7XHJcbiAgICAgICAgbmFtZTogcmVxLmJvZHkubmFtZSxcclxuICAgICAgICBkZXNjcmlwdGlvbjogcmVxLmJvZHkuZGVzY3JpcHRpb24sXHJcbiAgICAgICAgbG9jYXRpb246IHtcclxuICAgICAgICAgICAgY29vcmRpbmF0ZXM6IHJlcS5ib2R5LmxvY2F0aW9uLmNvb3JkaW5hdGVzXHJcbiAgICAgICAgfSxcclxuICAgICAgICBkaXN0YW5jZTogcmVxLmJvZHkuZGlzdGFuY2UsXHJcbiAgICAgICAgdGltZVRvUmVhY2g6IHJlcS5ib2R5LnRpbWVUb1JlYWNoLFxyXG4gICAgICAgIGltYWdlczogaW1hZ2VzQXJyYXksXHJcbiAgICAgICAgdHJhdmVsbGluZ01ldGhvZHM6IHJlcS5ib2R5Lm1ldGhvZHNcclxuICAgIH1cclxuICAgIFZpc2l0aW5nUGxhY2VzLmNyZWF0ZShwbGFjZSlcclxuICAgICAgICAudGhlbigodmlzaXRpbmdQbGFjZSkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCB2aXNpdGluZ1BsYWNlOiB2aXNpdGluZ1BsYWNlIH0pO1xyXG4gICAgICAgIH0sIChlcnIpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIGNvbnN0IG1zZyA9IGVyci5kcml2ZXIgPyBcIkR1cGxpY2F0ZSBLZXlcIiA6IGVyci5fbWVzc2FnZTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogbXNnIH0pO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IG5leHQoZXJyKSk7XHJcbn1cclxuXHJcbmNvbnN0IGRlbGV0ZUFsbFZpc2l0aW5nUGxhY2VzID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICBWaXNpdGluZ1BsYWNlcy5yZW1vdmUoe30pXHJcbiAgICAgICAgLnRoZW4oKHJlc3ApID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHJlc3ApO1xyXG4gICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuZXhwb3J0cy5nZXRBbGxWaXNpdGluZ1BsYWNlcyA9IGdldEFsbFZpc2l0aW5nUGxhY2VzO1xyXG5leHBvcnRzLmdldEFsbFZpc2l0aW5nUGxhY2VzQnlOYW1lID0gZ2V0QWxsVmlzaXRpbmdQbGFjZXNCeU5hbWU7XHJcbmV4cG9ydHMuYWRkVmlzaXRpbmdQbGFjZSA9IGFkZFZpc2l0aW5nUGxhY2U7XHJcbmV4cG9ydHMuZGVsZXRlQWxsVmlzaXRpbmdQbGFjZXMgPSBkZWxldGVBbGxWaXNpdGluZ1BsYWNlcztcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuLy8gXHJcbi8vICAgICAgICAgICAgICBWaXNpdGluZyBQbGFjZSBPcGVyYXRpb25zIFNwZWNpZmllZCBieSBJRFxyXG4vLyBcclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuY29uc3QgZ2V0VmlzaXRpbmdQbGFjZURldGFpbHNCeUlkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICBWaXNpdGluZ1BsYWNlcy5maW5kQnlJZChyZXEucGFyYW1zLnZpc2l0aW5nUGxhY2VJZClcclxuICAgICAgICAudGhlbigodmlzaXRpbmdQbGFjZSkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCB2aXNpdGluZ1BsYWNlOiB2aXNpdGluZ1BsYWNlIH0pO1xyXG4gICAgICAgIH0sIChlcnIpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDQ7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogZmFsc2UsIG1lc3NhZ2U6IFwiQ291bGQgbm90IGZpbmQgdGhlIHBsYWNlXCIgfSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuY29uc3QgdXBkYXRlVmlzaXRpbmdQbGFjZURldGFpbHNCeUlkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICBWaXNpdGluZ1BsYWNlcy5maW5kQnlJZEFuZFVwZGF0ZShyZXEucGFyYW1zLnZpc2l0aW5nUGxhY2VJZCwge1xyXG4gICAgICAgICRzZXQ6IHJlcS5ib2R5XHJcbiAgICB9LCB7IG5ldzogdHJ1ZSB9KVxyXG4gICAgICAgIC50aGVuKCh2aXNpdGluZ1BsYWNlKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHZpc2l0aW5nUGxhY2U6IHZpc2l0aW5nUGxhY2UgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpO1xyXG59XHJcblxyXG5jb25zdCBkZWxldGVBVmlzaXRpbmdQbGFjZUJ5SWQgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIFZpc2l0aW5nUGxhY2VzLmZpbmRCeUlkQW5kUmVtb3ZlKHJlcS5wYXJhbXMudmlzaXRpbmdQbGFjZUlkKVxyXG4gICAgICAgIC50aGVuKChyZXNwKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHJlc3BvbnNlOiByZXNwIH0pO1xyXG4gICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuZXhwb3J0cy5nZXRWaXNpdGluZ1BsYWNlRGV0YWlsc0J5SWQgPSBnZXRWaXNpdGluZ1BsYWNlRGV0YWlsc0J5SWQ7XHJcbmV4cG9ydHMudXBkYXRlVmlzaXRpbmdQbGFjZURldGFpbHNCeUlkID0gdXBkYXRlVmlzaXRpbmdQbGFjZURldGFpbHNCeUlkO1xyXG5leHBvcnRzLmRlbGV0ZUFWaXNpdGluZ1BsYWNlQnlJZCA9IGRlbGV0ZUFWaXNpdGluZ1BsYWNlQnlJZDsiXX0=\",\"originalCode\":\"const VisitingPlaces = require('../models/visitingPlaces');\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Visiting Place Operations \\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nconst getAllVisitingPlaces = (req, res, next) => {\\r\\n var query = {};\\r\\n VisitingPlaces.find(query, 'name description distance location timeToReach image travellingMethods')\\r\\n .then((visitingPlaces) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, visitingPlaces: visitingPlaces });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst getAllVisitingPlacesByName = (req, res, next) => {\\r\\n var query = {};\\r\\n if (req.body.similarTo) {\\r\\n query = { name: { $regex: `${req.body.similarTo}`, $options: \\\"i\\\" } }\\r\\n }\\r\\n VisitingPlaces.find(query, 'name description distance location timeToReach image travellingMethods')\\r\\n .then((visitingPlaces) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, visitingPlaces: visitingPlaces });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst addVisitingPlace = (req, res, next) => {\\r\\n var imagesArray = [];\\r\\n // files = req.files;\\r\\n // files.forEach(file => {\\r\\n // imagesArray.push(file.filename);\\r\\n // });\\r\\n var place =\\r\\n {\\r\\n name: req.body.name,\\r\\n description: req.body.description,\\r\\n location: {\\r\\n coordinates: req.body.location.coordinates\\r\\n },\\r\\n distance: req.body.distance,\\r\\n timeToReach: req.body.timeToReach,\\r\\n images: imagesArray,\\r\\n travellingMethods: req.body.methods\\r\\n }\\r\\n VisitingPlaces.create(place)\\r\\n .then((visitingPlace) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, visitingPlace: visitingPlace });\\r\\n }, (err) => {\\r\\n res.statusCode = 403;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n const msg = err.driver ? \\\"Duplicate Key\\\" : err._message;\\r\\n res.json({ success: false, message: msg });\\r\\n })\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst deleteAllVisitingPlaces = (req, res, next) => {\\r\\n VisitingPlaces.remove({})\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json(resp);\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nexports.getAllVisitingPlaces = getAllVisitingPlaces;\\r\\nexports.getAllVisitingPlacesByName = getAllVisitingPlacesByName;\\r\\nexports.addVisitingPlace = addVisitingPlace;\\r\\nexports.deleteAllVisitingPlaces = deleteAllVisitingPlaces;\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Visiting Place Operations Specified by ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nconst getVisitingPlaceDetailsById = (req, res, next) => {\\r\\n VisitingPlaces.findById(req.params.visitingPlaceId)\\r\\n .then((visitingPlace) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, visitingPlace: visitingPlace });\\r\\n }, (err) => {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: \\\"Could not find the place\\\" });\\r\\n })\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst updateVisitingPlaceDetailsById = (req, res, next) => {\\r\\n VisitingPlaces.findByIdAndUpdate(req.params.visitingPlaceId, {\\r\\n $set: req.body\\r\\n }, { new: true })\\r\\n .then((visitingPlace) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, visitingPlace: visitingPlace });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst deleteAVisitingPlaceById = (req, res, next) => {\\r\\n VisitingPlaces.findByIdAndRemove(req.params.visitingPlaceId)\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, response: resp });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nexports.getVisitingPlaceDetailsById = getVisitingPlaceDetailsById;\\r\\nexports.updateVisitingPlaceDetailsById = updateVisitingPlaceDetailsById;\\r\\nexports.deleteAVisitingPlaceById = deleteAVisitingPlaceById;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/ee/placeController_ee3a20e34d4d356553af723b6f7f6a6e.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2540\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\placeController.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":18578,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":18575,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"getAllVisitingPlaces\",\"ranges\":[{\"startOffset\":403,\"endOffset\":782,\"count\":2}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":551,\"endOffset\":736,\"count\":2}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":738,\"endOffset\":754,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":762,\"endOffset\":778,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getAllVisitingPlacesByName\",\"ranges\":[{\"startOffset\":820,\"endOffset\":1339,\"count\":3},{\"startOffset\":887,\"endOffset\":998,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1108,\"endOffset\":1293,\"count\":3}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1295,\"endOffset\":1311,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1319,\"endOffset\":1335,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"addVisitingPlace\",\"ranges\":[{\"startOffset\":1367,\"endOffset\":2276,\"count\":3}],\"isBlockCoverage\":true},{\"functionName\":\"VisitingPlaces.create.then.res.statusCode\",\"ranges\":[{\"startOffset\":1846,\"endOffset\":2028,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":2030,\"endOffset\":2248,\"count\":2},{\"startOffset\":2147,\"endOffset\":2164,\"count\":1},{\"startOffset\":2165,\"endOffset\":2179,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":2256,\"endOffset\":2272,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"deleteAllVisitingPlaces\",\"ranges\":[{\"startOffset\":2311,\"endOffset\":2526,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":2366,\"endOffset\":2480,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":2482,\"endOffset\":2498,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":2506,\"endOffset\":2522,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getVisitingPlaceDetailsById\",\"ranges\":[{\"startOffset\":3026,\"endOffset\":3499,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"updateVisitingPlaceDetailsById\",\"ranges\":[{\"startOffset\":3541,\"endOffset\":3906,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"deleteAVisitingPlaceById\",\"ranges\":[{\"startOffset\":3942,\"endOffset\":4237,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const express = require('express');\\n\\nconst bodyParser = require('body-parser');\\n\\nconst cors = require('./cors');\\n\\nconst {\\n checkSchema\\n} = require('express-validator');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nvar validationRules = require('../middleware/validation');\\n\\nconst scheduleController = require('../controllers/scheduleController');\\n\\nconst scheduleRouter = express.Router();\\nscheduleRouter.use(bodyParser.json()); // **********************************************************************************\\n// \\n// Schedule Routes\\n// \\n// **********************************************************************************\\n\\nscheduleRouter.route('/').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, scheduleController.getAllSchedules).post(cors.corsWithOptions, authenticate.verifyUser, scheduleController.addSchedule).put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('PUT operation not supported on /schedules');\\n}).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, scheduleController.deleteAllSchedules); // **********************************************************************************\\n// \\n// Schedule Routes On ID\\n// \\n// **********************************************************************************\\n\\nscheduleRouter.route('/:scheduleId').options(cors.corsWithOptions, authenticate.verifyUser, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, scheduleController.getScheduleDetailsById).post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('POST operation not supported on /schedules/' + req.params.scheduleId);\\n}).put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, scheduleController.updateScheduleById).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, scheduleController.deleteScheduleById);\\nscheduleRouter.route('/user/:userId').options(cors.corsWithOptions, authenticate.verifyUser, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, scheduleController.getAllSchedulesForAUser);\\nmodule.exports = scheduleRouter;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNjaGVkdWxlUm91dGVyLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwiYm9keVBhcnNlciIsImNvcnMiLCJjaGVja1NjaGVtYSIsImF1dGhlbnRpY2F0ZSIsInZhbGlkYXRpb25SdWxlcyIsInNjaGVkdWxlQ29udHJvbGxlciIsInNjaGVkdWxlUm91dGVyIiwiUm91dGVyIiwidXNlIiwianNvbiIsInJvdXRlIiwib3B0aW9ucyIsImNvcnNXaXRoT3B0aW9ucyIsInJlcSIsInJlcyIsInNlbmRTdGF0dXMiLCJnZXQiLCJ2ZXJpZnlVc2VyIiwiZ2V0QWxsU2NoZWR1bGVzIiwicG9zdCIsImFkZFNjaGVkdWxlIiwicHV0IiwidmVyaWZ5TW9kZXJhdGVyIiwibmV4dCIsInN0YXR1c0NvZGUiLCJlbmQiLCJkZWxldGUiLCJ2ZXJpZnlBZG1pbiIsImRlbGV0ZUFsbFNjaGVkdWxlcyIsImdldFNjaGVkdWxlRGV0YWlsc0J5SWQiLCJwYXJhbXMiLCJzY2hlZHVsZUlkIiwidXBkYXRlU2NoZWR1bGVCeUlkIiwiZGVsZXRlU2NoZWR1bGVCeUlkIiwiZ2V0QWxsU2NoZWR1bGVzRm9yQVVzZXIiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxPQUFPLEdBQUdDLE9BQU8sQ0FBQyxTQUFELENBQXZCOztBQUNBLE1BQU1DLFVBQVUsR0FBR0QsT0FBTyxDQUFDLGFBQUQsQ0FBMUI7O0FBRUEsTUFBTUUsSUFBSSxHQUFHRixPQUFPLENBQUMsUUFBRCxDQUFwQjs7QUFDQSxNQUFNO0FBQUVHLEVBQUFBO0FBQUYsSUFBa0JILE9BQU8sQ0FBQyxtQkFBRCxDQUEvQjs7QUFDQSxJQUFJSSxZQUFZLEdBQUdKLE9BQU8sQ0FBQyw0QkFBRCxDQUExQjs7QUFDQSxJQUFJSyxlQUFlLEdBQUdMLE9BQU8sQ0FBQywwQkFBRCxDQUE3Qjs7QUFDQSxNQUFNTSxrQkFBa0IsR0FBR04sT0FBTyxDQUFDLG1DQUFELENBQWxDOztBQUVBLE1BQU1PLGNB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T0FBUCxHQUFpQjlCLGNBQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZXhwcmVzcyA9IHJlcXVpcmUoJ2V4cHJlc3MnKTtcclxuY29uc3QgYm9keVBhcnNlciA9IHJlcXVpcmUoJ2JvZHktcGFyc2VyJyk7XHJcblxyXG5jb25zdCBjb3JzID0gcmVxdWlyZSgnLi9jb3JzJyk7XHJcbmNvbnN0IHsgY2hlY2tTY2hlbWEgfSA9IHJlcXVpcmUoJ2V4cHJlc3MtdmFsaWRhdG9yJyk7XHJcbnZhciBhdXRoZW50aWNhdGUgPSByZXF1aXJlKCcuLi9taWRkbGV3YXJlL2F1dGhlbnRpY2F0ZScpO1xyXG52YXIgdmFsaWRhdGlvblJ1bGVzID0gcmVxdWlyZSgnLi4vbWlkZGxld2FyZS92YWxpZGF0aW9uJyk7XHJcbmNvbnN0IHNjaGVkdWxlQ29udHJvbGxlciA9IHJlcXVpcmUoJy4uL2NvbnRyb2xsZXJzL3NjaGVkdWxlQ29udHJvbGxlcicpXHJcblxyXG5jb25zdCBzY2hlZHVsZVJvdXRlciA9IGV4cHJlc3MuUm91dGVyKCk7XHJcblxyXG5zY2hlZHVsZVJvdXRlci51c2UoYm9keVBhcnNlci5qc29uKCkpO1xyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbi8vIFxyXG4vLyAgICAgICAgICAgICAgU2NoZWR1bGUgUm91dGVzXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG5zY2hlZHVsZVJvdXRlci5yb3V0ZSgnLycpXHJcbiAgICAub3B0aW9ucyhjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcbiAgICAuZ2V0KGNvcnMuY29ycywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsICBzY2hlZHVsZUNvbnRyb2xsZXIuZ2V0QWxsU2NoZWR1bGVzKVxyXG4gICAgLnBvc3QoY29ycy5jb3JzV2l0aE9wdGlvbnMsYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsICBzY2hlZHVsZUNvbnRyb2xsZXIuYWRkU2NoZWR1bGUpXHJcbiAgICAucHV0KGNvcnMuY29yc1dpdGhPcHRpb25zLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeU1vZGVyYXRlciwgKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgcmVzLmVuZCgnUFVUIG9wZXJhdGlvbiBub3Qgc3VwcG9ydGVkIG9uIC9zY2hlZHVsZXMnKTtcclxuICAgIH0pXHJcbiAgICAuZGVsZXRlKGNvcnMuY29yc1dpdGhPcHRpb25zLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeUFkbWluLCBzY2hlZHVsZUNvbnRyb2xsZXIuZGVsZXRlQWxsU2NoZWR1bGVzKTtcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuLy8gXHJcbi8vICAgICAgICAgICAgICBTY2hlZHVsZSBSb3V0ZXMgT24gSURcclxuLy8gXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbnNjaGVkdWxlUm91dGVyLnJvdXRlKCcvOnNjaGVkdWxlSWQnKVxyXG4gICAgLm9wdGlvbnMoY29ycy5jb3JzV2l0aE9wdGlvbnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCAocmVxLCByZXMpID0+IHsgcmVzLnNlbmRTdGF0dXMoMjAwKTsgfSlcclxuICAgIC5nZXQoY29ycy5jb3JzLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgc2NoZWR1bGVDb250cm9sbGVyLmdldFNjaGVkdWxlRGV0YWlsc0J5SWQpXHJcbiAgICAucG9zdChjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgcmVzLmVuZCgnUE9TVCBvcGVyYXRpb24gbm90IHN1cHBvcnRlZCBvbiAvc2NoZWR1bGVzLycgKyByZXEucGFyYW1zLnNjaGVkdWxlSWQpO1xyXG4gICAgfSlcclxuICAgIC5wdXQoY29ycy5jb3JzV2l0aE9wdGlvbnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCBhdXRoZW50aWNhdGUudmVyaWZ5TW9kZXJhdGVyLCBzY2hlZHVsZUNvbnRyb2xsZXIudXBkYXRlU2NoZWR1bGVCeUlkKVxyXG4gICAgLmRlbGV0ZShjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgc2NoZWR1bGVDb250cm9sbGVyLmRlbGV0ZVNjaGVkdWxlQnlJZCk7XHJcblxyXG5zY2hlZHVsZVJvdXRlci5yb3V0ZSgnL3VzZXIvOnVzZXJJZCcpXHJcbiAgICAub3B0aW9ucyhjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIChyZXEsIHJlcykgPT4geyByZXMuc2VuZFN0YXR1cygyMDApOyB9KVxyXG4gICAgLmdldChjb3JzLmNvcnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCAgc2NoZWR1bGVDb250cm9sbGVyLmdldEFsbFNjaGVkdWxlc0ZvckFVc2VyKTtcclxuXHJcbm1vZHVsZS5leHBvcnRzID0gc2NoZWR1bGVSb3V0ZXI7Il19\",\"originalCode\":\"const express = require('express');\\r\\nconst bodyParser = require('body-parser');\\r\\n\\r\\nconst cors = require('./cors');\\r\\nconst { checkSchema } = require('express-validator');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\nvar validationRules = require('../middleware/validation');\\r\\nconst scheduleController = require('../controllers/scheduleController')\\r\\n\\r\\nconst scheduleRouter = express.Router();\\r\\n\\r\\nscheduleRouter.use(bodyParser.json());\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Schedule Routes\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nscheduleRouter.route('/')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, scheduleController.getAllSchedules)\\r\\n .post(cors.corsWithOptions,authenticate.verifyUser, scheduleController.addSchedule)\\r\\n .put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('PUT operation not supported on /schedules');\\r\\n })\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, scheduleController.deleteAllSchedules);\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Schedule Routes On ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nscheduleRouter.route('/:scheduleId')\\r\\n .options(cors.corsWithOptions, authenticate.verifyUser, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, scheduleController.getScheduleDetailsById)\\r\\n .post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('POST operation not supported on /schedules/' + req.params.scheduleId);\\r\\n })\\r\\n .put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, scheduleController.updateScheduleById)\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, scheduleController.deleteScheduleById);\\r\\n\\r\\nscheduleRouter.route('/user/:userId')\\r\\n .options(cors.corsWithOptions, authenticate.verifyUser, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, scheduleController.getAllSchedulesForAUser);\\r\\n\\r\\nmodule.exports = scheduleRouter;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/9b/scheduleRouter_9b57edc7078385d142c957dea9d9e0be.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2541\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\scheduleRouter.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":9621,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":9618,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":802,\"endOffset\":842,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1085,\"endOffset\":1188,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1621,\"endOffset\":1661,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1824,\"endOffset\":1953,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":2288,\"endOffset\":2328,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const Schedules = require('../models/schedules'); // **********************************************************************************\\n// \\n// Schedule Operations \\n// \\n// **********************************************************************************\\n\\n\\nconst getAllSchedules = (req, res, next) => {\\n Schedules.find(req.query).populate(\\\"place\\\").populate(\\\"user\\\").then(schedules => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n schedules: schedules\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst getAllSchedulesForAUser = (req, res, next) => {\\n var query = {\\n \\\"user\\\": String(req.params.userId)\\n };\\n Schedules.find(query).populate(\\\"place\\\").then(schedules => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n schedules: schedules\\n });\\n }, err => {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n const msg = err._message;\\n res.json({\\n success: false,\\n message: msg\\n });\\n }).catch(err => {\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: \\\"Failed to get data\\\"\\n });\\n });\\n};\\n\\nconst addSchedule = (req, res, next) => {\\n var schedule = {\\n user: req.body.user,\\n place: req.body.place,\\n date: req.body.date,\\n state: \\\"new\\\",\\n travellingMethod: req.body.travellingMethod\\n };\\n Schedules.create(schedule).then(schedule => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n schedule: schedule\\n });\\n }, err => {\\n res.statusCode = 403;\\n res.setHeader('Content-Type', 'application/json');\\n const msg = err._message;\\n res.json({\\n success: false,\\n message: msg\\n });\\n }).catch(err => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: \\\"Failed to add a schedule\\\"\\n });\\n });\\n};\\n\\nconst deleteAllSchedules = (req, res, next) => {\\n Schedules.remove({}).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json(resp);\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nexports.getAllSchedules = getAllSchedules;\\nexports.addSchedule = addSchedule;\\nexports.deleteAllSchedules = deleteAllSchedules;\\nexports.getAllSchedulesForAUser = getAllSchedulesForAUser; // **********************************************************************************\\n// \\n// Schedule Operations Specified by ID\\n// \\n// **********************************************************************************\\n\\nconst getScheduleDetailsById = (req, res, next) => {\\n Schedules.findById(req.params.scheduleId).then(schedule => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n schedule: schedule\\n });\\n }, err => {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: \\\"Could not find the place\\\"\\n });\\n }).catch(err => next(err));\\n};\\n\\nconst updateScheduleById = (req, res, next) => {\\n Schedules.findByIdAndUpdate(req.params.scheduleId, {\\n $set: req.body\\n }, {\\n new: true\\n }).then(schedule => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n schedule: schedule\\n });\\n }, err => next(err)).catch(err => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: \\\"Update failed\\\"\\n });\\n });\\n};\\n\\nconst deleteScheduleById = (req, res, next) => {\\n Schedules.findByIdAndRemove(req.params.scheduleId).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n response: resp\\n });\\n }, err => next(err)).catch(err => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: \\\"Delete failed\\\"\\n });\\n });\\n};\\n\\nexports.getScheduleDetailsById = getScheduleDetailsById;\\nexports.updateScheduleById = updateScheduleById;\\nexports.deleteScheduleById = deleteScheduleById; // **********************************************************************************\\n// \\n// Schedule Operations Specified by UserID\\n// \\n// **********************************************************************************\\n// const getScheduleDetailsByUserId = (req, res, next) => {\\n// Schedules.findById(req.params.scheduleId)\\n// .then((schedule) => {\\n// res.statusCode = 200;\\n// res.setHeader('Content-Type', 'application/json');\\n// res.json(schedule);\\n// }, (err) => next(err))\\n// .catch((err) => next(err));\\n// }\\n// const updateScheduleByUserId = (req, res, next) => {\\n// Schedules.findByIdAndUpdate(req.params.scheduleId, {\\n// $set: req.body\\n// }, { new: true })\\n// .then((schedule) => {\\n// res.statusCode = 200;\\n// res.setHeader('Content-Type', 'application/json');\\n// res.json(schedule);\\n// }, (err) => next(err))\\n// .catch((err) => next(err));\\n// }\\n// const deleteScheduleByUserId = (req, res, next) => {\\n// Schedules.findByIdAndRemove(req.params.scheduleId)\\n// .then((resp) => {\\n// res.statusCode = 200;\\n// res.setHeader('Content-Type', 'application/json');\\n// res.json(resp);\\n// }, (err) => next(err))\\n// .catch((err) => next(err));\\n// }\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNjaGVkdWxlQ29udHJvbGxlci5qcyJdLCJuYW1lcyI6WyJTY2hlZHVsZXMiLCJyZXF1aXJlIiwiZ2V0QWxsU2NoZWR1bGVzIiwicmVxIiwicmVzIiwibmV4dCIsImZpbmQiLCJxdWVyeSIsInBvcHVsYXRlIiwidGhlbiIsInNjaGVkdWxlcyIsInN0YXR1c0NvZGUiLCJzZXRIZWFkZXIiLCJqc29uIiwic3VjY2VzcyIsImVyciIsImNhdGNoIiwiZ2V0QWxsU2NoZWR1bGVzRm9yQVVzZXIiLCJTdHJpbmciLCJwYXJhbXMiLCJ1c2VySWQiLCJtc2ciLCJfbWVzc2FnZSIsIm1lc3NhZ2UiLCJhZGRTY2hlZHVsZSIsInNjaGVkdWxlIiwidXNlciIsImJvZHkiLCJwbGFjZSIsImRhdGUiLCJzdGF0ZSIsInRyYXZlbGxpbmdNZXRob2QiLCJjcmVhdGUiLCJkZWxldGVBbGxTY2hlZHVsZXMiLCJyZW1vdmUiLCJyZXNwIiwiZXhwb3J0cyIsImdldFNjaGVkdWxlRGV0YWlsc0J5SWQiLCJmaW5kQnlJZCIsInNjaGVkdWxlSWQiLCJ1cGRhdGVTY2hlZHVsZUJ5SWQiLCJmaW5kQnlJZEFuZFVwZGF0ZSIsIiRzZXQiLCJuZXciLCJkZWxldGVTY2hlZHVsZUJ5SWQiLCJmaW5kQnlJZEFuZFJlbW92ZSIsInJlc3BvbnNlIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxTQUFTLEdBQUdDLE9BQU8sQ0FBQyxxQkFBRCxDQUF6QixDLENBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUEsTUFBTUMsZUFBZSxHQUFHLENBQUNDLEdBQUQsRUFBTUMsR0FBTixFQUFXQyxJQUFYLEtBQW9CO0FBQ3hDTCxFQUFBQSxTQUFTLENBQUNNLElBQVYsQ0FBZUgsR0FBRyxDQUFDSSxLQUFuQixFQUEwQkMsUUFBMUIsQ0FBbUMsT0FBbkMsRUFBNENBLFFBQTVDLENBQXFELE1BQXJELEVBQ0tDLElBREwsQ0FDV0MsU0FBRCxJQUFlO0FBQ2pCTixJQUFBQSxHQUFHLENBQUNPLFVBQUosR0FBaUIs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LE1BQUFBLFFBQVEsRUFBQ1g7QUFBMUIsS0FBVDtBQUNILEdBTEwsRUFLUXBCLEdBQUQsSUFBU1YsSUFBSSxDQUFDVSxHQUFELENBTHBCLEVBTUtDLEtBTkwsQ0FNWUQsR0FBRCxJQUFTO0FBQ1pYLElBQUFBLEdBQUcsQ0FBQ08sVUFBSixHQUFpQixHQUFqQjtBQUNBUCxJQUFBQSxHQUFHLENBQUNRLFNBQUosQ0FBYyxjQUFkLEVBQThCLGtCQUE5QjtBQUNBUixJQUFBQSxHQUFHLENBQUNTLElBQUosQ0FBUztBQUFFQyxNQUFBQSxPQUFPLEVBQUUsS0FBWDtBQUFrQlMsTUFBQUEsT0FBTyxFQUFFO0FBQTNCLEtBQVQ7QUFDSCxHQVZMO0FBV0gsQ0FaRDs7QUFjQWEsT0FBTyxDQUFDQyxzQkFBUixHQUFpQ0Esc0JBQWpDO0FBQ0FELE9BQU8sQ0FBQ0ksa0JBQVIsR0FBNkJBLGtCQUE3QjtBQUNBSixPQUFPLENBQUNRLGtCQUFSLEdBQTZCQSxrQkFBN0IsQyxDQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgU2NoZWR1bGVzID0gcmVxdWlyZSgnLi4vbW9kZWxzL3NjaGVkdWxlcycpO1xyXG5cclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyBcclxuLy8gICAgICAgICAgICAgIFNjaGVkdWxlIE9wZXJhdGlvbnMgXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG5jb25zdCBnZXRBbGxTY2hlZHVsZXMgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIFNjaGVkdWxlcy5maW5kKHJlcS5xdWVyeSkucG9wdWxhdGUoXCJwbGFjZVwiKS5wb3B1bGF0ZShcInVzZXJcIilcclxuICAgICAgICAudGhlbigoc2NoZWR1bGVzKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHNjaGVkdWxlczpzY2hlZHVsZXMgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpO1xyXG59XHJcblxyXG5jb25zdCBnZXRBbGxTY2hlZHVsZXNGb3JBVXNlciA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgdmFyIHF1ZXJ5ID0geyBcInVzZXJcIjogU3RyaW5nKHJlcS5wYXJhbXMudXNlcklkKSB9O1xyXG4gICAgU2NoZWR1bGVzLmZpbmQocXVlcnkpLnBvcHVsYXRlKFwicGxhY2VcIilcclxuICAgICAgICAudGhlbigoc2NoZWR1bGVzKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHNjaGVkdWxlczpzY2hlZHVsZXMgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gIHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDQ7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIGNvbnN0IG1zZyA9IGVyci5fbWVzc2FnZTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogbXNnIH0pO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA1MDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogZmFsc2UsIG1lc3NhZ2U6IFwiRmFpbGVkIHRvIGdldCBkYXRhXCIgfSk7XHJcbiAgICAgICAgfSk7XHJcbn1cclxuXHJcbmNvbnN0IGFkZFNjaGVkdWxlID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICB2YXIgc2NoZWR1bGUgPSB7XHJcbiAgICAgICAgdXNlcjogcmVxLmJvZHkudXNlcixcclxuICAgICAgICBwbGFjZTogcmVxLmJvZHkucGxhY2UsXHJcbiAgICAgICAgZGF0ZTogcmVxLmJvZHkuZGF0ZSxcclxuICAgICAgICBzdGF0ZTogXCJuZXdcIixcclxuICAgICAgICB0cmF2ZWxsaW5nTWV0aG9kOiByZXEuYm9keS50cmF2ZWxsaW5nTWV0aG9kXHJcbiAgICB9XHJcbiAgICBTY2hlZHVsZXMuY3JlYXRlKHNjaGVkdWxlKVxyXG4gICAgICAgIC50aGVuKChzY2hlZHVsZSkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCBzY2hlZHVsZTpzY2hlZHVsZSB9KTtcclxuICAgICAgICB9LCAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNDAzO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICBjb25zdCBtc2cgPSBlcnIuX21lc3NhZ2U7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogZmFsc2UsIG1lc3NhZ2U6IG1zZyB9KTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IGZhbHNlLCBtZXNzYWdlOiBcIkZhaWxlZCB0byBhZGQgYSBzY2hlZHVsZVwiIH0pO1xyXG4gICAgICAgIH0pO1xyXG59XHJcblxyXG5jb25zdCBkZWxldGVBbGxTY2hlZHVsZXMgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIFNjaGVkdWxlcy5yZW1vdmUoe30pXHJcbiAgICAgICAgLnRoZW4oKHJlc3ApID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHJlc3ApO1xyXG4gICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuZXhwb3J0cy5nZXRBbGxTY2hlZHVsZXMgPSBnZXRBbGxTY2hlZHVsZXM7XHJcbmV4cG9ydHMuYWRkU2NoZWR1bGUgPSBhZGRTY2hlZHVsZTtcclxuZXhwb3J0cy5kZWxldGVBbGxTY2hlZHVsZXMgPSBkZWxldGVBbGxTY2hlZHVsZXM7XHJcbmV4cG9ydHMuZ2V0QWxsU2NoZWR1bGVzRm9yQVVzZXIgPSBnZXRBbGxTY2hlZHVsZXNGb3JBVXNlcjtcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuLy8gXHJcbi8vICAgICAgICAgICAgICBTY2hlZHVsZSBPcGVyYXRpb25zIFNwZWNpZmllZCBieSBJRFxyXG4vLyBcclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuY29uc3QgZ2V0U2NoZWR1bGVEZXRhaWxzQnlJZCA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgU2NoZWR1bGVzLmZpbmRCeUlkKHJlcS5wYXJhbXMuc2NoZWR1bGVJZClcclxuICAgICAgICAudGhlbigoc2NoZWR1bGUpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgc2NoZWR1bGU6c2NoZWR1bGUgfSk7XHJcbiAgICAgICAgfSwgIChlcnIpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDQ7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogZmFsc2UsIG1lc3NhZ2U6IFwiQ291bGQgbm90IGZpbmQgdGhlIHBsYWNlXCIgfSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuY29uc3QgdXBkYXRlU2NoZWR1bGVCeUlkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICBTY2hlZHVsZXMuZmluZEJ5SWRBbmRVcGRhdGUocmVxLnBhcmFtcy5zY2hlZHVsZUlkLCB7XHJcbiAgICAgICAgJHNldDogcmVxLmJvZHlcclxuICAgIH0sIHsgbmV3OiB0cnVlIH0pXHJcbiAgICAgICAgLnRoZW4oKHNjaGVkdWxlKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHNjaGVkdWxlOnNjaGVkdWxlIH0pO1xyXG4gICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogXCJVcGRhdGUgZmFpbGVkXCIgfSk7XHJcbiAgICAgICAgfSk7XHJcbn1cclxuXHJcbmNvbnN0IGRlbGV0ZVNjaGVkdWxlQnlJZCA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgU2NoZWR1bGVzLmZpbmRCeUlkQW5kUmVtb3ZlKHJlcS5wYXJhbXMuc2NoZWR1bGVJZClcclxuICAgICAgICAudGhlbigocmVzcCkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCByZXNwb25zZTpyZXNwIH0pO1xyXG4gICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogXCJEZWxldGUgZmFpbGVkXCIgfSk7XHJcbiAgICAgICAgfSk7XHJcbn1cclxuXHJcbmV4cG9ydHMuZ2V0U2NoZWR1bGVEZXRhaWxzQnlJZCA9IGdldFNjaGVkdWxlRGV0YWlsc0J5SWQ7XHJcbmV4cG9ydHMudXBkYXRlU2NoZWR1bGVCeUlkID0gdXBkYXRlU2NoZWR1bGVCeUlkO1xyXG5leHBvcnRzLmRlbGV0ZVNjaGVkdWxlQnlJZCA9IGRlbGV0ZVNjaGVkdWxlQnlJZDtcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuLy8gXHJcbi8vICAgICAgICAgICAgICBTY2hlZHVsZSBPcGVyYXRpb25zIFNwZWNpZmllZCBieSBVc2VySURcclxuLy8gXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbi8vIGNvbnN0IGdldFNjaGVkdWxlRGV0YWlsc0J5VXNlcklkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbi8vICAgICBTY2hlZHVsZXMuZmluZEJ5SWQocmVxLnBhcmFtcy5zY2hlZHVsZUlkKVxyXG4vLyAgICAgICAgIC50aGVuKChzY2hlZHVsZSkgPT4ge1xyXG4vLyAgICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuLy8gICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuLy8gICAgICAgICAgICAgcmVzLmpzb24oc2NoZWR1bGUpO1xyXG4vLyAgICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuLy8gICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxuLy8gfVxyXG5cclxuLy8gY29uc3QgdXBkYXRlU2NoZWR1bGVCeVVzZXJJZCA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4vLyAgICAgU2NoZWR1bGVzLmZpbmRCeUlkQW5kVXBkYXRlKHJlcS5wYXJhbXMuc2NoZWR1bGVJZCwge1xyXG4vLyAgICAgICAgICRzZXQ6IHJlcS5ib2R5XHJcbi8vICAgICB9LCB7IG5ldzogdHJ1ZSB9KVxyXG4vLyAgICAgICAgIC50aGVuKChzY2hlZHVsZSkgPT4ge1xyXG4vLyAgICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuLy8gICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuLy8gICAgICAgICAgICAgcmVzLmpzb24oc2NoZWR1bGUpO1xyXG4vLyAgICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuLy8gICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxuLy8gfVxyXG5cclxuLy8gY29uc3QgZGVsZXRlU2NoZWR1bGVCeVVzZXJJZCA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4vLyAgICAgU2NoZWR1bGVzLmZpbmRCeUlkQW5kUmVtb3ZlKHJlcS5wYXJhbXMuc2NoZWR1bGVJZClcclxuLy8gICAgICAgICAudGhlbigocmVzcCkgPT4ge1xyXG4vLyAgICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuLy8gICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuLy8gICAgICAgICAgICAgcmVzLmpzb24ocmVzcCk7XHJcbi8vICAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4vLyAgICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpO1xyXG4vLyB9Il19\",\"originalCode\":\"const Schedules = require('../models/schedules');\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Schedule Operations \\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nconst getAllSchedules = (req, res, next) => {\\r\\n Schedules.find(req.query).populate(\\\"place\\\").populate(\\\"user\\\")\\r\\n .then((schedules) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, schedules:schedules });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst getAllSchedulesForAUser = (req, res, next) => {\\r\\n var query = { \\\"user\\\": String(req.params.userId) };\\r\\n Schedules.find(query).populate(\\\"place\\\")\\r\\n .then((schedules) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, schedules:schedules });\\r\\n }, (err) => {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n const msg = err._message;\\r\\n res.json({ success: false, message: msg });\\r\\n })\\r\\n .catch((err) => {\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: \\\"Failed to get data\\\" });\\r\\n });\\r\\n}\\r\\n\\r\\nconst addSchedule = (req, res, next) => {\\r\\n var schedule = {\\r\\n user: req.body.user,\\r\\n place: req.body.place,\\r\\n date: req.body.date,\\r\\n state: \\\"new\\\",\\r\\n travellingMethod: req.body.travellingMethod\\r\\n }\\r\\n Schedules.create(schedule)\\r\\n .then((schedule) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, schedule:schedule });\\r\\n }, (err) => {\\r\\n res.statusCode = 403;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n const msg = err._message;\\r\\n res.json({ success: false, message: msg });\\r\\n })\\r\\n .catch((err) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: \\\"Failed to add a schedule\\\" });\\r\\n });\\r\\n}\\r\\n\\r\\nconst deleteAllSchedules = (req, res, next) => {\\r\\n Schedules.remove({})\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json(resp);\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nexports.getAllSchedules = getAllSchedules;\\r\\nexports.addSchedule = addSchedule;\\r\\nexports.deleteAllSchedules = deleteAllSchedules;\\r\\nexports.getAllSchedulesForAUser = getAllSchedulesForAUser;\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Schedule Operations Specified by ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nconst getScheduleDetailsById = (req, res, next) => {\\r\\n Schedules.findById(req.params.scheduleId)\\r\\n .then((schedule) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, schedule:schedule });\\r\\n }, (err) => {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: \\\"Could not find the place\\\" });\\r\\n })\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst updateScheduleById = (req, res, next) => {\\r\\n Schedules.findByIdAndUpdate(req.params.scheduleId, {\\r\\n $set: req.body\\r\\n }, { new: true })\\r\\n .then((schedule) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, schedule:schedule });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: \\\"Update failed\\\" });\\r\\n });\\r\\n}\\r\\n\\r\\nconst deleteScheduleById = (req, res, next) => {\\r\\n Schedules.findByIdAndRemove(req.params.scheduleId)\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, response:resp });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: \\\"Delete failed\\\" });\\r\\n });\\r\\n}\\r\\n\\r\\nexports.getScheduleDetailsById = getScheduleDetailsById;\\r\\nexports.updateScheduleById = updateScheduleById;\\r\\nexports.deleteScheduleById = deleteScheduleById;\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Schedule Operations Specified by UserID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\n// const getScheduleDetailsByUserId = (req, res, next) => {\\r\\n// Schedules.findById(req.params.scheduleId)\\r\\n// .then((schedule) => {\\r\\n// res.statusCode = 200;\\r\\n// res.setHeader('Content-Type', 'application/json');\\r\\n// res.json(schedule);\\r\\n// }, (err) => next(err))\\r\\n// .catch((err) => next(err));\\r\\n// }\\r\\n\\r\\n// const updateScheduleByUserId = (req, res, next) => {\\r\\n// Schedules.findByIdAndUpdate(req.params.scheduleId, {\\r\\n// $set: req.body\\r\\n// }, { new: true })\\r\\n// .then((schedule) => {\\r\\n// res.statusCode = 200;\\r\\n// res.setHeader('Content-Type', 'application/json');\\r\\n// res.json(schedule);\\r\\n// }, (err) => next(err))\\r\\n// .catch((err) => next(err));\\r\\n// }\\r\\n\\r\\n// const deleteScheduleByUserId = (req, res, next) => {\\r\\n// Schedules.findByIdAndRemove(req.params.scheduleId)\\r\\n// .then((resp) => {\\r\\n// res.statusCode = 200;\\r\\n// res.setHeader('Content-Type', 'application/json');\\r\\n// res.json(resp);\\r\\n// }, (err) => next(err))\\r\\n// .catch((err) => next(err));\\r\\n// }\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/df/scheduleController_df2aee56329a17301dcb5de3e55455e9.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2542\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\scheduleController.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":22878,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":22875,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"getAllSchedules\",\"ranges\":[{\"startOffset\":382,\"endOffset\":688,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getAllSchedulesForAUser\",\"ranges\":[{\"startOffset\":723,\"endOffset\":1396,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"addSchedule\",\"ranges\":[{\"startOffset\":1419,\"endOffset\":2190,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"deleteAllSchedules\",\"ranges\":[{\"startOffset\":2220,\"endOffset\":2430,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getScheduleDetailsById\",\"ranges\":[{\"startOffset\":2883,\"endOffset\":3331,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"updateScheduleById\",\"ranges\":[{\"startOffset\":3361,\"endOffset\":3854,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"deleteScheduleById\",\"ranges\":[{\"startOffset\":3884,\"endOffset\":4322,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const mongoose = require('mongoose');\\n\\nconst Schema = mongoose.Schema;\\n\\nrequire('mongoose-currency').loadType(mongoose);\\n\\nconst Currency = mongoose.Types.Currency;\\nconst scheduleSchema = new Schema({\\n user: {\\n type: mongoose.Schema.Types.ObjectId,\\n ref: \\\"User\\\"\\n },\\n place: {\\n type: mongoose.Schema.Types.ObjectId,\\n ref: \\\"Place\\\"\\n },\\n date: {\\n type: Date,\\n required: true\\n },\\n fair: {\\n type: Currency,\\n min: 0\\n },\\n state: {\\n type: String,\\n default: \\\"new\\\",\\n enum: [\\\"new\\\", \\\"not-completed\\\", \\\"canceled\\\", \\\"completed\\\"]\\n },\\n travellingMethod: {\\n type: String,\\n required: true,\\n enum: ['Bus', 'Car', 'Train', 'Threewheeler', 'Foot']\\n }\\n}, {\\n timestamps: true\\n});\\nvar Schedules = mongoose.model('Schedule', scheduleSchema);\\nmodule.exports = Schedules;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNjaGVkdWxlcy5qcyJdLCJuYW1lcyI6WyJtb25nb29zZSIsInJlcXVpcmUiLCJTY2hlbWEiLCJsb2FkVHlwZSIsIkN1cnJlbmN5IiwiVHlwZXMiLCJzY2hlZHVsZVNjaGVtYSIsInVzZXIiLCJ0eXBlIiwiT2JqZWN0SWQiLCJyZWYiLCJwbGFjZSIsImRhdGUiLCJEYXRlIiwicmVxdWlyZWQiLCJmYWlyIiwibWluIiwic3RhdGUiLCJTdHJpbmciLCJkZWZhdWx0IiwiZW51bSIsInRyYXZlbGxpbmdNZXRob2QiLCJ0aW1lc3RhbXBzIiwiU2NoZWR1bGVzIiwibW9kZWwiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxRQUFRLEdBQUdDLE9BQU8sQ0FBQyxVQUFELENBQXhCOztBQUNBLE1BQU1DLE1BQU0sR0FBR0YsUUFBUSxDQUFDRSxNQUF4Qjs7QUFDQUQsT0FBTyxDQUFDLG1CQUFELENBQVAsQ0FBNkJFLFFBQTdCLENBQXNDSCxRQUF0Qzs7QUFDQSxNQUFNSSxRQUFRLEdBQUdKLFFBQVEsQ0FBQ0ssS0FBVCxDQUFlRCxRQUFoQztBQUNBLE1BQU1FLGNBQWMsR0FBRyxJQUFJSixNQUFKLENBQVc7QUFDOUJLLEVBQUFBLElBQUksRUFBRTtBQUNGQyxJQUFBQSxJQUFJLEVBQUVSLFFBQVEsQ0FBQ0UsTUFBVCxDQUFnQkcsS0FBaEIsQ0FBc0JJLFFBRDFCO0FBRUZDLElBQUFBLEdBQUcsRUFBRTtBQUZILEdBRHdCO0FBSzlCQyxFQUFBQSxLQUFLLEVBQUU7QUFDSEgsSUFBQUEsSUFBSSxFQUFFUixRQUFRLENBQUNFLE1BQVQsQ0FBZ0JHLEtBQWhCLENBQXNCSSxRQUR6QjtBQUVIQyxJQUFBQSxHQUFHLEVBQUU7QUFGRixHQUx1QjtBQVM5QkUsRUFBQUEsSUFBSSxFQUFFO0FBQ0ZKLElBQUFBLElBQUksRUFBRUssSUFESjtBQUVGQyxJQUFBQSxRQUFRLEVBQUU7QUFGUixHQVR3QjtBQWE5QkMsRUFBQUEsSUFBSSxFQUFFO0FBQ0ZQLElBQUFBLElBQUksRUFBRUosUUFESjtBQUVGWSxJQUFBQSxHQUFHLEVBQUU7QUFGSCxHQWJ3QjtBQWlCOUJDLEVBQUFBLEtBQUssRUFBRTtBQUNIVCxJQUFBQSxJQUFJLEVBQUVVLE1BREg7QUFFSEMsSUFBQUEsT0FBTyxFQUFFLEtBRk47QUFHSEMsSUFBQUEsSUFBSSxFQUFFLENBQUMsS0FBRCxFQUFPLGVBQVAsRUFBd0IsVUFBeEIsRUFBb0MsV0FBcEM7QUFISCxHQWpCdUI7QUFzQjlCQyxFQUFBQSxnQkFBZ0IsRUFBRTtBQUNkYixJQUFBQSxJQUFJLEVBQUVVLE1BRFE7QUFFZEosSUFBQUEsUUFBUSxFQUFFLElBRkk7QUFHZE0sSUFBQUEsSUFBSSxFQUFFLENBQUMsS0FBRCxFQUFRLEtBQVIsRUFBZSxPQUFmLEVBQXdCLGNBQXhCLEVBQXdDLE1BQXhDO0FBSFE7QUF0QlksQ0FBWCxFQTJCcEI7QUFDQ0UsRUFBQUEsVUFBVSxFQUFFO0FBRGIsQ0EzQm9CLENBQXZCO0FBK0JBLElBQUlDLFNBQVMsR0FBR3ZCLFFBQVEsQ0FBQ3dCLEtBQVQsQ0FBZSxVQUFmLEVBQTJCbEIsY0FBM0IsQ0FBaEI7QUFFQW1CLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQkgsU0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBtb25nb29zZSA9IHJlcXVpcmUoJ21vbmdvb3NlJyk7XHJcbmNvbnN0IFNjaGVtYSA9IG1vbmdvb3NlLlNjaGVtYTtcclxucmVxdWlyZSgnbW9uZ29vc2UtY3VycmVuY3knKS5sb2FkVHlwZShtb25nb29zZSk7XHJcbmNvbnN0IEN1cnJlbmN5ID0gbW9uZ29vc2UuVHlwZXMuQ3VycmVuY3k7XHJcbmNvbnN0IHNjaGVkdWxlU2NoZW1hID0gbmV3IFNjaGVtYSh7XHJcbiAgICB1c2VyOiB7XHJcbiAgICAgICAgdHlwZTogbW9uZ29vc2UuU2NoZW1hLlR5cGVzLk9iamVjdElkLFxyXG4gICAgICAgIHJlZjogXCJVc2VyXCJcclxuICAgIH0sXHJcbiAgICBwbGFjZToge1xyXG4gICAgICAgIHR5cGU6IG1vbmdvb3NlLlNjaGVtYS5UeXBlcy5PYmplY3RJZCxcclxuICAgICAgICByZWY6IFwiUGxhY2VcIlxyXG4gICAgfSxcclxuICAgIGRhdGU6IHtcclxuICAgICAgICB0eXBlOiBEYXRlLFxyXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlXHJcbiAgICB9LFxyXG4gICAgZmFpcjoge1xyXG4gICAgICAgIHR5cGU6IEN1cnJlbmN5LFxyXG4gICAgICAgIG1pbjogMFxyXG4gICAgfSxcclxuICAgIHN0YXRlOiB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICAgIGRlZmF1bHQ6IFwibmV3XCIsXHJcbiAgICAgICAgZW51bTogW1wibmV3XCIsXCJub3QtY29tcGxldGVkXCIsIFwiY2FuY2VsZWRcIiwgXCJjb21wbGV0ZWRcIl1cclxuICAgIH0sXHJcbiAgICB0cmF2ZWxsaW5nTWV0aG9kOiB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxyXG4gICAgICAgIGVudW06IFsnQnVzJywgJ0NhcicsICdUcmFpbicsICdUaHJlZXdoZWVsZXInLCAnRm9vdCddXHJcbiAgICB9XHJcbn0sIHtcclxuICAgIHRpbWVzdGFtcHM6IHRydWVcclxufSk7XHJcblxyXG52YXIgU2NoZWR1bGVzID0gbW9uZ29vc2UubW9kZWwoJ1NjaGVkdWxlJywgc2NoZWR1bGVTY2hlbWEpO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBTY2hlZHVsZXM7Il19\",\"originalCode\":\"const mongoose = require('mongoose');\\r\\nconst Schema = mongoose.Schema;\\r\\nrequire('mongoose-currency').loadType(mongoose);\\r\\nconst Currency = mongoose.Types.Currency;\\r\\nconst scheduleSchema = new Schema({\\r\\n user: {\\r\\n type: mongoose.Schema.Types.ObjectId,\\r\\n ref: \\\"User\\\"\\r\\n },\\r\\n place: {\\r\\n type: mongoose.Schema.Types.ObjectId,\\r\\n ref: \\\"Place\\\"\\r\\n },\\r\\n date: {\\r\\n type: Date,\\r\\n required: true\\r\\n },\\r\\n fair: {\\r\\n type: Currency,\\r\\n min: 0\\r\\n },\\r\\n state: {\\r\\n type: String,\\r\\n default: \\\"new\\\",\\r\\n enum: [\\\"new\\\",\\\"not-completed\\\", \\\"canceled\\\", \\\"completed\\\"]\\r\\n },\\r\\n travellingMethod: {\\r\\n type: String,\\r\\n required: true,\\r\\n enum: ['Bus', 'Car', 'Train', 'Threewheeler', 'Foot']\\r\\n }\\r\\n}, {\\r\\n timestamps: true\\r\\n});\\r\\n\\r\\nvar Schedules = mongoose.model('Schedule', scheduleSchema);\\r\\n\\r\\nmodule.exports = Schedules;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/e2/schedules_e2f8e79bc28961f4db3736c92d490e47.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2543\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\models\\\\schedules.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":4238,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":4235,\"count\":1}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const express = require('express');\\n\\nconst bodyParser = require('body-parser');\\n\\nconst cors = require('./cors');\\n\\nconst {\\n checkSchema\\n} = require('express-validator');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nvar validationRules = require('../middleware/validation');\\n\\nconst touristController = require('../controllers/touristController');\\n\\nconst touristRouter = express.Router();\\ntouristRouter.use(bodyParser.json()); // **********************************************************************************\\n// \\n// Tourist Routes\\n// \\n// **********************************************************************************\\n\\ntouristRouter.route('/').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, touristController.getAllTourists).post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, touristController.addTourist).put(cors.corsWithOptions, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('PUT operation not supported on /tourists');\\n}).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, touristController.deleteAllTourists);\\ntouristRouter.route('/search').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).post(cors.corsWithOptions, authenticate.verifyUser, touristController.getAllTouristsByName); // **********************************************************************************\\n// \\n// Tourist Routes Specified by ID\\n// \\n// **********************************************************************************\\n\\ntouristRouter.route('/:touristId').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, touristController.getTouristDetailsById).post(cors.corsWithOptions, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('POST operation not supported on /tourists/' + req.params.touristId);\\n}).put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, touristController.updateTouristDetailsById).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, touristController.deleteATouristById);\\nmodule.exports = touristRouter;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRvdXJpc3RSb3V0ZXIuanMiXSwibmFtZXMiOlsiZXhwcmVzcyIsInJlcXVpcmUiLCJib2R5UGFyc2VyIiwiY29ycyIsImNoZWNrU2NoZW1hIiwiYXV0aGVudGljYXRlIiwidmFsaWRhdGlvblJ1bGVzIiwidG91cmlzdENvbnRyb2xsZXIiLCJ0b3VyaXN0Um91dGVyIiwiUm91dGVyIiwidXNlIiwianNvbiIsInJvdXRlIiwib3B0aW9ucyIsImNvcnNXaXRoT3B0aW9ucyIsInJlcSIsInJlcyIsInNlbmRTdGF0dXMiLCJnZXQiLCJ2ZXJpZnlVc2VyIiwiZ2V0QWxsVG91cmlzdHMiLCJwb3N0IiwidmVyaWZ5TW9kZXJhdGVyIiwiYWRkVG91cmlzdCIsInB1dCIsIm5leHQiLCJzdGF0dXNDb2RlIiwiZW5kIiwiZGVsZXRlIiwidmVyaWZ5QWRtaW4iLCJkZWxldGVBbGxUb3VyaXN0cyIsImdldEFsbFRvdXJpc3RzQnlOYW1lIiwiZ2V0VG91cmlzdERldGFpbHNCeUlkIiwicGFyYW1zIiwidG91cmlzdElkIiwidXBkYXRlVG91cmlzdERldGFpbHNCeUlkIiwiZGVsZXRlQVRvdXJpc3RCeUlkIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsT0FBTyxHQUFHQyxPQUFPLENBQUMsU0FBRCxDQUF2Qjs7QUFDQSxNQUFNQyxVQUFVLEdBQUdELE9BQU8sQ0FBQyxhQUFELENBQTFCOztBQUVBLE1BQU1FLElBQUksR0FBR0YsT0FBTyxDQUFDLFFBQUQsQ0FBcEI7O0FBQ0EsTUFBTTtBQUFFRyxFQUFBQTtBQUFGLElBQWtCSCxPQUFPLENBQUMsbUJBQUQsQ0FBL0I7O0FBQ0EsSUFBSUksWUFBWSxHQUFHSixPQUFPLENBQUMsNEJBQUQsQ0FBMUI7O0FBQ0EsSUFBSUssZUFBZSxHQUFHTCxPQUFPLENBQUMsMEJBQUQsQ0FBN0I7O0FBQ0EsTUFBTU0saUJBQWlCLEdBQUdOLE9BQU8sQ0FBQyxrQ0FBRCxDQUFqQzs7QUFFQSxNQUFNTyxhQUFhLEdBQUdSLE9BQU8sQ0FBQ1MsTUFBUixFQUF0QjtBQUVBRCxhQUFhLENBQUNFLEdBQWQsQ0FBa0JSLFVBQVUsQ0FBQ1MsSUFBWCxFQUFsQixFLENBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQUgsYUFBYSxDQUFDSSxLQUFkLENBQW9CLEdBQXBCLEVBQ0tDLE9BREwsQ0FDYVYsSUFBSSxDQUFDVyxlQURsQixFQUNtQyxDQUFDQyxHQUFELEVBQU1DLEdBQU4sS0FBYztBQUFFQSxFQUFBQSxHQUFHLENBQUNDLFVBQUosQ0FBZSxHQUFmO0FBQXNCLENBRHpFLEVBRUtDLEdBRkwsQ0FFU2YsSUFBSSxDQUFDQSxJQUZkLEVBRXFCRSxZQUFZLENBQUNjLFVBRmxDLEVBRWdEWixpQkFBaUIsQ0FBQ2EsY0FGbEUsRUFHS0MsSUFITCxDQUdVbEIsSUFBSSxDQUFDVyxlQUhmLEVBR2lDVCxZQUFZLENBQUNjLFVBSDlDLEVBRzBEZCxZQUFZLENBQUNpQixlQUh2RSxFQUd3RmYsaUJBQWlCLENBQUNnQixVQUgxRyxFQUlLQyxHQUpMLENBSVNyQixJQUFJLENBQUNXLGVBSmQsRUFJK0IsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEVBQVdTLElBQVgsS0FBb0I7QUFDM0NULEVBQUFBLEdBQUcsQ0FBQ1UsVUFBSixHQUFpQixHQUFqQjtBQUNBVixFQUFBQSxHQUFHLENBQUNXLEdBQUosQ0FBUSwwQ0FBUjtBQUNILENBUEwsRUFRS0MsTUFSTCxDQVFZekIsSUFBSSxDQUFDVyxlQVJqQixFQVFrQ1QsWUFBWSxDQUFDYyxVQVIvQyxFQVEyRGQsWUFBWSxDQUFDd0IsV0FSeEUsRUFRc0Z0QixpQkFBaUIsQ0FBQ3VCLGlCQVJ4RztBQVNBdEIsYUFBYSxDQUFDSSxLQUFkLENBQW9CLFNBQXBCLEVBQ0tDLE9BREwsQ0FDYVYsSUFBSSxDQUFDVyxlQURsQixFQUNtQyxDQUFDQyxHQUFELEVBQU1DLEdBQU4sS0FBYztBQUFFQSxFQUFBQSxHQUFHLENBQUNDLFVBQUosQ0FBZSxHQUFmO0FBQXNCLENBRHpFLEVBRUtJLElBRkwsQ0FFVWxCLElBQUksQ0FBQ1csZUFGZixFQUVnQ1QsWUFBWSxDQUFDYyxVQUY3QyxFQUUwRFosaUJBQWlCLENBQUN3QixvQkFGNUUsRSxDQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUF2QixhQUFhLENBQUNJLEtBQWQsQ0FBb0IsYUFBcEIsRUFDS0MsT0FETCxDQUNhVixJQUFJLENBQUNXLGVBRGxCLEVBQ21DLENBQUNDLEdBQUQsRUFBTUMsR0FBTixLQUFjO0FBQUVBLEVBQUFBLEdBQUcsQ0FBQ0MsVUFBSixDQUFlLEdBQWY7QUFBc0IsQ0FEekUsRUFFS0MsR0FGTCxDQUVTZixJQUFJLENBQUNBLElBRmQsRUFFb0JFLFlBQVksQ0FBQ2MsVUFGakMsRUFFK0NaLGlCQUFpQixDQUFDeUIscUJBRmpFLEVBR0tYLElBSEwsQ0FHVWxCLElBQUksQ0FBQ1csZUFIZixFQUdnQyxDQUFDQyxHQUFELEVBQU1DLEdBQU4sRUFBV1MsSUFBWCxLQUFvQjtBQUM1Q1QsRUFBQUEsR0FBRyxDQUFDVSxVQUFKLEdBQWlCLEdBQWpCO0FBQ0FWLEVBQUFBLEdBQUcsQ0FBQ1csR0FBSixDQUFRLCtDQUErQ1osR0FBRyxDQUFDa0IsTUFBSixDQUFXQyxTQUFsRTtBQUNILENBTkwsRUFPS1YsR0FQTCxDQU9TckIsSUFBSSxDQUFDVyxlQVBkLEVBTytCVCxZQUFZLENBQUNjLFVBUDVDLEVBT3dEZCxZQUFZLENBQUNpQixlQVByRSxFQU91RmYsaUJBQWlCLENBQUM0Qix3QkFQekcsRUFRS1AsTUFSTCxDQVFZekIsSUFBSSxDQUFDVyxlQVJqQixFQVFtQ1QsWUFBWSxDQUFDYyxVQVJoRCxFQVE0RGQsWUFBWSxDQUFDaUIsZUFSekUsRUFRMEZmLGlCQUFpQixDQUFDNkIsa0JBUjVHO0FBVUFDLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQjlCLGFBQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZXhwcmVzcyA9IHJlcXVpcmUoJ2V4cHJlc3MnKTtcclxuY29uc3QgYm9keVBhcnNlciA9IHJlcXVpcmUoJ2JvZHktcGFyc2VyJyk7XHJcblxyXG5jb25zdCBjb3JzID0gcmVxdWlyZSgnLi9jb3JzJyk7XHJcbmNvbnN0IHsgY2hlY2tTY2hlbWEgfSA9IHJlcXVpcmUoJ2V4cHJlc3MtdmFsaWRhdG9yJyk7XHJcbnZhciBhdXRoZW50aWNhdGUgPSByZXF1aXJlKCcuLi9taWRkbGV3YXJlL2F1dGhlbnRpY2F0ZScpO1xyXG52YXIgdmFsaWRhdGlvblJ1bGVzID0gcmVxdWlyZSgnLi4vbWlkZGxld2FyZS92YWxpZGF0aW9uJyk7XHJcbmNvbnN0IHRvdXJpc3RDb250cm9sbGVyID0gcmVxdWlyZSgnLi4vY29udHJvbGxlcnMvdG91cmlzdENvbnRyb2xsZXInKVxyXG5cclxuY29uc3QgdG91cmlzdFJvdXRlciA9IGV4cHJlc3MuUm91dGVyKCk7XHJcblxyXG50b3VyaXN0Um91dGVyLnVzZShib2R5UGFyc2VyLmpzb24oKSk7XHJcblxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbi8vIFxyXG4vLyAgICAgICAgICAgICAgVG91cmlzdCBSb3V0ZXNcclxuLy8gXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbnRvdXJpc3RSb3V0ZXIucm91dGUoJy8nKVxyXG4gICAgLm9wdGlvbnMoY29ycy5jb3JzV2l0aE9wdGlvbnMsIChyZXEsIHJlcykgPT4geyByZXMuc2VuZFN0YXR1cygyMDApOyB9KVxyXG4gICAgLmdldChjb3JzLmNvcnMsICBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgICB0b3VyaXN0Q29udHJvbGxlci5nZXRBbGxUb3VyaXN0cylcclxuICAgIC5wb3N0KGNvcnMuY29yc1dpdGhPcHRpb25zLCAgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlNb2RlcmF0ZXIsIHRvdXJpc3RDb250cm9sbGVyLmFkZFRvdXJpc3QpXHJcbiAgICAucHV0KGNvcnMuY29yc1dpdGhPcHRpb25zLCAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwMztcclxuICAgICAgICByZXMuZW5kKCdQVVQgb3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQgb24gL3RvdXJpc3RzJyk7XHJcbiAgICB9KVxyXG4gICAgLmRlbGV0ZShjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgIHRvdXJpc3RDb250cm9sbGVyLmRlbGV0ZUFsbFRvdXJpc3RzKTtcclxudG91cmlzdFJvdXRlci5yb3V0ZSgnL3NlYXJjaCcpXHJcbiAgICAub3B0aW9ucyhjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcbiAgICAucG9zdChjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsICB0b3VyaXN0Q29udHJvbGxlci5nZXRBbGxUb3VyaXN0c0J5TmFtZSk7XHJcblxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbi8vIFxyXG4vLyAgICAgICAgICAgICAgVG91cmlzdCBSb3V0ZXMgU3BlY2lmaWVkIGJ5IElEXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG50b3VyaXN0Um91dGVyLnJvdXRlKCcvOnRvdXJpc3RJZCcpXHJcbiAgICAub3B0aW9ucyhjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcbiAgICAuZ2V0KGNvcnMuY29ycywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsICAgdG91cmlzdENvbnRyb2xsZXIuZ2V0VG91cmlzdERldGFpbHNCeUlkKVxyXG4gICAgLnBvc3QoY29ycy5jb3JzV2l0aE9wdGlvbnMsIChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNDAzO1xyXG4gICAgICAgIHJlcy5lbmQoJ1BPU1Qgb3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQgb24gL3RvdXJpc3RzLycgKyByZXEucGFyYW1zLnRvdXJpc3RJZCk7XHJcbiAgICB9KVxyXG4gICAgLnB1dChjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlNb2RlcmF0ZXIsICB0b3VyaXN0Q29udHJvbGxlci51cGRhdGVUb3VyaXN0RGV0YWlsc0J5SWQpXHJcbiAgICAuZGVsZXRlKGNvcnMuY29yc1dpdGhPcHRpb25zLCAgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlNb2RlcmF0ZXIsIHRvdXJpc3RDb250cm9sbGVyLmRlbGV0ZUFUb3VyaXN0QnlJZCk7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IHRvdXJpc3RSb3V0ZXI7Il19\",\"originalCode\":\"const express = require('express');\\r\\nconst bodyParser = require('body-parser');\\r\\n\\r\\nconst cors = require('./cors');\\r\\nconst { checkSchema } = require('express-validator');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\nvar validationRules = require('../middleware/validation');\\r\\nconst touristController = require('../controllers/touristController')\\r\\n\\r\\nconst touristRouter = express.Router();\\r\\n\\r\\ntouristRouter.use(bodyParser.json());\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Tourist Routes\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\ntouristRouter.route('/')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, touristController.getAllTourists)\\r\\n .post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, touristController.addTourist)\\r\\n .put(cors.corsWithOptions, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('PUT operation not supported on /tourists');\\r\\n })\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, touristController.deleteAllTourists);\\r\\ntouristRouter.route('/search')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .post(cors.corsWithOptions, authenticate.verifyUser, touristController.getAllTouristsByName);\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Tourist Routes Specified by ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\ntouristRouter.route('/:touristId')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, touristController.getTouristDetailsById)\\r\\n .post(cors.corsWithOptions, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('POST operation not supported on /tourists/' + req.params.touristId);\\r\\n })\\r\\n .put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, touristController.updateTouristDetailsById)\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, touristController.deleteATouristById);\\r\\n\\r\\nmodule.exports = touristRouter;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/0a/touristRouter_0ad938586662daadc81c6cb1ad2e0f53.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2545\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\touristRouter.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":9165,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":9162,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":796,\"endOffset\":836,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1050,\"endOffset\":1152,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1333,\"endOffset\":1373,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1761,\"endOffset\":1801,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1911,\"endOffset\":2038,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const Tourists = require('../models/users');\\n\\nconst utils = require('../utils/utils'); // **********************************************************************************\\n// \\n// Tourist Operations \\n// \\n// **********************************************************************************\\n\\n\\nconst getAllTourists = (req, res, next) => {\\n var query = {\\n \\\"role\\\": \\\"user\\\"\\n }; // var obj = Object.assign(query, { $text: { $search: searchBy } });\\n\\n Tourists.find(query).then(tourists => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n tourists: tourists\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst getAllTouristsByName = (req, res, next) => {\\n var query = {\\n \\\"role\\\": \\\"user\\\"\\n };\\n\\n if (req.body.similarTo) {\\n var searchBy = req.body.similarTo || {};\\n query = {\\n \\\"role\\\": \\\"user\\\",\\n $text: {\\n $search: searchBy\\n }\\n };\\n }\\n\\n var sortby = req.body.sortBy || {};\\n Tourists.find(query).sort(sortby).then(tourists => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n tourists: tourists\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst addTourist = async (req, res, next) => {\\n const randomPassword = utils.password_generator(10);\\n var tourist = {\\n username: req.body.email,\\n firstname: req.body.firstname,\\n lastname: req.body.lastname,\\n email: req.body.email,\\n mobile: req.body.mobile,\\n role: 'user'\\n };\\n\\n try {\\n Tourists.register(new Tourists(tourist), randomPassword, (err, tourist) => {\\n if (err) {\\n res.statusCode = 403;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: err.message\\n });\\n } else {\\n tourist.save((err, tourist) => {\\n if (err) {\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Error while Saving new user.'\\n });\\n }\\n\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n email: tourist.email,\\n password: randomPassword\\n });\\n });\\n }\\n });\\n } catch (error) {\\n next(err);\\n }\\n};\\n\\nconst deleteAllTourists = (req, res, next) => {\\n Tourists.remove({\\n \\\"role\\\": \\\"user\\\"\\n }).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n response: resp\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nexports.getAllTourists = getAllTourists;\\nexports.getAllTouristsByName = getAllTouristsByName;\\nexports.addTourist = addTourist;\\nexports.deleteAllTourists = deleteAllTourists; // **********************************************************************************\\n// \\n// Tourist Operations Specified by ID\\n// \\n// **********************************************************************************\\n\\nconst getTouristDetailsById = (req, res, next) => {\\n var touristId = req.params.touristId;\\n Tourists.findById(touristId).then(tourist => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n tourist: tourist\\n });\\n }, err => {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Could not find tourist with given ID'\\n });\\n }).catch(err => next(err));\\n};\\n\\nconst updateTouristDetailsById = (req, res, next) => {\\n Tourists.findByIdAndUpdate(req.params.touristId, {\\n $set: req.body\\n }, {\\n new: true\\n }).then(tourist => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n tourist: tourist\\n });\\n }, err => {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Could not find tourist with given ID'\\n });\\n }).catch(err => next(err));\\n};\\n\\nconst deleteATouristById = (req, res, next) => {\\n Tourists.findByIdAndRemove(req.params.touristId).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n response: resp\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nexports.getTouristDetailsById = getTouristDetailsById;\\nexports.updateTouristDetailsById = updateTouristDetailsById;\\nexports.deleteATouristById = deleteATouristById;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRvdXJpc3RDb250cm9sbGVyLmpzIl0sIm5hbWVzIjpbIlRvdXJpc3RzIiwicmVxdWlyZSIsInV0aWxzIiwiZ2V0QWxsVG91cmlzdHMiLCJyZXEiLCJyZXMiLCJuZXh0IiwicXVlcnkiLCJmaW5kIiwidGhlbiIsInRvdXJpc3RzIiwic3RhdHVzQ29kZSIsInNldEhlYWRlciIsImpzb24iLCJzdWNjZXNzIiwiZXJyIiwiY2F0Y2giLCJnZXRBbGxUb3VyaXN0c0J5TmFtZSIsImJvZHkiLCJzaW1pbGFyVG8iLCJzZWFyY2hCeSIsIiR0ZXh0IiwiJHNlYXJjaCIsInNvcnRieSIsInNvcnRCeSIsInNvcnQiLCJhZGRUb3VyaXN0IiwicmFuZG9tUGFzc3dvcmQiLCJwYXNzd29yZF9nZW5lcmF0b3IiLCJ0b3VyaXN0IiwidXNlcm5hbWUiLCJlbWFpbCIsImZpcnN0bmFtZSIsImxhc3RuYW1lIiwibW9iaWxlIiwicm9sZSIsInJlZ2lzdGVyIiwibWVzc2FnZSIsInNhdmUiLCJwYXNzd29yZCIsImVycm9yIiwiZGVsZXRlQWxsVG91cmlzdHMiLCJyZW1vdmUiLCJyZXNwIiwicmVzcG9uc2UiLCJleHBvcnRzIiwiZ2V0VG91cmlzdERldGFpbHNCeUlkIiwidG91cmlzdElkIiwicGFyYW1zIiwiZmluZEJ5SWQiLCJ1cGRhdGVUb3VyaXN0RGV0YWlsc0J5SWQiLCJmaW5kQnlJZEFuZFVwZGF0ZSIsIiRzZXQiLCJuZXciLCJkZWxldGVBVG91cmlzdEJ5SWQiLCJmaW5kQnlJZEFuZFJlbW92ZSJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsUUFBUSxHQUFHQyxPQUFPLENBQUMsaUJBQUQsQ0FBeEI7O0FBQ0EsTUFBTUMsS0FBSyxHQUFHRCxPQUFPLENBQUMsZ0JBQUQsQ0FBckIsQyxDQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBLE1BQU1FLGNBQWMsR0FBRyxDQUFDQyxHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUN2QyxNQUFJQyxLQUFLLEdBQUc7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RUFBRTtBQUEzQixLQUFUO0FBQ0gsR0FYTCxFQVlLckIsS0FaTCxDQVlZRCxHQUFELElBQVNULElBQUksQ0FBQ1MsR0FBRCxDQVp4QjtBQWFILENBZkQ7O0FBaUJBLE1BQU11QyxrQkFBa0IsR0FBRyxDQUFDbEQsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDM0NOLEVBQUFBLFFBQVEsQ0FBQ3VELGlCQUFULENBQTJCbkQsR0FBRyxDQUFDNEMsTUFBSixDQUFXRCxTQUF0QyxFQUNLdEMsSUFETCxDQUNXa0MsSUFBRCxJQUFVO0FBQ1p0QyxJQUFBQSxHQUFHLENBQUNNLFVBQUosR0FBaUIsR0FBakI7QUFDQU4sSUFBQUEsR0FBRyxDQUFDTyxTQUFKLENBQWMsY0FBZCxFQUE4QixrQkFBOUI7QUFDQVAsSUFBQUEsR0FBRyxDQUFDUSxJQUFKLENBQVM7QUFBRUMsTUFBQUEsT0FBTyxFQUFFLElBQVg7QUFBaUI4QixNQUFBQSxRQUFRLEVBQUVEO0FBQTNCLEtBQVQ7QUFDSCxHQUxMLEVBS1E1QixHQUFELElBQVNULElBQUksQ0FBQ1MsR0FBRCxDQUxwQixFQU1LQyxLQU5MLENBTVlELEdBQUQsSUFBU1QsSUFBSSxDQUFDUyxHQUFELENBTnhCO0FBT0gsQ0FSRDs7QUFVQThCLE9BQU8sQ0FBQ0MscUJBQVIsR0FBZ0NBLHFCQUFoQztBQUNBRCxPQUFPLENBQUNLLHdCQUFSLEdBQW1DQSx3QkFBbkM7QUFDQUwsT0FBTyxDQUFDUyxrQkFBUixHQUE2QkEsa0JBQTdCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgVG91cmlzdHMgPSByZXF1aXJlKCcuLi9tb2RlbHMvdXNlcnMnKTtcclxuY29uc3QgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscy91dGlscycpO1xyXG5cclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyBcclxuLy8gICAgICAgICAgICAgIFRvdXJpc3QgT3BlcmF0aW9ucyBcclxuLy8gXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbmNvbnN0IGdldEFsbFRvdXJpc3RzID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICB2YXIgcXVlcnkgPSB7IFwicm9sZVwiOiBcInVzZXJcIiB9O1xyXG4gICAgLy8gdmFyIG9iaiA9IE9iamVjdC5hc3NpZ24ocXVlcnksIHsgJHRleHQ6IHsgJHNlYXJjaDogc2VhcmNoQnkgfSB9KTtcclxuICAgICBUb3VyaXN0cy5maW5kKHF1ZXJ5KVxyXG4gICAgICAgIC50aGVuKCh0b3VyaXN0cykgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCB0b3VyaXN0czogdG91cmlzdHMgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpO1xyXG59XHJcblxyXG5jb25zdCBnZXRBbGxUb3VyaXN0c0J5TmFtZSA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgdmFyIHF1ZXJ5ID0geyBcInJvbGVcIjogXCJ1c2VyXCIgfTtcclxuICAgIGlmIChyZXEuYm9keS5zaW1pbGFyVG8pIHtcclxuICAgICAgICB2YXIgc2VhcmNoQnkgPSByZXEuYm9keS5zaW1pbGFyVG8gfHwge31cclxuICAgICAgICBxdWVyeSA9IHsgXCJyb2xlXCI6IFwidXNlclwiLCAkdGV4dDogeyAkc2VhcmNoOiBzZWFyY2hCeSB9IH1cclxuICAgIH1cclxuXHJcbiAgICB2YXIgc29ydGJ5ID0gcmVxLmJvZHkuc29ydEJ5IHx8IHt9O1xyXG4gICAgVG91cmlzdHMuZmluZChxdWVyeSkuc29ydChzb3J0YnkpXHJcbiAgICAgICAgLnRoZW4oKHRvdXJpc3RzKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHRvdXJpc3RzOiB0b3VyaXN0cyB9KTtcclxuICAgICAgICB9LCAoZXJyKSA9PiBuZXh0KGVycikpXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IG5leHQoZXJyKSk7XHJcbn1cclxuXHJcbmNvbnN0IGFkZFRvdXJpc3QgPSBhc3luYyAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIGNvbnN0IHJhbmRvbVBhc3N3b3JkID0gdXRpbHMucGFzc3dvcmRfZ2VuZXJhdG9yKDEwKTtcclxuICAgIHZhciB0b3VyaXN0ID0ge1xyXG4gICAgICAgIHVzZXJuYW1lOiByZXEuYm9keS5lbWFpbCxcclxuICAgICAgICBmaXJzdG5hbWU6IHJlcS5ib2R5LmZpcnN0bmFtZSxcclxuICAgICAgICBsYXN0bmFtZTogcmVxLmJvZHkubGFzdG5hbWUsXHJcbiAgICAgICAgZW1haWw6IHJlcS5ib2R5LmVtYWlsLFxyXG4gICAgICAgIG1vYmlsZTogcmVxLmJvZHkubW9iaWxlLFxyXG4gICAgICAgIHJvbGU6ICd1c2VyJ1xyXG4gICAgfVxyXG4gICAgdHJ5IHtcclxuICAgICAgICBUb3VyaXN0cy5yZWdpc3RlcihuZXcgVG91cmlzdHModG91cmlzdCksXHJcbiAgICAgICAgICAgIHJhbmRvbVBhc3N3b3JkLCAoZXJyLCB0b3VyaXN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IGZhbHNlLCBtZXNzYWdlOiBlcnIubWVzc2FnZSB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRvdXJpc3Quc2F2ZSgoZXJyLCB0b3VyaXN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNTAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IGZhbHNlLCBtZXNzYWdlOiAnRXJyb3Igd2hpbGUgU2F2aW5nIG5ldyB1c2VyLicgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgZW1haWw6IHRvdXJpc3QuZW1haWwsIHBhc3N3b3JkOiByYW5kb21QYXNzd29yZCB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgbmV4dChlcnIpO1xyXG4gICAgfVxyXG59XHJcblxyXG5jb25zdCBkZWxldGVBbGxUb3VyaXN0cyA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgVG91cmlzdHMucmVtb3ZlKHsgXCJyb2xlXCI6IFwidXNlclwiIH0pXHJcbiAgICAgICAgLnRoZW4oKHJlc3ApID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgcmVzcG9uc2U6IHJlc3AgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpO1xyXG59XHJcblxyXG5leHBvcnRzLmdldEFsbFRvdXJpc3RzID0gZ2V0QWxsVG91cmlzdHM7XHJcbmV4cG9ydHMuZ2V0QWxsVG91cmlzdHNCeU5hbWUgPSBnZXRBbGxUb3VyaXN0c0J5TmFtZTtcclxuZXhwb3J0cy5hZGRUb3VyaXN0ID0gYWRkVG91cmlzdDtcclxuZXhwb3J0cy5kZWxldGVBbGxUb3VyaXN0cyA9IGRlbGV0ZUFsbFRvdXJpc3RzO1xyXG5cclxuXHJcblxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbi8vIFxyXG4vLyAgICAgICAgICAgICAgVG91cmlzdCBPcGVyYXRpb25zIFNwZWNpZmllZCBieSBJRFxyXG4vLyBcclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuY29uc3QgZ2V0VG91cmlzdERldGFpbHNCeUlkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICB2YXIgdG91cmlzdElkID0gcmVxLnBhcmFtcy50b3VyaXN0SWQ7XHJcbiAgICBUb3VyaXN0cy5maW5kQnlJZCh0b3VyaXN0SWQpXHJcbiAgICAgICAgLnRoZW4oKHRvdXJpc3QpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgdG91cmlzdDogdG91cmlzdCB9KTtcclxuICAgICAgICB9LCAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNDA0O1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IGZhbHNlLCBtZXNzYWdlOiAnQ291bGQgbm90IGZpbmQgdG91cmlzdCB3aXRoIGdpdmVuIElEJyB9KTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpOyBcclxufVxyXG5cclxuY29uc3QgdXBkYXRlVG91cmlzdERldGFpbHNCeUlkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICBcclxuICAgIFRvdXJpc3RzLmZpbmRCeUlkQW5kVXBkYXRlKHJlcS5wYXJhbXMudG91cmlzdElkLCB7XHJcbiAgICAgICAgJHNldDogcmVxLmJvZHlcclxuICAgIH0sIHsgbmV3OiB0cnVlIH0pXHJcbiAgICAgICAgLnRoZW4oKHRvdXJpc3QpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgdG91cmlzdDogdG91cmlzdCB9KTtcclxuICAgICAgICB9LCAoZXJyKSA9PiAge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwNDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogJ0NvdWxkIG5vdCBmaW5kIHRvdXJpc3Qgd2l0aCBnaXZlbiBJRCcgfSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuY29uc3QgZGVsZXRlQVRvdXJpc3RCeUlkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICBUb3VyaXN0cy5maW5kQnlJZEFuZFJlbW92ZShyZXEucGFyYW1zLnRvdXJpc3RJZClcclxuICAgICAgICAudGhlbigocmVzcCkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCByZXNwb25zZTogcmVzcCB9KTtcclxuICAgICAgICB9LCAoZXJyKSA9PiBuZXh0KGVycikpXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IG5leHQoZXJyKSk7XHJcbn1cclxuXHJcbmV4cG9ydHMuZ2V0VG91cmlzdERldGFpbHNCeUlkID0gZ2V0VG91cmlzdERldGFpbHNCeUlkO1xyXG5leHBvcnRzLnVwZGF0ZVRvdXJpc3REZXRhaWxzQnlJZCA9IHVwZGF0ZVRvdXJpc3REZXRhaWxzQnlJZDtcclxuZXhwb3J0cy5kZWxldGVBVG91cmlzdEJ5SWQgPSBkZWxldGVBVG91cmlzdEJ5SWQ7XHJcblxyXG5cclxuIl19\",\"originalCode\":\"const Tourists = require('../models/users');\\r\\nconst utils = require('../utils/utils');\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Tourist Operations \\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nconst getAllTourists = (req, res, next) => {\\r\\n var query = { \\\"role\\\": \\\"user\\\" };\\r\\n // var obj = Object.assign(query, { $text: { $search: searchBy } });\\r\\n Tourists.find(query)\\r\\n .then((tourists) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, tourists: tourists });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst getAllTouristsByName = (req, res, next) => {\\r\\n var query = { \\\"role\\\": \\\"user\\\" };\\r\\n if (req.body.similarTo) {\\r\\n var searchBy = req.body.similarTo || {}\\r\\n query = { \\\"role\\\": \\\"user\\\", $text: { $search: searchBy } }\\r\\n }\\r\\n\\r\\n var sortby = req.body.sortBy || {};\\r\\n Tourists.find(query).sort(sortby)\\r\\n .then((tourists) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, tourists: tourists });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst addTourist = async (req, res, next) => {\\r\\n const randomPassword = utils.password_generator(10);\\r\\n var tourist = {\\r\\n username: req.body.email,\\r\\n firstname: req.body.firstname,\\r\\n lastname: req.body.lastname,\\r\\n email: req.body.email,\\r\\n mobile: req.body.mobile,\\r\\n role: 'user'\\r\\n }\\r\\n try {\\r\\n Tourists.register(new Tourists(tourist),\\r\\n randomPassword, (err, tourist) => {\\r\\n if (err) {\\r\\n res.statusCode = 403;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: err.message });\\r\\n }\\r\\n else {\\r\\n tourist.save((err, tourist) => {\\r\\n if (err) {\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Error while Saving new user.' });\\r\\n }\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, email: tourist.email, password: randomPassword });\\r\\n });\\r\\n }\\r\\n });\\r\\n } catch (error) {\\r\\n next(err);\\r\\n }\\r\\n}\\r\\n\\r\\nconst deleteAllTourists = (req, res, next) => {\\r\\n Tourists.remove({ \\\"role\\\": \\\"user\\\" })\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, response: resp });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nexports.getAllTourists = getAllTourists;\\r\\nexports.getAllTouristsByName = getAllTouristsByName;\\r\\nexports.addTourist = addTourist;\\r\\nexports.deleteAllTourists = deleteAllTourists;\\r\\n\\r\\n\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Tourist Operations Specified by ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nconst getTouristDetailsById = (req, res, next) => {\\r\\n var touristId = req.params.touristId;\\r\\n Tourists.findById(touristId)\\r\\n .then((tourist) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, tourist: tourist });\\r\\n }, (err) => {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Could not find tourist with given ID' });\\r\\n })\\r\\n .catch((err) => next(err)); \\r\\n}\\r\\n\\r\\nconst updateTouristDetailsById = (req, res, next) => {\\r\\n \\r\\n Tourists.findByIdAndUpdate(req.params.touristId, {\\r\\n $set: req.body\\r\\n }, { new: true })\\r\\n .then((tourist) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, tourist: tourist });\\r\\n }, (err) => {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Could not find tourist with given ID' });\\r\\n })\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst deleteATouristById = (req, res, next) => {\\r\\n Tourists.findByIdAndRemove(req.params.touristId)\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, response: resp });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nexports.getTouristDetailsById = getTouristDetailsById;\\r\\nexports.updateTouristDetailsById = updateTouristDetailsById;\\r\\nexports.deleteATouristById = deleteATouristById;\\r\\n\\r\\n\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/ff/touristController_ff3455758448d6e0c4e2be11f313067b.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2546\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\touristController.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":20391,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":20388,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"getAllTourists\",\"ranges\":[{\"startOffset\":417,\"endOffset\":790,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getAllTouristsByName\",\"ranges\":[{\"startOffset\":822,\"endOffset\":1347,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"addTourist\",\"ranges\":[{\"startOffset\":1369,\"endOffset\":2534,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"deleteAllTourists\",\"ranges\":[{\"startOffset\":2563,\"endOffset\":2839,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getTouristDetailsById\",\"ranges\":[{\"startOffset\":3278,\"endOffset\":3762,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"updateTouristDetailsById\",\"ranges\":[{\"startOffset\":3798,\"endOffset\":4309,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"deleteATouristById\",\"ranges\":[{\"startOffset\":4339,\"endOffset\":4622,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const express = require('express');\\n\\nconst bodyParser = require('body-parser');\\n\\nconst cors = require('./cors');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nconst dashboardController = require('../controllers/dashboardController');\\n\\nconst dashboardRouter = express.Router();\\ndashboardRouter.use(bodyParser.json());\\ndashboardRouter.route('/admin').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, authenticate.verifyAdmin, dashboardController.getDashboard);\\nmodule.exports = dashboardRouter;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRhc2hib2FyZFJvdXRlci5qcyJdLCJuYW1lcyI6WyJleHByZXNzIiwicmVxdWlyZSIsImJvZHlQYXJzZXIiLCJjb3JzIiwiYXV0aGVudGljYXRlIiwiZGFzaGJvYXJkQ29udHJvbGxlciIsImRhc2hib2FyZFJvdXRlciIsIlJvdXRlciIsInVzZSIsImpzb24iLCJyb3V0ZSIsIm9wdGlvbnMiLCJjb3JzV2l0aE9wdGlvbnMiLCJyZXEiLCJyZXMiLCJzZW5kU3RhdHVzIiwiZ2V0IiwidmVyaWZ5VXNlciIsInZlcmlmeUFkbWluIiwiZ2V0RGFzaGJvYXJkIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsT0FBTyxHQUFHQyxPQUFPLENBQUMsU0FBRCxDQUF2Qjs7QUFDQSxNQUFNQyxVQUFVLEdBQUdELE9BQU8sQ0FBQyxhQUFELENBQTFCOztBQUVBLE1BQU1FLElBQUksR0FBR0YsT0FBTyxDQUFDLFFBQUQsQ0FBcEI7O0FBQ0EsSUFBSUcsWUFBWSxHQUFHSCxPQUFPLENBQUMsNEJBQUQsQ0FBMUI7O0FBQ0EsTUFBTUksbUJBQW1CLEdBQUdKLE9BQU8sQ0FBQyxvQ0FBRCxDQUFuQzs7QUFFQSxNQUFNSyxlQUFlLEdBQUdOLE9BQU8sQ0FBQ08sTUFBUixFQUF4QjtBQUVBRCxlQUFlLENBQUNFLEdBQWhCLENBQW9CTixVQUFVLENBQUNPLElBQVgsRUFBcEI7QUFFQUgsZUFBZSxDQUFDSSxLQUFoQixDQUFzQixRQUF0QixFQUNLQyxPQURMLENBQ2FSLElBQUksQ0FBQ1MsZUFEbEIsRUFDbUMsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEtBQWM7QUFBRUEsRUFBQUEsR0FBRyxDQUFDQyxVQUFKLENBQWUsR0FBZjtBQUFzQixDQUR6RSxFQUVLQyxHQUZMLENBRVNiLElBQUksQ0FBQ0EsSUFGZCxFQUVtQkMsWUFBWSxDQUFDYSxVQUZoQyxFQUU0Q2IsWUFBWSxDQUFDYyxXQUZ6RCxFQUVzRWIsbUJBQW1CLENBQUNjLFlBRjFGO0FBSUFDLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQmYsZUFBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBleHByZXNzID0gcmVxdWlyZSgnZXhwcmVzcycpO1xyXG5jb25zdCBib2R5UGFyc2VyID0gcmVxdWlyZSgnYm9keS1wYXJzZXInKTtcclxuXHJcbmNvbnN0IGNvcnMgPSByZXF1aXJlKCcuL2NvcnMnKTtcclxudmFyIGF1dGhlbnRpY2F0ZSA9IHJlcXVpcmUoJy4uL21pZGRsZXdhcmUvYXV0aGVudGljYXRlJyk7XHJcbmNvbnN0IGRhc2hib2FyZENvbnRyb2xsZXIgPSByZXF1aXJlKCcuLi9jb250cm9sbGVycy9kYXNoYm9hcmRDb250cm9sbGVyJyk7XHJcblxyXG5jb25zdCBkYXNoYm9hcmRSb3V0ZXIgPSBleHByZXNzLlJvdXRlcigpO1xyXG5cclxuZGFzaGJvYXJkUm91dGVyLnVzZShib2R5UGFyc2VyLmpzb24oKSk7XHJcblxyXG5kYXNoYm9hcmRSb3V0ZXIucm91dGUoJy9hZG1pbicpXHJcbiAgICAub3B0aW9ucyhjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcbiAgICAuZ2V0KGNvcnMuY29ycyxhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeUFkbWluLCBkYXNoYm9hcmRDb250cm9sbGVyLmdldERhc2hib2FyZCk7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IGRhc2hib2FyZFJvdXRlcjsiXX0=\",\"originalCode\":\"const express = require('express');\\r\\nconst bodyParser = require('body-parser');\\r\\n\\r\\nconst cors = require('./cors');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\nconst dashboardController = require('../controllers/dashboardController');\\r\\n\\r\\nconst dashboardRouter = express.Router();\\r\\n\\r\\ndashboardRouter.use(bodyParser.json());\\r\\n\\r\\ndashboardRouter.route('/admin')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors,authenticate.verifyUser, authenticate.verifyAdmin, dashboardController.getDashboard);\\r\\n\\r\\nmodule.exports = dashboardRouter;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/07/dashboardRouter_0791a49f2f45fc0f57ade98f27175c5c.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2547\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\dashboardRouter.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":2824,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":2821,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":482,\"endOffset\":522,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const Place = require('../models/visitingPlaces');\\n\\nconst User = require('../models/users');\\n\\nconst Schedule = require('../models/schedules');\\n\\nexports.getDashboard = async (req, res, next) => {\\n try {\\n const users_count = (await User.find().countDocuments()) - 1;\\n const tourist_count_total = await User.find({\\n \\\"role\\\": \\\"user\\\"\\n }).countDocuments();\\n const assistant_count_total = await User.find({\\n \\\"role\\\": \\\"moderater\\\"\\n }).countDocuments();\\n const tourist_count_in = await User.find({\\n \\\"role\\\": \\\"user\\\",\\n \\\"userstate\\\": \\\"in\\\"\\n }).countDocuments();\\n const place_count = await Place.find().countDocuments();\\n const place_names = await Place.find({}, {\\n _id: 0,\\n name: 1\\n });\\n const place_locations = await Place.find({}, {\\n _id: 0,\\n \\\"location.coordinates\\\": 1\\n });\\n var locations = [];\\n place_locations.forEach(element => {\\n var longitude = element.location.coordinates[0];\\n var latitude = element.location.coordinates[1];\\n locations.push({\\n longitude,\\n latitude\\n });\\n });\\n const schedules_count_total = await Schedule.find().countDocuments();\\n const schedules_count_new = await Schedule.find({\\n \\\"state\\\": \\\"new\\\"\\n }).countDocuments();\\n const schedules_count_canceled = await Schedule.find({\\n \\\"state\\\": \\\"cancled\\\"\\n }).countDocuments();\\n const schedules_count_notcompleted = await Schedule.find({\\n \\\"state\\\": \\\"notcompleted\\\"\\n }).countDocuments();\\n const schedules_count_completed = await Schedule.find({\\n \\\"state\\\": \\\"completed\\\"\\n }).countDocuments();\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n dashboardValues: {\\n users_count: users_count,\\n tourist_count_total: tourist_count_total,\\n assistant_count_total: assistant_count_total,\\n tourist_count_in: tourist_count_in,\\n place_count: place_count,\\n place_names: place_names,\\n place_locations: locations,\\n schedules_count_total: schedules_count_total,\\n schedules_count_new: schedules_count_new,\\n schedules_count_canceled: schedules_count_canceled,\\n schedules_count_notcompleted: schedules_count_notcompleted,\\n schedules_count_completed: schedules_count_completed\\n }\\n });\\n } catch (err) {\\n next(err);\\n }\\n};\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRhc2hib2FyZENvbnRyb2xsZXIuanMiXSwibmFtZXMiOlsiUGxhY2UiLCJyZXF1aXJlIiwiVXNlciIsIlNjaGVkdWxlIiwiZXhwb3J0cyIsImdldERhc2hib2FyZCIsInJlcSIsInJlcyIsIm5leHQiLCJ1c2Vyc19jb3VudCIsImZpbmQiLCJjb3VudERvY3VtZW50cyIsInRvdXJpc3RfY291bnRfdG90YWwiLCJhc3Npc3RhbnRfY291bnRfdG90YWwiLCJ0b3VyaXN0X2NvdW50X2luIiwicGxhY2VfY291bnQiLCJwbGFjZV9uYW1lcyIsIl9pZCIsIm5hbWUiLCJwbGFjZV9sb2NhdGlvbnMiLCJsb2NhdGlvbnMiLCJmb3JFYWNoIiwiZWxlbWVudCIsImxvbmdpdHVkZSIsImxvY2F0aW9uIiwiY29vcmRpbmF0ZXMiLCJsYXRpdHVkZSIsInB1c2giLCJzY2hlZHVsZXNfY291bnRfdG90YWwiLCJzY2hlZHVsZXNfY291bnRfbmV3Iiwic2NoZWR1bGVzX2NvdW50X2NhbmNlbGVkIiwic2NoZWR1bGVzX2NvdW50X25vdGNvbXBsZXRlZCIsInNjaGVkdWxlc19jb3VudF9jb21wbGV0ZWQiLCJzdGF0dXNDb2RlIiwic2V0SGVhZGVyIiwianNvbiIsInN1Y2Nlc3MiLCJkYXNoYm9hcmRWYWx1ZXMiLCJlcnIiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLEtBQUssR0FBR0MsT0FBTyxDQUFDLDBCQUFELENBQXJCOztBQUNBLE1BQU1DLElBQUksR0FBR0QsT0FBTyxDQUFDLGlCQUFELENBQXBCOztBQUNBLE1BQU1FLFFBQVEsR0FBR0YsT0FBTyxDQUFDLHFCQUFELENBQXhCOztBQUVBRyxPQUFPLENBQUNDLFlBQVIsR0FBdUIsT0FBT0MsR0FBUCxFQUFZQyxHQUFaLEVBQWlCQyxJQUFqQixLQUEwQjtBQUM3QyxNQUFJO0FBQ0EsVUFBTUMsV0FBVyxHQUFHLE9BQU1QLElBQUksQ0FBQ1EsSUFBTCxHQUFZQyxjQUFaLEVBQU4sSUFBcUMsQ0FBekQ7QUFDQSxVQUFNQyxtQkFB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QUFFQSw0QkFYRjtBQVk1QkMsUUFBQUEseUJBQXlCLEVBQUVBO0FBWkM7QUFEM0IsS0FBVDtBQWdCSCxHQXRDRCxDQXNDRSxPQUFPTSxHQUFQLEVBQVk7QUFDVjlCLElBQUFBLElBQUksQ0FBQzhCLEdBQUQsQ0FBSjtBQUNIO0FBQ0osQ0ExQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBQbGFjZSA9IHJlcXVpcmUoJy4uL21vZGVscy92aXNpdGluZ1BsYWNlcycpO1xyXG5jb25zdCBVc2VyID0gcmVxdWlyZSgnLi4vbW9kZWxzL3VzZXJzJyk7XHJcbmNvbnN0IFNjaGVkdWxlID0gcmVxdWlyZSgnLi4vbW9kZWxzL3NjaGVkdWxlcycpO1xyXG5cclxuZXhwb3J0cy5nZXREYXNoYm9hcmQgPSBhc3luYyAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgICAgY29uc3QgdXNlcnNfY291bnQgPSBhd2FpdCBVc2VyLmZpbmQoKS5jb3VudERvY3VtZW50cygpIC0gMTtcclxuICAgICAgICBjb25zdCB0b3VyaXN0X2NvdW50X3RvdGFsID0gYXdhaXQgVXNlci5maW5kKHsgXCJyb2xlXCI6IFwidXNlclwiIH0pLmNvdW50RG9jdW1lbnRzKCk7XHJcbiAgICAgICAgY29uc3QgYXNzaXN0YW50X2NvdW50X3RvdGFsID0gYXdhaXQgVXNlci5maW5kKHsgXCJyb2xlXCI6IFwibW9kZXJhdGVyXCIgfSkuY291bnREb2N1bWVudHMoKTtcclxuICAgICAgICBjb25zdCB0b3VyaXN0X2NvdW50X2luID0gYXdhaXQgVXNlci5maW5kKHsgXCJyb2xlXCI6IFwidXNlclwiLCBcInVzZXJzdGF0ZVwiOiBcImluXCIgfSkuY291bnREb2N1bWVudHMoKTtcclxuICAgICAgICBjb25zdCBwbGFjZV9jb3VudCA9IGF3YWl0IFBsYWNlLmZpbmQoKS5jb3VudERvY3VtZW50cygpO1xyXG4gICAgICAgIGNvbnN0IHBsYWNlX25hbWVzID0gYXdhaXQgUGxhY2UuZmluZCh7fSwgeyBfaWQ6IDAsIG5hbWU6IDEgfSk7XHJcbiAgICAgICAgY29uc3QgcGxhY2VfbG9jYXRpb25zID0gYXdhaXQgUGxhY2UuZmluZCh7fSwgeyBfaWQ6IDAsIFwibG9jYXRpb24uY29vcmRpbmF0ZXNcIjogMSB9KTtcclxuICAgICAgICB2YXIgbG9jYXRpb25zID0gW107XHJcbiAgICAgICAgcGxhY2VfbG9jYXRpb25zLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICAgIHZhciBsb25naXR1ZGUgPSBlbGVtZW50LmxvY2F0aW9uLmNvb3JkaW5hdGVzWzBdO1xyXG4gICAgICAgICAgICB2YXIgbGF0aXR1ZGUgPSBlbGVtZW50LmxvY2F0aW9uLmNvb3JkaW5hdGVzWzFdO1xyXG4gICAgICAgICAgICBsb2NhdGlvbnMucHVzaCh7IGxvbmdpdHVkZSwgbGF0aXR1ZGUgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgY29uc3Qgc2NoZWR1bGVzX2NvdW50X3RvdGFsID0gYXdhaXQgU2NoZWR1bGUuZmluZCgpLmNvdW50RG9jdW1lbnRzKCk7XHJcbiAgICAgICAgY29uc3Qgc2NoZWR1bGVzX2NvdW50X25ldyA9IGF3YWl0IFNjaGVkdWxlLmZpbmQoeyBcInN0YXRlXCI6IFwibmV3XCIgfSkuY291bnREb2N1bWVudHMoKTtcclxuICAgICAgICBjb25zdCBzY2hlZHVsZXNfY291bnRfY2FuY2VsZWQgPSBhd2FpdCBTY2hlZHVsZS5maW5kKHsgXCJzdGF0ZVwiOiBcImNhbmNsZWRcIiB9KS5jb3VudERvY3VtZW50cygpO1xyXG4gICAgICAgIGNvbnN0IHNjaGVkdWxlc19jb3VudF9ub3Rjb21wbGV0ZWQgPSBhd2FpdCBTY2hlZHVsZS5maW5kKHsgXCJzdGF0ZVwiOiBcIm5vdGNvbXBsZXRlZFwiIH0pLmNvdW50RG9jdW1lbnRzKCk7XHJcbiAgICAgICAgY29uc3Qgc2NoZWR1bGVzX2NvdW50X2NvbXBsZXRlZCA9IGF3YWl0IFNjaGVkdWxlLmZpbmQoeyBcInN0YXRlXCI6IFwiY29tcGxldGVkXCIgfSkuY291bnREb2N1bWVudHMoKTtcclxuXHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICByZXMuanNvbih7XHJcbiAgICAgICAgICAgIHN1Y2Nlc3M6IHRydWUsIGRhc2hib2FyZFZhbHVlczoge1xyXG4gICAgICAgICAgICAgICAgdXNlcnNfY291bnQ6IHVzZXJzX2NvdW50LFxyXG4gICAgICAgICAgICAgICAgdG91cmlzdF9jb3VudF90b3RhbDogdG91cmlzdF9jb3VudF90b3RhbCxcclxuICAgICAgICAgICAgICAgIGFzc2lzdGFudF9jb3VudF90b3RhbDogYXNzaXN0YW50X2NvdW50X3RvdGFsLFxyXG4gICAgICAgICAgICAgICAgdG91cmlzdF9jb3VudF9pbjogdG91cmlzdF9jb3VudF9pbixcclxuICAgICAgICAgICAgICAgIHBsYWNlX2NvdW50OiBwbGFjZV9jb3VudCxcclxuICAgICAgICAgICAgICAgIHBsYWNlX25hbWVzOiBwbGFjZV9uYW1lcyxcclxuICAgICAgICAgICAgICAgIHBsYWNlX2xvY2F0aW9uczogbG9jYXRpb25zLFxyXG4gICAgICAgICAgICAgICAgc2NoZWR1bGVzX2NvdW50X3RvdGFsOiBzY2hlZHVsZXNfY291bnRfdG90YWwsXHJcbiAgICAgICAgICAgICAgICBzY2hlZHVsZXNfY291bnRfbmV3OiBzY2hlZHVsZXNfY291bnRfbmV3LFxyXG4gICAgICAgICAgICAgICAgc2NoZWR1bGVzX2NvdW50X2NhbmNlbGVkOiBzY2hlZHVsZXNfY291bnRfY2FuY2VsZWQsXHJcbiAgICAgICAgICAgICAgICBzY2hlZHVsZXNfY291bnRfbm90Y29tcGxldGVkOiBzY2hlZHVsZXNfY291bnRfbm90Y29tcGxldGVkLFxyXG4gICAgICAgICAgICAgICAgc2NoZWR1bGVzX2NvdW50X2NvbXBsZXRlZDogc2NoZWR1bGVzX2NvdW50X2NvbXBsZXRlZFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICBuZXh0KGVycik7XHJcbiAgICB9XHJcbn1cclxuXHJcbiJdfQ==\",\"originalCode\":\"const Place = require('../models/visitingPlaces');\\r\\nconst User = require('../models/users');\\r\\nconst Schedule = require('../models/schedules');\\r\\n\\r\\nexports.getDashboard = async (req, res, next) => {\\r\\n try {\\r\\n const users_count = await User.find().countDocuments() - 1;\\r\\n const tourist_count_total = await User.find({ \\\"role\\\": \\\"user\\\" }).countDocuments();\\r\\n const assistant_count_total = await User.find({ \\\"role\\\": \\\"moderater\\\" }).countDocuments();\\r\\n const tourist_count_in = await User.find({ \\\"role\\\": \\\"user\\\", \\\"userstate\\\": \\\"in\\\" }).countDocuments();\\r\\n const place_count = await Place.find().countDocuments();\\r\\n const place_names = await Place.find({}, { _id: 0, name: 1 });\\r\\n const place_locations = await Place.find({}, { _id: 0, \\\"location.coordinates\\\": 1 });\\r\\n var locations = [];\\r\\n place_locations.forEach(element => {\\r\\n var longitude = element.location.coordinates[0];\\r\\n var latitude = element.location.coordinates[1];\\r\\n locations.push({ longitude, latitude });\\r\\n });\\r\\n const schedules_count_total = await Schedule.find().countDocuments();\\r\\n const schedules_count_new = await Schedule.find({ \\\"state\\\": \\\"new\\\" }).countDocuments();\\r\\n const schedules_count_canceled = await Schedule.find({ \\\"state\\\": \\\"cancled\\\" }).countDocuments();\\r\\n const schedules_count_notcompleted = await Schedule.find({ \\\"state\\\": \\\"notcompleted\\\" }).countDocuments();\\r\\n const schedules_count_completed = await Schedule.find({ \\\"state\\\": \\\"completed\\\" }).countDocuments();\\r\\n\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({\\r\\n success: true, dashboardValues: {\\r\\n users_count: users_count,\\r\\n tourist_count_total: tourist_count_total,\\r\\n assistant_count_total: assistant_count_total,\\r\\n tourist_count_in: tourist_count_in,\\r\\n place_count: place_count,\\r\\n place_names: place_names,\\r\\n place_locations: locations,\\r\\n schedules_count_total: schedules_count_total,\\r\\n schedules_count_new: schedules_count_new,\\r\\n schedules_count_canceled: schedules_count_canceled,\\r\\n schedules_count_notcompleted: schedules_count_notcompleted,\\r\\n schedules_count_completed: schedules_count_completed\\r\\n }\\r\\n });\\r\\n } catch (err) {\\r\\n next(err);\\r\\n }\\r\\n}\\r\\n\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/34/dashboardController_34872bbac017cfae6fcc33926d204118.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2548\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\dashboardController.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":9854,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":9851,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
.exports.getDashboard\",\"ranges\":[{\"startOffset\":256,\"endOffset\":2463,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const app = require('../../app');\\n\\nconst server = require(\\\"supertest\\\")(app);\\n\\nconst jwt_decode = require('jwt-decode');\\n\\nconst Users = require('../../models/users');\\n\\nvar userToken;\\nvar assistantToken;\\nvar adminToken;\\nvar passwordAssistant;\\nvar passwordUser;\\nconst admin = {\\n \\\"firstname\\\": \\\"Admin\\\",\\n \\\"lastname\\\": \\\"Admin\\\",\\n \\\"email\\\": \\\"admin@gmail.com\\\",\\n \\\"password\\\": \\\"admin-password\\\"\\n};\\nconst assistant = {\\n \\\"firstname\\\": \\\"Pasan\\\",\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\n \\\"email\\\": \\\"pasanFernamdo@gmail.com\\\"\\n};\\nconst tourist = {\\n \\\"firstname\\\": \\\"Sunil\\\",\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\n \\\"email\\\": \\\"sunilFernamdo@gmail.com\\\"\\n};\\n\\nconst signupAdmin = async () => {\\n await Users.deleteMany({});\\n await server.post(\\\"/users/signup/admin\\\").send(admin);\\n};\\n\\nconst getAdminToken = async () => {\\n if (adminToken) {\\n return adminToken;\\n }\\n\\n await signupAdmin();\\n var creds = {\\n username: admin.email,\\n password: admin.password\\n };\\n const response = await server.post(\\\"/users/login\\\").send(creds);\\n adminToken = response.body.token;\\n return adminToken;\\n};\\n\\nconst addAssistant = async () => {\\n if (!adminToken) {\\n await getAdminToken();\\n }\\n\\n const response = await server.post(\\\"/employees\\\").set(\\\"Authorization\\\", `Bearer ${adminToken}`).send(assistant).expect(200);\\n passwordAssistant = response.body.password;\\n};\\n\\nconst getAssistantToken = async () => {\\n if (assistantToken) {\\n return assistantToken;\\n }\\n\\n if (passwordAssistant == null) {\\n await addAssistant();\\n }\\n\\n var creds = {\\n username: assistant.email,\\n password: passwordAssistant\\n };\\n const response = await server.post(\\\"/users/login\\\").send(creds);\\n assistantToken = response.body.token;\\n return assistantToken;\\n};\\n\\nconst addTourist = async () => {\\n if (!assistantToken) {\\n await getAssistantToken();\\n }\\n\\n const response = await server.post(\\\"/tourists\\\").set(\\\"Authorization\\\", `Bearer ${assistantToken}`).send(tourist).expect(200);\\n passwordUser = response.body.password;\\n};\\n\\nconst getTouristToken = async () => {\\n if (userToken) {\\n return userToken;\\n }\\n\\n if (passwordUser == null) {\\n await addTourist();\\n }\\n\\n var creds = {\\n username: tourist.email,\\n password: passwordUser\\n };\\n const response = await server.post(\\\"/users/login\\\").send(creds);\\n userToken = response.body.token;\\n return userToken;\\n};\\n\\nconst getExistingId = async () => {\\n const newTourist = {\\n \\\"firstname\\\": \\\"Namal\\\",\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\n \\\"email\\\": \\\"namalfernamdo@gmail.com\\\",\\n \\\"mobile\\\": \\\"981114844\\\",\\n \\\"rommnumber\\\": \\\"41\\\"\\n };\\n const tourist = new Users(newTourist);\\n await tourist.save();\\n return tourist._id.toString();\\n};\\n\\nconst getNonExistingId = async () => {\\n const newTourist = {\\n \\\"firstname\\\": \\\"Kamal\\\",\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\n \\\"email\\\": \\\"kamalfernamdo@gmail.com\\\",\\n \\\"username\\\": \\\"kamalfernamdo@gmail.com\\\"\\n };\\n const tourist = new Users(newTourist);\\n await tourist.save();\\n await tourist.remove();\\n return tourist._id.toString();\\n};\\n\\nconst getExistingIdAssistanct = async () => {\\n const newAssistant = {\\n \\\"firstname\\\": \\\"Kasun\\\",\\n \\\"lastname\\\": \\\"Perera\\\",\\n \\\"email\\\": \\\"kasun@gmail.com\\\"\\n };\\n const assistant = new Users(newAssistant);\\n await assistant.save();\\n return assistant._id.toString();\\n};\\n\\nconst getNonExistingIdAssistant = async () => {\\n const newAssistant = {\\n \\\"firstname\\\": \\\"Kamal\\\",\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\n \\\"email\\\": \\\"kamalfernamdo@gmail.com\\\"\\n };\\n const assistant = new Users(newAssistant);\\n await assistant.save();\\n await assistant.remove();\\n return assistant._id.toString();\\n};\\n\\nconst decodeToken = token => {\\n var decoded = jwt_decode(token);\\n return decoded;\\n};\\n\\nmodule.exports = {\\n getAdminToken,\\n getAssistantToken,\\n getTouristToken,\\n decodeToken,\\n addTourist,\\n getTouristToken,\\n getExistingId,\\n getNonExistingId,\\n getExistingIdAssistanct,\\n getNonExistingIdAssistant,\\n addAssistant\\n};\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVzZXJfaGVscGVyLmpzIl0sIm5hbWVzIjpbImFwcCIsInJlcXVpcmUiLCJzZXJ2ZXIiLCJqd3RfZGVjb2RlIiwiVXNlcnMiLCJ1c2VyVG9rZW4iLCJhc3Npc3RhbnRUb2tlbiIsImFkbWluVG9rZW4iLCJwYXNzd29yZEFzc2lzdGFudCIsInBhc3N3b3JkVXNlciIsImFkbWluIiwiYXNzaXN0YW50IiwidG91cmlzdCIsInNpZ251cEFkbWluIiwiZGVsZXRlTWFueSIsInBvc3QiLCJzZW5kIiwiZ2V0QWRtaW5Ub2tlbiIsImNyZWRzIiwidXNlcm5hbWUiLCJlbWFpbCIsInBhc3N3b3JkIiwicmVzcG9uc2UiLCJib2R5IiwidG9rZW4iLCJhZGRBc3Npc3RhbnQiLCJzZXQiLCJleHBlY3QiLCJnZXRBc3Npc3RhbnRUb2tlbiIsImFkZFRvdXJpc3QiLCJnZXRUb3VyaXN0VG9rZW4iLCJnZXRFeGlzdGluZ0lkIiwibmV3VG91cmlzdCIsInNhdmUiLCJfaWQiLCJ0b1N0cmluZyIsImdldE5vbkV4aXN0aW5nSWQiLCJyZW1vdmUiLCJnZXRFeGlzdGluZ0lkQXNzaXN0YW5jdCIsIm5ld0Fzc2lzdGFudCIsImdldE5vbkV4aXN0aW5nSWRBc3Npc3RhbnQiLCJkZWNvZGVUb2tlbiIsImRlY29kZWQiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxHQUFHLEdBQUdDLE9BQU8sQ0FBQyxXQUFELENBQW5COztBQUNBLE1BQU1DLE1BQU0sR0FBR0QsT0FBTyxDQUFDLFdBQUQsQ0FBUCxDQUFxQkQsR0FBckIsQ0FBZjs7QUFDQSxNQUFNRyxVQUFVLEdBQUdGLE9BQU8sQ0FBQyxZQUFELENBQTFCOztBQUNBLE1BQU1HLEtBQUssR0FBR0gsT0FBTyxDQUFDLG9CQUFELENBQXJCOztBQUVBLElBQUlJLFNBQUo7QUFDQSxJQUFJQyxjQUFKO0FBQ0EsSUFBSUMsVUFBSjtBQUNBLElBQUlDLGlCQUFKO0FBQ0EsSUFBSUMsWUFBSjtBQUVBLE1BQU1DLEtB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dGVudCI6WyJjb25zdCBhcHAgPSByZXF1aXJlKCcuLi8uLi9hcHAnKTtcclxuY29uc3Qgc2VydmVyID0gcmVxdWlyZShcInN1cGVydGVzdFwiKShhcHApO1xyXG5jb25zdCBqd3RfZGVjb2RlID0gcmVxdWlyZSgnand0LWRlY29kZScpO1xyXG5jb25zdCBVc2VycyA9IHJlcXVpcmUoJy4uLy4uL21vZGVscy91c2VycycpO1xyXG5cclxudmFyIHVzZXJUb2tlbjtcclxudmFyIGFzc2lzdGFudFRva2VuO1xyXG52YXIgYWRtaW5Ub2tlbjtcclxudmFyIHBhc3N3b3JkQXNzaXN0YW50O1xyXG52YXIgcGFzc3dvcmRVc2VyO1xyXG5cclxuY29uc3QgYWRtaW4gPSB7XHJcbiAgICBcImZpcnN0bmFtZVwiOiBcIkFkbWluXCIsXHJcbiAgICBcImxhc3RuYW1lXCI6IFwiQWRtaW5cIixcclxuICAgIFwiZW1haWxcIjogXCJhZG1pbkBnbWFpbC5jb21cIixcclxuICAgIFwicGFzc3dvcmRcIjogXCJhZG1pbi1wYXNzd29yZFwiXHJcbn07XHJcbmNvbnN0IGFzc2lzdGFudCA9IHtcclxuICAgIFwiZmlyc3RuYW1lXCI6IFwiUGFzYW5cIixcclxuICAgIFwibGFzdG5hbWVcIjogXCJGZXJuYW1kb1wiLFxyXG4gICAgXCJlbWFpbFwiOiBcInBhc2FuRmVybmFtZG9AZ21haWwuY29tXCJcclxufTtcclxuY29uc3QgdG91cmlzdCA9IHtcclxuICAgIFwiZmlyc3RuYW1lXCI6IFwiU3VuaWxcIixcclxuICAgIFwibGFzdG5hbWVcIjogXCJGZXJuYW1kb1wiLFxyXG4gICAgXCJlbWFpbFwiOiBcInN1bmlsRmVybmFtZG9AZ21haWwuY29tXCJcclxufTtcclxuXHJcbmNvbnN0IHNpZ251cEFkbWluID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgYXdhaXQgVXNlcnMuZGVsZXRlTWFueSh7fSk7XHJcbiAgICBhd2FpdCBzZXJ2ZXJcclxuICAgICAgICAucG9zdChcIi91c2Vycy9zaWdudXAvYWRtaW5cIilcclxuICAgICAgICAuc2VuZChhZG1pbik7XHJcbn07XHJcblxyXG5jb25zdCBnZXRBZG1pblRva2VuID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgaWYgKGFkbWluVG9rZW4pIHtcclxuICAgICAgICByZXR1cm4gYWRtaW5Ub2tlbjtcclxuICAgIH1cclxuICAgIGF3YWl0IHNpZ251cEFkbWluKCk7XHJcbiAgICB2YXIgY3JlZHMgPSB7XHJcbiAgICAgICAgdXNlcm5hbWU6IGFkbWluLmVtYWlsLFxyXG4gICAgICAgIHBhc3N3b3JkOiBhZG1pbi5wYXNzd29yZCxcclxuICAgIH07XHJcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHNlcnZlclxyXG4gICAgICAgIC5wb3N0KFwiL3VzZXJzL2xvZ2luXCIpXHJcbiAgICAgICAgLnNlbmQoY3JlZHMpO1xyXG4gICAgYWRtaW5Ub2tlbiA9IHJlc3BvbnNlLmJvZHkudG9rZW47XHJcbiAgICByZXR1cm4gYWRtaW5Ub2tlbjtcclxufVxyXG5cclxuY29uc3QgYWRkQXNzaXN0YW50ID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgaWYgKCFhZG1pblRva2VuKSB7XHJcbiAgICAgICAgYXdhaXQgZ2V0QWRtaW5Ub2tlbigpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBzZXJ2ZXJcclxuICAgICAgICAucG9zdChcIi9lbXBsb3llZXNcIilcclxuICAgICAgICAuc2V0KFwiQXV0aG9yaXphdGlvblwiLCBgQmVhcmVyICR7YWRtaW5Ub2tlbn1gKVxyXG4gICAgICAgIC5zZW5kKGFzc2lzdGFudClcclxuICAgICAgICAuZXhwZWN0KDIwMCk7XHJcbiAgICAgICAgICAgXHJcbiAgICBwYXNzd29yZEFzc2lzdGFudCA9ICByZXNwb25zZS5ib2R5LnBhc3N3b3JkO1xyXG59O1xyXG5cclxuY29uc3QgZ2V0QXNzaXN0YW50VG9rZW4gPSBhc3luYyAoKSA9PiB7XHJcbiAgICBpZiAoYXNzaXN0YW50VG9rZW4pIHtcclxuICAgICAgICByZXR1cm4gYXNzaXN0YW50VG9rZW47XHJcbiAgICB9XHJcbiAgICBpZihwYXNzd29yZEFzc2lzdGFudD09bnVsbCl7YXdhaXQgYWRkQXNzaXN0YW50KCk7fVxyXG4gICAgdmFyIGNyZWRzID0ge1xyXG4gICAgICAgIHVzZXJuYW1lOiBhc3Npc3RhbnQuZW1haWwsXHJcbiAgICAgICAgcGFzc3dvcmQ6IHBhc3N3b3JkQXNzaXN0YW50LFxyXG4gICAgfTtcclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgc2VydmVyXHJcbiAgICAgICAgLnBvc3QoXCIvdXNlcnMvbG9naW5cIilcclxuICAgICAgICAuc2VuZChjcmVkcyk7XHJcbiAgICBhc3Npc3RhbnRUb2tlbiA9IHJlc3BvbnNlLmJvZHkudG9rZW47XHJcbiAgICByZXR1cm4gYXNzaXN0YW50VG9rZW47XHJcbn1cclxuXHJcbmNvbnN0IGFkZFRvdXJpc3QgPSBhc3luYyAoKSA9PiB7XHJcbiAgICBpZiAoIWFzc2lzdGFudFRva2VuKSB7XHJcbiAgICAgICAgYXdhaXQgZ2V0QXNzaXN0YW50VG9rZW4oKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgc2VydmVyXHJcbiAgICAgICAgLnBvc3QoXCIvdG91cmlzdHNcIilcclxuICAgICAgICAuc2V0KFwiQXV0aG9yaXphdGlvblwiLCBgQmVhcmVyICR7YXNzaXN0YW50VG9rZW59YClcclxuICAgICAgICAuc2VuZCh0b3VyaXN0KVxyXG4gICAgICAgIC5leHBlY3QoMjAwKTtcclxuICAgIHBhc3N3b3JkVXNlcj0gIHJlc3BvbnNlLmJvZHkucGFzc3dvcmQ7XHJcbn07XHJcbiBcclxuXHJcbmNvbnN0IGdldFRvdXJpc3RUb2tlbiA9IGFzeW5jICgpID0+IHtcclxuICAgIGlmICh1c2VyVG9rZW4pIHtcclxuICAgICAgICByZXR1cm4gdXNlclRva2VuO1xyXG4gICAgfVxyXG4gICAgaWYocGFzc3dvcmRVc2VyID09IG51bGwpIHsgYXdhaXQgYWRkVG91cmlzdCgpO31cclxuICAgIHZhciBjcmVkcyA9IHtcclxuICAgICAgICB1c2VybmFtZTogdG91cmlzdC5lbWFpbCxcclxuICAgICAgICBwYXNzd29yZDogcGFzc3dvcmRVc2VyLFxyXG4gICAgfTtcclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgc2VydmVyXHJcbiAgICAgICAgLnBvc3QoXCIvdXNlcnMvbG9naW5cIilcclxuICAgICAgICAuc2VuZChjcmVkcyk7XHJcbiAgICB1c2VyVG9rZW4gPSByZXNwb25zZS5ib2R5LnRva2VuO1xyXG4gICAgcmV0dXJuIHVzZXJUb2tlbjtcclxufVxyXG5cclxuY29uc3QgZ2V0RXhpc3RpbmdJZCA9IGFzeW5jICgpID0+IHtcclxuICAgIGNvbnN0IG5ld1RvdXJpc3QgPSB7XHJcbiAgICAgICAgXCJmaXJzdG5hbWVcIjogXCJOYW1hbFwiLFxyXG4gICAgICAgIFwibGFzdG5hbWVcIjogXCJGZXJuYW1kb1wiLFxyXG4gICAgICAgIFwiZW1haWxcIjogXCJuYW1hbGZlcm5hbWRvQGdtYWlsLmNvbVwiLFxyXG4gICAgICAgIFwibW9iaWxlXCI6IFwiOTgxMTE0ODQ0XCIsXHJcbiAgICAgICAgXCJyb21tbnVtYmVyXCIgOiBcIjQxXCIsXHJcblxyXG4gICAgfVxyXG4gICAgY29uc3QgdG91cmlzdCA9IG5ldyBVc2VycyhuZXdUb3VyaXN0KTtcclxuICAgIGF3YWl0IHRvdXJpc3Quc2F2ZSgpO1xyXG5cclxuICAgIHJldHVybiB0b3VyaXN0Ll9pZC50b1N0cmluZygpO1xyXG5cclxuICAgIFxyXG59XHJcblxyXG5jb25zdCBnZXROb25FeGlzdGluZ0lkID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgY29uc3QgbmV3VG91cmlzdCA9IHtcclxuICAgICAgICBcImZpcnN0bmFtZVwiOiBcIkthbWFsXCIsXHJcbiAgICAgICAgXCJsYXN0bmFtZVwiOiBcIkZlcm5hbWRvXCIsXHJcbiAgICAgICAgXCJlbWFpbFwiOiBcImthbWFsZmVybmFtZG9AZ21haWwuY29tXCIsXHJcbiAgICAgICAgXCJ1c2VybmFtZVwiOiBcImthbWFsZmVybmFtZG9AZ21haWwuY29tXCJcclxuICAgIH1cclxuICAgIGNvbnN0IHRvdXJpc3QgPSBuZXcgVXNlcnMobmV3VG91cmlzdCk7XHJcbiAgICBhd2FpdCB0b3VyaXN0LnNhdmUoKTtcclxuICAgIGF3YWl0IHRvdXJpc3QucmVtb3ZlKCk7XHJcblxyXG4gICAgcmV0dXJuIHRvdXJpc3QuX2lkLnRvU3RyaW5nKCk7XHJcbn1cclxuXHJcbmNvbnN0IGdldEV4aXN0aW5nSWRBc3Npc3RhbmN0ID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgY29uc3QgbmV3QXNzaXN0YW50ID0ge1xyXG4gICAgICAgIFwiZmlyc3RuYW1lXCI6IFwiS2FzdW5cIixcclxuICAgICAgICBcImxhc3RuYW1lXCI6IFwiUGVyZXJhXCIsXHJcbiAgICAgICAgXCJlbWFpbFwiOiBcImthc3VuQGdtYWlsLmNvbVwiLFxyXG4gICAgfVxyXG4gICAgY29uc3QgYXNzaXN0YW50ID0gbmV3IFVzZXJzKG5ld0Fzc2lzdGFudCk7XHJcbiAgICBhd2FpdCBhc3Npc3RhbnQuc2F2ZSgpO1xyXG5cclxuICAgIHJldHVybiBhc3Npc3RhbnQuX2lkLnRvU3RyaW5nKCk7XHJcblxyXG4gICAgXHJcbn1cclxuXHJcbmNvbnN0IGdldE5vbkV4aXN0aW5nSWRBc3Npc3RhbnQgPSBhc3luYyAoKSA9PiB7XHJcbiAgICBjb25zdCBuZXdBc3Npc3RhbnQgPSB7XHJcbiAgICAgICAgXCJmaXJzdG5hbWVcIjogXCJLYW1hbFwiLFxyXG4gICAgICAgIFwibGFzdG5hbWVcIjogXCJGZXJuYW1kb1wiLFxyXG4gICAgICAgIFwiZW1haWxcIjogXCJrYW1hbGZlcm5hbWRvQGdtYWlsLmNvbVwiXHJcbiAgICB9XHJcbiAgICBjb25zdCBhc3Npc3RhbnQgPSBuZXcgVXNlcnMobmV3QXNzaXN0YW50KTtcclxuICAgIGF3YWl0IGFzc2lzdGFudC5zYXZlKCk7XHJcbiAgICBhd2FpdCBhc3Npc3RhbnQucmVtb3ZlKCk7XHJcblxyXG4gICAgcmV0dXJuIGFzc2lzdGFudC5faWQudG9TdHJpbmcoKTtcclxufVxyXG5cclxuY29uc3QgZGVjb2RlVG9rZW4gPSAodG9rZW4pID0+IHtcclxuICAgIHZhciBkZWNvZGVkID0gand0X2RlY29kZSh0b2tlbik7XHJcbiAgICByZXR1cm4gZGVjb2RlZDtcclxufVxyXG5cclxubW9kdWxlLmV4cG9ydHMgPSB7XHJcbiAgICBnZXRBZG1pblRva2VuLCBnZXRBc3Npc3RhbnRUb2tlbiwgZ2V0VG91cmlzdFRva2VuLCBkZWNvZGVUb2tlbiwgYWRkVG91cmlzdCwgZ2V0VG91cmlzdFRva2VuICxnZXRFeGlzdGluZ0lkICxnZXROb25FeGlzdGluZ0lkLCBnZXRFeGlzdGluZ0lkQXNzaXN0YW5jdCwgZ2V0Tm9uRXhpc3RpbmdJZEFzc2lzdGFudCwgYWRkQXNzaXN0YW50XHJcbn1cclxuIl19\",\"originalCode\":\"const app = require('../../app');\\r\\nconst server = require(\\\"supertest\\\")(app);\\r\\nconst jwt_decode = require('jwt-decode');\\r\\nconst Users = require('../../models/users');\\r\\n\\r\\nvar userToken;\\r\\nvar assistantToken;\\r\\nvar adminToken;\\r\\nvar passwordAssistant;\\r\\nvar passwordUser;\\r\\n\\r\\nconst admin = {\\r\\n \\\"firstname\\\": \\\"Admin\\\",\\r\\n \\\"lastname\\\": \\\"Admin\\\",\\r\\n \\\"email\\\": \\\"admin@gmail.com\\\",\\r\\n \\\"password\\\": \\\"admin-password\\\"\\r\\n};\\r\\nconst assistant = {\\r\\n \\\"firstname\\\": \\\"Pasan\\\",\\r\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\r\\n \\\"email\\\": \\\"pasanFernamdo@gmail.com\\\"\\r\\n};\\r\\nconst tourist = {\\r\\n \\\"firstname\\\": \\\"Sunil\\\",\\r\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\r\\n \\\"email\\\": \\\"sunilFernamdo@gmail.com\\\"\\r\\n};\\r\\n\\r\\nconst signupAdmin = async () => {\\r\\n await Users.deleteMany({});\\r\\n await server\\r\\n .post(\\\"/users/signup/admin\\\")\\r\\n .send(admin);\\r\\n};\\r\\n\\r\\nconst getAdminToken = async () => {\\r\\n if (adminToken) {\\r\\n return adminToken;\\r\\n }\\r\\n await signupAdmin();\\r\\n var creds = {\\r\\n username: admin.email,\\r\\n password: admin.password,\\r\\n };\\r\\n const response = await server\\r\\n .post(\\\"/users/login\\\")\\r\\n .send(creds);\\r\\n adminToken = response.body.token;\\r\\n return adminToken;\\r\\n}\\r\\n\\r\\nconst addAssistant = async () => {\\r\\n if (!adminToken) {\\r\\n await getAdminToken();\\r\\n }\\r\\n const response = await server\\r\\n .post(\\\"/employees\\\")\\r\\n .set(\\\"Authorization\\\", `Bearer ${adminToken}`)\\r\\n .send(assistant)\\r\\n .expect(200);\\r\\n \\r\\n passwordAssistant = response.body.password;\\r\\n};\\r\\n\\r\\nconst getAssistantToken = async () => {\\r\\n if (assistantToken) {\\r\\n return assistantToken;\\r\\n }\\r\\n if(passwordAssistant==null){await addAssistant();}\\r\\n var creds = {\\r\\n username: assistant.email,\\r\\n password: passwordAssistant,\\r\\n };\\r\\n const response = await server\\r\\n .post(\\\"/users/login\\\")\\r\\n .send(creds);\\r\\n assistantToken = response.body.token;\\r\\n return assistantToken;\\r\\n}\\r\\n\\r\\nconst addTourist = async () => {\\r\\n if (!assistantToken) {\\r\\n await getAssistantToken();\\r\\n }\\r\\n const response = await server\\r\\n .post(\\\"/tourists\\\")\\r\\n .set(\\\"Authorization\\\", `Bearer ${assistantToken}`)\\r\\n .send(tourist)\\r\\n .expect(200);\\r\\n passwordUser= response.body.password;\\r\\n};\\r\\n \\r\\n\\r\\nconst getTouristToken = async () => {\\r\\n if (userToken) {\\r\\n return userToken;\\r\\n }\\r\\n if(passwordUser == null) { await addTourist();}\\r\\n var creds = {\\r\\n username: tourist.email,\\r\\n password: passwordUser,\\r\\n };\\r\\n const response = await server\\r\\n .post(\\\"/users/login\\\")\\r\\n .send(creds);\\r\\n userToken = response.body.token;\\r\\n return userToken;\\r\\n}\\r\\n\\r\\nconst getExistingId = async () => {\\r\\n const newTourist = {\\r\\n \\\"firstname\\\": \\\"Namal\\\",\\r\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\r\\n \\\"email\\\": \\\"namalfernamdo@gmail.com\\\",\\r\\n \\\"mobile\\\": \\\"981114844\\\",\\r\\n \\\"rommnumber\\\" : \\\"41\\\",\\r\\n\\r\\n }\\r\\n const tourist = new Users(newTourist);\\r\\n await tourist.save();\\r\\n\\r\\n return tourist._id.toString();\\r\\n\\r\\n \\r\\n}\\r\\n\\r\\nconst getNonExistingId = async () => {\\r\\n const newTourist = {\\r\\n \\\"firstname\\\": \\\"Kamal\\\",\\r\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\r\\n \\\"email\\\": \\\"kamalfernamdo@gmail.com\\\",\\r\\n \\\"username\\\": \\\"kamalfernamdo@gmail.com\\\"\\r\\n }\\r\\n const tourist = new Users(newTourist);\\r\\n await tourist.save();\\r\\n await tourist.remove();\\r\\n\\r\\n return tourist._id.toString();\\r\\n}\\r\\n\\r\\nconst getExistingIdAssistanct = async () => {\\r\\n const newAssistant = {\\r\\n \\\"firstname\\\": \\\"Kasun\\\",\\r\\n \\\"lastname\\\": \\\"Perera\\\",\\r\\n \\\"email\\\": \\\"kasun@gmail.com\\\",\\r\\n }\\r\\n const assistant = new Users(newAssistant);\\r\\n await assistant.save();\\r\\n\\r\\n return assistant._id.toString();\\r\\n\\r\\n \\r\\n}\\r\\n\\r\\nconst getNonExistingIdAssistant = async () => {\\r\\n const newAssistant = {\\r\\n \\\"firstname\\\": \\\"Kamal\\\",\\r\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\r\\n \\\"email\\\": \\\"kamalfernamdo@gmail.com\\\"\\r\\n }\\r\\n const assistant = new Users(newAssistant);\\r\\n await assistant.save();\\r\\n await assistant.remove();\\r\\n\\r\\n return assistant._id.toString();\\r\\n}\\r\\n\\r\\nconst decodeToken = (token) => {\\r\\n var decoded = jwt_decode(token);\\r\\n return decoded;\\r\\n}\\r\\n\\r\\nmodule.exports = {\\r\\n getAdminToken, getAssistantToken, getTouristToken, decodeToken, addTourist, getTouristToken ,getExistingId ,getNonExistingId, getExistingIdAssistanct, getNonExistingIdAssistant, addAssistant\\r\\n}\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/79/user_helper_79166e334a8b342d542dc0574b645dc7.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2692\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\tests\\\\helpers\\\\user_helper.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":16466,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":16463,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"signupAdmin\",\"ranges\":[{\"startOffset\":714,\"endOffset\":815,\"count\":3}],\"isBlockCoverage\":false},{\"functionName\":\"getAdminToken\",\"ranges\":[{\"startOffset\":840,\"endOffset\":1126,\"count\":3}],\"isBlockCoverage\":false},{\"functionName\":\"addAssistant\",\"ranges\":[{\"startOffset\":1150,\"endOffset\":1389,\"count\":2}],\"isBlockCoverage\":false},{\"functionName\":\"getAssistantToken\",\"ranges\":[{\"startOffset\":1418,\"endOffset\":1770,\"count\":3}],\"isBlockCoverage\":false},{\"functionName\":\"addTourist\",\"ranges\":[{\"startOffset\":1792,\"endOffset\":2035,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getTouristToken\",\"ranges\":[{\"startOffset\":2062,\"endOffset\":2380,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getExistingId\",\"ranges\":[{\"startOffset\":2405,\"endOffset\":2690,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getNonExistingId\",\"ranges\":[{\"startOffset\":2718,\"endOffset\":3021,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getExistingIdAssistanct\",\"ranges\":[{\"startOffset\":3056,\"endOffset\":3290,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getNonExistingIdAssistant\",\"ranges\":[{\"startOffset\":3327,\"endOffset\":3599,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"decodeToken\",\"ranges\":[{\"startOffset\":3622,\"endOffset\":3687,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const Places = require('../../models/visitingPlaces');\\n\\nconst mockPlaces = require('../mockData/places.data');\\n\\nconst initialPlaces = mockPlaces;\\n\\nconst addPlacesToDb = async () => {\\n const placeObjects = initialPlaces.map(place => new Places(place));\\n const promiseArray = placeObjects.map(place => place.save());\\n await Promise.all(promiseArray);\\n};\\n\\nconst getExistingId = async () => {\\n const newPlace = {\\n \\\"name\\\": \\\"Galle Dutch Fort\\\",\\n \\\"description\\\": \\\"Duis amet in ipsum ut consequat. Aliquip quis quis et laboris non mollit nisi ut mollit fugiat occaecat id nostrud. Mollit mollit aliquip reprehenderit voluptate commodo id nostrud non.\\\",\\n \\\"location\\\": {\\n coordinates: [6.02453869574481, 80.21798550785017]\\n },\\n \\\"distance\\\": \\\"20km\\\",\\n \\\"timeToReach\\\": \\\"30min\\\",\\n \\\"images\\\": [],\\n \\\"methods\\\": ['Car']\\n };\\n const place = new Places(newPlace);\\n await place.save();\\n return place._id.toString();\\n};\\n\\nconst getNonExistingId = async () => {\\n const newPlace = {\\n \\\"name\\\": \\\"To be deleted\\\",\\n \\\"description\\\": \\\"Duis amet in ipsum ut.\\\",\\n \\\"location\\\": {\\n coordinates: [6.02453869574481, 80.21798550785017]\\n },\\n \\\"distance\\\": \\\"10km\\\",\\n \\\"timeToReach\\\": \\\"20min\\\",\\n \\\"images\\\": [],\\n \\\"methods\\\": ['Foot']\\n };\\n const place = new Places(newPlace);\\n await place.save();\\n await place.remove();\\n return place._id.toString();\\n};\\n\\nconst placesInDb = async () => {\\n const places = await Note.find({});\\n return places;\\n};\\n\\nmodule.exports = {\\n initialPlaces,\\n addPlacesToDb,\\n getExistingId,\\n getNonExistingId,\\n placesInDb\\n};\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBsYWNlX2hlbHBlci5qcyJdLCJuYW1lcyI6WyJQbGFjZXMiLCJyZXF1aXJlIiwibW9ja1BsYWNlcyIsImluaXRpYWxQbGFjZXMiLCJhZGRQbGFjZXNUb0RiIiwicGxhY2VPYmplY3RzIiwibWFwIiwicGxhY2UiLCJwcm9taXNlQXJyYXkiLCJzYXZlIiwiUHJvbWlzZSIsImFsbCIsImdldEV4aXN0aW5nSWQiLCJuZXdQbGFjZSIsImNvb3JkaW5hdGVzIiwiX2lkIiwidG9TdHJpbmciLCJnZXROb25FeGlzdGluZ0lkIiwicmVtb3ZlIiwicGxhY2VzSW5EYiIsInBsYWNlcyIsIk5vdGUiLCJmaW5kIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsTUFBTSxHQUFHQyxPQUFPLENBQUMsNkJBQUQsQ0FBdEI7O0FBQ0EsTUFBTUMsVUFBVSxHQUFHRCxPQUFPLENBQUMseUJBQUQsQ0FBMUI7O0FBRUEsTUFBTUUsYUFBYSxHQUFHRCxVQUF0Qjs7QUFFQSxNQUFNRSxhQUFhLEdBQUcsWUFBWTtBQUM5QixRQUFNQyxZQUFZLEdBQUdGLGFBQWEsQ0FDN0JHLEdBRGdCLENBQ1pDLEtBQUssSUFBSSxJQUFJUCxNQUFKLENBQVdPLEtBQVgsQ0FERyxDQUFyQjtBQUVBLFFBQU1DLFlBQVksR0FBR0gsWUFBWSxDQUFDQyxHQUFiLENBQWlCQyxLQUFLLElBQUlBLEtBQUssQ0FBQ0UsSUFBTixFQUExQixDQUFyQjtBQUNBLFFBQU1DLE9BQU8sQ0FBQ0MsR0FBUixDQUFZSCxZQUFaLENBQU47QUFDSCxDQUxEOztBQU9BLE1BQU1JLGFBQWEsR0FBRyxZQUFZO0FBQzlCLFFBQU1DLFFBQVEsR0FBRztBQUNiLFlBQVEsa0JBREs7QUFFYixtQkFBZSwyTEFGRjtBQUdiLGdCQUFZO0FBQ1JDLE1BQUFBLFdBQVcsRUFBRSxDQUFDLGdCQUFELEVBQW1CLGlCQUFuQjtBQURMLEtBSEM7QUFNYixnQkFBWSxNQU5DO0FBT2IsbUJBQWUsT0FQRjtBQVFiLGNBQVUsRUFSRztBQVNiLGVBQVcsQ0FBQyxLQUFEO0FBVEUsR0FBakI7QUFXQSxRQUFNUCxLQUFLLEdBQUcsSUFBSVAsTUFBSixDQUFXYSxRQUFYLENBQWQ7QUFDQSxRQUFNTixLQUFLLENBQUNFLElBQU4sRUFBTjtBQUVBLFNBQU9GLEtBQUssQ0FBQ1EsR0FBTixDQUFVQyxRQUFWLEVBQVA7QUFDSCxDQWhCRDs7QUFrQkEsTUFBTUMsZ0JBQWdCLEdBQUcsWUFBWTtBQUNqQyxRQUFNSixRQUFRLEdBQUc7QUFDYixZQUFRLGVBREs7QUFFYixtQkFBZSx3QkFGRjtBQUdiLGdCQUFZO0FBQ1JDLE1BQUFBLFdBQVcsRUFBRSxDQUFDLGdCQUFELEVBQW1CLGlCQUFuQjtBQURMLEtBSEM7QUFNYixnQkFBWSxNQU5DO0FBT2IsbUJBQWUsT0FQRjtBQVFiLGNBQVUsRUFSRztBQVNiLGVBQVcsQ0FBQyxNQUFEO0FBVEUsR0FBakI7QUFXQSxRQUFNUCxLQUFLLEdBQUcsSUFBSVAsTUFBSixDQUFXYSxRQUFYLENBQWQ7QUFDQSxRQUFNTixLQUFLLENBQUNFLElBQU4sRUFBTjtBQUNBLFFBQU1GLEtBQUssQ0FBQ1csTUFBTixFQUFOO0FBRUEsU0FBT1gsS0FBSyxDQUFDUSxHQUFOLENBQVVDLFFBQVYsRUFBUDtBQUNILENBakJEOztBQW1CQSxNQUFNRyxVQUFVLEdBQUcsWUFBWTtBQUMzQixRQUFNQyxNQUFNLEdBQUcsTUFBTUMsSUFBSSxDQUFDQyxJQUFMLENBQVUsRUFBVixDQUFyQjtBQUNBLFNBQU9GLE1BQVA7QUFDSCxDQUhEOztBQUtBRyxNQUFNLENBQUNDLE9BQVAsR0FBaUI7QUFDYnJCLEVBQUFBLGFBRGE7QUFDRUMsRUFBQUEsYUFERjtBQUNpQlEsRUFBQUEsYUFEakI7QUFDZ0NLLEVBQUFBLGdCQURoQztBQUNrREUsRUFBQUE7QUFEbEQsQ0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBQbGFjZXMgPSByZXF1aXJlKCcuLi8uLi9tb2RlbHMvdmlzaXRpbmdQbGFjZXMnKTtcclxuY29uc3QgbW9ja1BsYWNlcyA9IHJlcXVpcmUoJy4uL21vY2tEYXRhL3BsYWNlcy5kYXRhJyk7XHJcblxyXG5jb25zdCBpbml0aWFsUGxhY2VzID0gbW9ja1BsYWNlcztcclxuXHJcbmNvbnN0IGFkZFBsYWNlc1RvRGIgPSBhc3luYyAoKSA9PiB7XHJcbiAgICBjb25zdCBwbGFjZU9iamVjdHMgPSBpbml0aWFsUGxhY2VzXHJcbiAgICAgICAgLm1hcChwbGFjZSA9PiBuZXcgUGxhY2VzKHBsYWNlKSk7XHJcbiAgICBjb25zdCBwcm9taXNlQXJyYXkgPSBwbGFjZU9iamVjdHMubWFwKHBsYWNlID0+IHBsYWNlLnNhdmUoKSk7XHJcbiAgICBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlQXJyYXkpO1xyXG59XHJcblxyXG5jb25zdCBnZXRFeGlzdGluZ0lkID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgY29uc3QgbmV3UGxhY2UgPSB7XHJcbiAgICAgICAgXCJuYW1lXCI6IFwiR2FsbGUgRHV0Y2ggRm9ydFwiLFxyXG4gICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJEdWlzIGFtZXQgaW4gaXBzdW0gdXQgY29uc2VxdWF0LiBBbGlxdWlwIHF1aXMgcXVpcyBldCBsYWJvcmlzIG5vbiBtb2xsaXQgbmlzaSB1dCBtb2xsaXQgZnVnaWF0IG9jY2FlY2F0IGlkIG5vc3RydWQuIE1vbGxpdCBtb2xsaXQgYWxpcXVpcCByZXByZWhlbmRlcml0IHZvbHVwdGF0ZSBjb21tb2RvIGlkIG5vc3RydWQgbm9uLlwiLFxyXG4gICAgICAgIFwibG9jYXRpb25cIjoge1xyXG4gICAgICAgICAgICBjb29yZGluYXRlczogWzYuMDI0NTM4Njk1NzQ0ODEsIDgwLjIxNzk4NTUwNzg1MDE3XVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgXCJkaXN0YW5jZVwiOiBcIjIwa21cIixcclxuICAgICAgICBcInRpbWVUb1JlYWNoXCI6IFwiMzBtaW5cIixcclxuICAgICAgICBcImltYWdlc1wiOiBbXSxcclxuICAgICAgICBcIm1ldGhvZHNcIjogWydDYXInXVxyXG4gICAgfTtcclxuICAgIGNvbnN0IHBsYWNlID0gbmV3IFBsYWNlcyhuZXdQbGFjZSk7XHJcbiAgICBhd2FpdCBwbGFjZS5zYXZlKCk7XHJcblxyXG4gICAgcmV0dXJuIHBsYWNlLl9pZC50b1N0cmluZygpO1xyXG59XHJcblxyXG5jb25zdCBnZXROb25FeGlzdGluZ0lkID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgY29uc3QgbmV3UGxhY2UgPSB7XHJcbiAgICAgICAgXCJuYW1lXCI6IFwiVG8gYmUgZGVsZXRlZFwiLFxyXG4gICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJEdWlzIGFtZXQgaW4gaXBzdW0gdXQuXCIsXHJcbiAgICAgICAgXCJsb2NhdGlvblwiOiB7XHJcbiAgICAgICAgICAgIGNvb3JkaW5hdGVzOiBbNi4wMjQ1Mzg2OTU3NDQ4MSwgODAuMjE3OTg1NTA3ODUwMTddXHJcbiAgICAgICAgfSxcclxuICAgICAgICBcImRpc3RhbmNlXCI6IFwiMTBrbVwiLFxyXG4gICAgICAgIFwidGltZVRvUmVhY2hcIjogXCIyMG1pblwiLFxyXG4gICAgICAgIFwiaW1hZ2VzXCI6IFtdLFxyXG4gICAgICAgIFwibWV0aG9kc1wiOiBbJ0Zvb3QnXVxyXG4gICAgfTtcclxuICAgIGNvbnN0IHBsYWNlID0gbmV3IFBsYWNlcyhuZXdQbGFjZSk7XHJcbiAgICBhd2FpdCBwbGFjZS5zYXZlKCk7XHJcbiAgICBhd2FpdCBwbGFjZS5yZW1vdmUoKTtcclxuXHJcbiAgICByZXR1cm4gcGxhY2UuX2lkLnRvU3RyaW5nKCk7XHJcbn1cclxuXHJcbmNvbnN0IHBsYWNlc0luRGIgPSBhc3luYyAoKSA9PiB7XHJcbiAgICBjb25zdCBwbGFjZXMgPSBhd2FpdCBOb3RlLmZpbmQoe30pO1xyXG4gICAgcmV0dXJuIHBsYWNlcztcclxufVxyXG5cclxubW9kdWxlLmV4cG9ydHMgPSB7XHJcbiAgICBpbml0aWFsUGxhY2VzLCBhZGRQbGFjZXNUb0RiLCBnZXRFeGlzdGluZ0lkLCBnZXROb25FeGlzdGluZ0lkLCBwbGFjZXNJbkRiXHJcbn0iXX0=\",\"originalCode\":\"const Places = require('../../models/visitingPlaces');\\r\\nconst mockPlaces = require('../mockData/places.data');\\r\\n\\r\\nconst initialPlaces = mockPlaces;\\r\\n\\r\\nconst addPlacesToDb = async () => {\\r\\n const placeObjects = initialPlaces\\r\\n .map(place => new Places(place));\\r\\n const promiseArray = placeObjects.map(place => place.save());\\r\\n await Promise.all(promiseArray);\\r\\n}\\r\\n\\r\\nconst getExistingId = async () => {\\r\\n const newPlace = {\\r\\n \\\"name\\\": \\\"Galle Dutch Fort\\\",\\r\\n \\\"description\\\": \\\"Duis amet in ipsum ut consequat. Aliquip quis quis et laboris non mollit nisi ut mollit fugiat occaecat id nostrud. Mollit mollit aliquip reprehenderit voluptate commodo id nostrud non.\\\",\\r\\n \\\"location\\\": {\\r\\n coordinates: [6.02453869574481, 80.21798550785017]\\r\\n },\\r\\n \\\"distance\\\": \\\"20km\\\",\\r\\n \\\"timeToReach\\\": \\\"30min\\\",\\r\\n \\\"images\\\": [],\\r\\n \\\"methods\\\": ['Car']\\r\\n };\\r\\n const place = new Places(newPlace);\\r\\n await place.save();\\r\\n\\r\\n return place._id.toString();\\r\\n}\\r\\n\\r\\nconst getNonExistingId = async () => {\\r\\n const newPlace = {\\r\\n \\\"name\\\": \\\"To be deleted\\\",\\r\\n \\\"description\\\": \\\"Duis amet in ipsum ut.\\\",\\r\\n \\\"location\\\": {\\r\\n coordinates: [6.02453869574481, 80.21798550785017]\\r\\n },\\r\\n \\\"distance\\\": \\\"10km\\\",\\r\\n \\\"timeToReach\\\": \\\"20min\\\",\\r\\n \\\"images\\\": [],\\r\\n \\\"methods\\\": ['Foot']\\r\\n };\\r\\n const place = new Places(newPlace);\\r\\n await place.save();\\r\\n await place.remove();\\r\\n\\r\\n return place._id.toString();\\r\\n}\\r\\n\\r\\nconst placesInDb = async () => {\\r\\n const places = await Note.find({});\\r\\n return places;\\r\\n}\\r\\n\\r\\nmodule.exports = {\\r\\n initialPlaces, addPlacesToDb, getExistingId, getNonExistingId, placesInDb\\r\\n}\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/f7/place_helper_f736d6463224b7f5175e218faaaa4ce9.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"3946\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\tests\\\\helpers\\\\place_helper.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":6530,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":6527,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"addPlacesToDb\",\"ranges\":[{\"startOffset\":258,\"endOffset\":442,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":313,\"endOffset\":339,\"count\":3}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":382,\"endOffset\":403,\"count\":3}],\"isBlockCoverage\":true},{\"functionName\":\"getExistingId\",\"ranges\":[{\"startOffset\":467,\"endOffset\":1014,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getNonExistingId\",\"ranges\":[{\"startOffset\":1042,\"endOffset\":1448,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"placesInDb\",\"ranges\":[{\"startOffset\":1470,\"endOffset\":1540,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const places = [{\\n \\\"name\\\": \\\"Mirissa\\\",\\n \\\"description\\\": \\\"Duis amet in ipsum ut consequat. Aliquip quis quis et laboris non mollit nisi ut mollit fugiat occaecat id nostrud. Mollit mollit aliquip reprehenderit voluptate commodo id nostrud non.\\\",\\n \\\"location\\\": {\\n \\\"coordinates\\\": [5.9447392257447005, 80.45886764887479]\\n },\\n \\\"distance\\\": \\\"20km\\\",\\n \\\"timeToReach\\\": \\\"30min\\\",\\n \\\"images\\\": [],\\n \\\"methods\\\": ['Bus', 'Car', 'Foot']\\n}, {\\n \\\"name\\\": \\\"Unawatuna\\\",\\n \\\"description\\\": \\\"Duis amet in ipsum ut consequat. Aliquip quis quis et laboris non mollit nisi ut mollit fugiat occaecat id nostrud. Mollit mollit aliquip reprehenderit voluptate commodo id nostrud non.\\\",\\n \\\"location\\\": {\\n \\\"coordinates\\\": [6.009847327808601, 80.24929493589147]\\n },\\n \\\"distance\\\": \\\"20km\\\",\\n \\\"timeToReach\\\": \\\"30min\\\",\\n \\\"images\\\": [],\\n \\\"methods\\\": ['Bus', 'Foot']\\n}, {\\n \\\"name\\\": \\\"Jungle Beach\\\",\\n \\\"description\\\": \\\"Duis amet in ipsum ut consequat. Aliquip quis quis et laboris non mollit nisi ut mollit fugiat occaecat id nostrud. Mollit mollit aliquip reprehenderit voluptate commodo id nostrud non.\\\",\\n \\\"location\\\": {\\n \\\"coordinates\\\": [6.0175219725350635, 80.23893195618767]\\n },\\n \\\"distance\\\": \\\"20km\\\",\\n \\\"timeToReach\\\": \\\"30min\\\",\\n \\\"images\\\": [],\\n \\\"methods\\\": ['Foot']\\n}];\\nmodule.exports = places;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBsYWNlcy5kYXRhLmpzIl0sIm5hbWVzIjpbInBsYWNlcyIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE1BQU0sR0FBRyxDQUNYO0FBQ0ksVUFBUSxTQURaO0FBRUksaUJBQWUsMkxBRm5CO0FBR0ksY0FBWTtBQUNSLG1CQUFlLENBQUMsa0JBQUQsRUFBcUIsaUJBQXJCO0FBRFAsR0FIaEI7QUFNSSxjQUFZLE1BTmhCO0FBT0ksaUJBQWUsT0FQbkI7QUFRSSxZQUFVLEVBUmQ7QUFTSSxhQUFXLENBQUMsS0FBRCxFQUFRLEtBQVIsRUFBZSxNQUFmO0FBVGYsQ0FEVyxFQVlYO0FBQ0ksVUFBUSxXQURaO0FBRUksaUJBQWUsMkxBRm5CO0FBR0ksY0FBWTtBQUNSLG1CQUFlLENBQUMsaUJBQUQsRUFBb0IsaUJBQXBCO0FBRFAsR0FIaEI7QUFNSSxjQUFZLE1BTmhCO0FBT0ksaUJBQWUsT0FQbkI7QUFRSSxZQUFVLEVBUmQ7QUFTSSxhQUFXLENBQUMsS0FBRCxFQUFRLE1BQVI7QUFUZixDQVpXLEVBdUJYO0FBQ0ksVUFBUSxjQURaO0FBRUksaUJBQWUsMkxBRm5CO0FBR0ksY0FBWTtBQUNSLG1CQUFlLENBQUMsa0JBQUQsRUFBcUIsaUJBQXJCO0FBRFAsR0FIaEI7QUFNSSxjQUFZLE1BTmhCO0FBT0ksaUJBQWUsT0FQbkI7QUFRSSxZQUFVLEVBUmQ7QUFTSSxhQUFXLENBQUMsTUFBRDtBQVRmLENBdkJXLENBQWY7QUFvQ0FDLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQkYsTUFBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBwbGFjZXMgPSBbXHJcbiAgICB7XHJcbiAgICAgICAgXCJuYW1lXCI6IFwiTWlyaXNzYVwiLFxyXG4gICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJEdWlzIGFtZXQgaW4gaXBzdW0gdXQgY29uc2VxdWF0LiBBbGlxdWlwIHF1aXMgcXVpcyBldCBsYWJvcmlzIG5vbiBtb2xsaXQgbmlzaSB1dCBtb2xsaXQgZnVnaWF0IG9jY2FlY2F0IGlkIG5vc3RydWQuIE1vbGxpdCBtb2xsaXQgYWxpcXVpcCByZXByZWhlbmRlcml0IHZvbHVwdGF0ZSBjb21tb2RvIGlkIG5vc3RydWQgbm9uLlwiLFxyXG4gICAgICAgIFwibG9jYXRpb25cIjoge1xyXG4gICAgICAgICAgICBcImNvb3JkaW5hdGVzXCI6IFs1Ljk0NDczOTIyNTc0NDcwMDUsIDgwLjQ1ODg2NzY0ODg3NDc5XVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgXCJkaXN0YW5jZVwiOiBcIjIwa21cIixcclxuICAgICAgICBcInRpbWVUb1JlYWNoXCI6IFwiMzBtaW5cIixcclxuICAgICAgICBcImltYWdlc1wiOiBbXSxcclxuICAgICAgICBcIm1ldGhvZHNcIjogWydCdXMnLCAnQ2FyJywgJ0Zvb3QnXVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBcIm5hbWVcIjogXCJVbmF3YXR1bmFcIixcclxuICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiRHVpcyBhbWV0IGluIGlwc3VtIHV0IGNvbnNlcXVhdC4gQWxpcXVpcCBxdWlzIHF1aXMgZXQgbGFib3JpcyBub24gbW9sbGl0IG5pc2kgdXQgbW9sbGl0IGZ1Z2lhdCBvY2NhZWNhdCBpZCBub3N0cnVkLiBNb2xsaXQgbW9sbGl0IGFsaXF1aXAgcmVwcmVoZW5kZXJpdCB2b2x1cHRhdGUgY29tbW9kbyBpZCBub3N0cnVkIG5vbi5cIixcclxuICAgICAgICBcImxvY2F0aW9uXCI6IHtcclxuICAgICAgICAgICAgXCJjb29yZGluYXRlc1wiOiBbNi4wMDk4NDczMjc4MDg2MDEsIDgwLjI0OTI5NDkzNTg5MTQ3XVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgXCJkaXN0YW5jZVwiOiBcIjIwa21cIixcclxuICAgICAgICBcInRpbWVUb1JlYWNoXCI6IFwiMzBtaW5cIixcclxuICAgICAgICBcImltYWdlc1wiOiBbXSxcclxuICAgICAgICBcIm1ldGhvZHNcIjogWydCdXMnLCAnRm9vdCddXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIFwibmFtZVwiOiBcIkp1bmdsZSBCZWFjaFwiLFxyXG4gICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJEdWlzIGFtZXQgaW4gaXBzdW0gdXQgY29uc2VxdWF0LiBBbGlxdWlwIHF1aXMgcXVpcyBldCBsYWJvcmlzIG5vbiBtb2xsaXQgbmlzaSB1dCBtb2xsaXQgZnVnaWF0IG9jY2FlY2F0IGlkIG5vc3RydWQuIE1vbGxpdCBtb2xsaXQgYWxpcXVpcCByZXByZWhlbmRlcml0IHZvbHVwdGF0ZSBjb21tb2RvIGlkIG5vc3RydWQgbm9uLlwiLFxyXG4gICAgICAgIFwibG9jYXRpb25cIjoge1xyXG4gICAgICAgICAgICBcImNvb3JkaW5hdGVzXCI6IFs2LjAxNzUyMTk3MjUzNTA2MzUsIDgwLjIzODkzMTk1NjE4NzY3XVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgXCJkaXN0YW5jZVwiOiBcIjIwa21cIixcclxuICAgICAgICBcInRpbWVUb1JlYWNoXCI6IFwiMzBtaW5cIixcclxuICAgICAgICBcImltYWdlc1wiOiBbXSxcclxuICAgICAgICBcIm1ldGhvZHNcIjogWydGb290J11cclxuICAgIH0sXHJcbl07XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IHBsYWNlczsiXX0=\",\"originalCode\":\"const places = [\\r\\n {\\r\\n \\\"name\\\": \\\"Mirissa\\\",\\r\\n \\\"description\\\": \\\"Duis amet in ipsum ut consequat. Aliquip quis quis et laboris non mollit nisi ut mollit fugiat occaecat id nostrud. Mollit mollit aliquip reprehenderit voluptate commodo id nostrud non.\\\",\\r\\n \\\"location\\\": {\\r\\n \\\"coordinates\\\": [5.9447392257447005, 80.45886764887479]\\r\\n },\\r\\n \\\"distance\\\": \\\"20km\\\",\\r\\n \\\"timeToReach\\\": \\\"30min\\\",\\r\\n \\\"images\\\": [],\\r\\n \\\"methods\\\": ['Bus', 'Car', 'Foot']\\r\\n },\\r\\n {\\r\\n \\\"name\\\": \\\"Unawatuna\\\",\\r\\n \\\"description\\\": \\\"Duis amet in ipsum ut consequat. Aliquip quis quis et laboris non mollit nisi ut mollit fugiat occaecat id nostrud. Mollit mollit aliquip reprehenderit voluptate commodo id nostrud non.\\\",\\r\\n \\\"location\\\": {\\r\\n \\\"coordinates\\\": [6.009847327808601, 80.24929493589147]\\r\\n },\\r\\n \\\"distance\\\": \\\"20km\\\",\\r\\n \\\"timeToReach\\\": \\\"30min\\\",\\r\\n \\\"images\\\": [],\\r\\n \\\"methods\\\": ['Bus', 'Foot']\\r\\n },\\r\\n {\\r\\n \\\"name\\\": \\\"Jungle Beach\\\",\\r\\n \\\"description\\\": \\\"Duis amet in ipsum ut consequat. Aliquip quis quis et laboris non mollit nisi ut mollit fugiat occaecat id nostrud. Mollit mollit aliquip reprehenderit voluptate commodo id nostrud non.\\\",\\r\\n \\\"location\\\": {\\r\\n \\\"coordinates\\\": [6.0175219725350635, 80.23893195618767]\\r\\n },\\r\\n \\\"distance\\\": \\\"20km\\\",\\r\\n \\\"timeToReach\\\": \\\"30min\\\",\\r\\n \\\"images\\\": [],\\r\\n \\\"methods\\\": ['Foot']\\r\\n },\\r\\n];\\r\\n\\r\\nmodule.exports = places;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/c7/placesdata_c7d929916abb793b06246bc83618a0c3.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"3947\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\tests\\\\mockData\\\\places.data.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":4573,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":4570,\"count\":1}],\"isBlockCoverage\":true}]}}]},{\"leaks\":false,\"numFailingTests\":0,\"numPassingTests\":14,\"numPendingTests\":0,\"numTodoTests\":0,\"openHandles\":[],\"perfStats\":{\"end\":1615204319678,\"runtime\":2480,\"slow\":false,\"start\":1615204317198},\"skipped\":false,\"snapshot\":{\"added\":0,\"fileDeleted\":false,\"matched\":0,\"unchecked\":0,\"unmatched\":0,\"updated\":0,\"uncheckedKeys\":[]},\"testFilePath\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\tests\\\\employee.test.js\",\"testResults\":[{\"ancestorTitles\":[\"Employee Model\"],\"duration\":1,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"Employee Model Employee model exists\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"Employee model exists\"},{\"ancestorTitles\":[\"GET /employees\"],\"duration\":30,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"GET /employees requires Authorization - 401\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"requires Authorization - 401\"},{\"ancestorTitles\":[\"GET /employees\"],\"duration\":20,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"GET /employees with Authorization - 200\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"with Authorization - 200\"},{\"ancestorTitles\":[\"POST /employees\"],\"duration\":8,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"POST /employees requires Authorization - 401\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"requires Authorization - 401\"},{\"ancestorTitles\":[\"POST /employees\"],\"duration\":12,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"POST /employees validation failed - 403\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"validation failed - 403\"},{\"ancestorTitles\":[\"POST /employees\"],\"duration\":96,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"POST /employees with invalid Authorization - 403\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"with invalid Authorization - 403\"},{\"ancestorTitles\":[\"POST /employees\"],\"duration\":256,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"POST /employees with Authorization - 200\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"with Authorization - 200\"},{\"ancestorTitles\":[\"POST /employees\"],\"duration\":16,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"POST /employees already existing - 403\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"already existing - 403\"},{\"ancestorTitles\":[\"POST /employees\",\"POST /employees/search\"],\"duration\":9,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"POST /employees POST /employees/search requires Authorization - 401\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"requires Authorization - 401\"},{\"ancestorTitles\":[\"POST /employees\",\"POST /employees/search\"],\"duration\":28,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"POST /employees POST /employees/search with Authorization - 200\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"with Authorization - 200\"},{\"ancestorTitles\":[\"POST /employees\",\"POST /employees/search\"],\"duration\":17,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"POST /employees POST /employees/search with Authorization - another one - 200\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"with Authorization - another one - 200\"},{\"ancestorTitles\":[\"PUT /employees\"],\"duration\":8,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"PUT /employees does not support - 403\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"does not support - 403\"},{\"ancestorTitles\":[\"DELETE /employees\"],\"duration\":8,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"DELETE /employees requires Authorization - 401\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"requires Authorization - 401\"},{\"ancestorTitles\":[\"DELETE /employees\"],\"duration\":17,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"DELETE /employees with Authorization - 200\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"with Authorization - 200\"}],\"failureMessage\":null,\"v8Coverage\":[{\"codeTransformResult\":{\"code\":\"var createError = require('http-errors');\\n\\nvar express = require('express');\\n\\nconst cors = require('cors');\\n\\nvar path = require('path');\\n\\nconst bodyParser = require('body-parser');\\n\\nconst expressValidator = require('express-validator');\\n\\nvar session = require('express-session');\\n\\nvar FileStore = require('session-file-store')(session);\\n\\nvar cookieParser = require('cookie-parser');\\n\\nvar logger = require('morgan');\\n\\nvar passport = require('passport');\\n\\nconst mongoose = require('mongoose');\\n\\nrequire('dotenv').config();\\n\\nvar userRouter = require('./routes/userRouter');\\n\\nvar employeeRouter = require('./routes/employeeRouter');\\n\\nvar placeRouter = require('./routes/placeRouter');\\n\\nvar scheduleRouter = require('./routes/scheduleRouter');\\n\\nvar touristRouter = require('./routes/touristRouter');\\n\\nvar dashboardRouter = require('./routes/dashboardRouter');\\n\\nvar app = express(); // view engine setup\\n\\napp.set('views', path.join(__dirname, 'views'));\\napp.set('view engine', 'jade');\\napp.use(cors());\\napp.use(passport.initialize());\\napp.use(bodyParser.json());\\napp.use(cookieParser('the-immortal-coils')); // app.use(logger('dev'));\\n\\napp.use(express.json());\\napp.use(express.urlencoded({\\n extended: false\\n}));\\napp.use(cookieParser()); // app.use(express.static('build'));\\n\\napp.use(express.static(path.join(__dirname, 'build')));\\nvar url = process.env.mongoUrl;\\n\\nif (process.env.NODE_ENV === 'test') {\\n url = process.env.testMongoUrl;\\n}\\n\\nmongoose.connect(url, {\\n useNewUrlParser: true,\\n useCreateIndex: true,\\n useUnifiedTopology: true\\n}).then(db => {}, err => {\\n if (err) {\\n console.log('👺 Error connecting to MongoDB');\\n } else {\\n console.log('✅ Connected to MongoDB');\\n }\\n});\\napp.use('/users', userRouter);\\napp.use('/employees', employeeRouter);\\napp.use('/places', placeRouter);\\napp.use('/schedules', scheduleRouter);\\napp.use('/tourists', touristRouter);\\napp.use('/dashboard', dashboardRouter); // catch 404 and forward to error handler\\n\\napp.use(function (req, res, next) {\\n next(createError(404));\\n}); // error handler\\n\\napp.use(function (err, req, res, next) {\\n // set locals, only providing error in development\\n res.locals.message = err.message;\\n res.locals.error = req.app.get('env') === 'development' ? err : {}; // render the error page\\n\\n res.status(err.status || 500);\\n res.render('error');\\n});\\nmodule.exports = app;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC5qcyJdLCJuYW1lcyI6WyJjcmVhdGVFcnJvciIsInJlcXVpcmUiLCJleHByZXNzIiwiY29ycyIsInBhdGgiLCJib2R5UGFyc2VyIiwiZXhwcmVzc1ZhbGlkYXRvciIsInNlc3Npb24iLCJGaWxlU3RvcmUiLCJjb29raWVQYXJzZXIiLCJsb2dnZXIiLCJwYXNzcG9ydCIsIm1vbmdvb3NlIiwiY29uZmlnIiwidXNlclJvdXRlciIsImVtcGxveWVlUm91dGVyIiwicGxhY2VSb3V0ZXIiLCJzY2hlZHVsZVJvdXRlciIsInRvdXJpc3RSb3V0ZXIiLCJkYXNoYm9hcmRSb3V0ZXIiLCJhcHAiLCJzZXQiLCJqb2luIiwiX19kaXJuYW1lIiwidXNlIiwiaW5pdGlhbGl6ZSIsImpzb24iLCJ1cmxlbmNvZGVkIiwiZXh0ZW5kZWQiLCJzdGF0aWMiLCJ1cmwiLCJwcm9jZXNzIiwiZW52IiwibW9uZ29VcmwiLCJOT0RFX0VOViIsInRlc3RNb25nb1VybCIsImNvbm5lY3QiLCJ1c2VOZXdVcmxQYXJzZXIiLCJ1c2VDcmVhdGVJbmRleCIsInVzZVVuaWZpZWRUb3BvbG9neSIsInRoZW4iLCJkYiIsImVyciIsImNvbnNvbGUiLCJsb2ciLCJyZXEiLCJyZXMiLCJuZXh0IiwibG9jYWxzIiwibWVzc2FnZSIsImVycm9yIiwiZ2V0Iiwic3RhdHVzIiwicmVuZGVyIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsSUFBSUEsV0FBVyxHQUFHQyxPQUFPLENBQUMsYUFBRCxDQUF6Qjs7QUFDQSxJQUFJQyxPQUFPLEdBQUdELE9BQU8sQ0FBQyxTQUFELENBQXJCOztBQUNBLE1BQU1FLElBQUksR0FBR0YsT0FBTyxDQUFDLE1BQUQsQ0FBcEI7O0FBQ0EsSUFBSUcsSUFBSSxHQUFHSCxPQUFPLENBQUMsTUFBRCxDQUFsQjs7QUFDQSxNQUFNSSxVQUFVLEdBQUdKLE9BQU8sQ0FBQyxhQUFELENBQTFCOztBQUNBLE1BQU1LLGdCQUFnQixHQUFHTCxPQUFPLENBQUMs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a0JWLFVBQWxCO0FBQ0FNLEdBQUcsQ0FBQ0ksR0FBSixDQUFRLFlBQVIsRUFBc0JULGNBQXRCO0FBQ0FLLEdBQUcsQ0FBQ0ksR0FBSixDQUFRLFNBQVIsRUFBbUJSLFdBQW5CO0FBQ0FJLEdBQUcsQ0FBQ0ksR0FBSixDQUFRLFlBQVIsRUFBc0JQLGNBQXRCO0FBQ0FHLEdBQUcsQ0FBQ0ksR0FBSixDQUFRLFdBQVIsRUFBcUJOLGFBQXJCO0FBQ0FFLEdBQUcsQ0FBQ0ksR0FBSixDQUFRLFlBQVIsRUFBc0JMLGVBQXRCLEUsQ0FFQTs7QUFDQUMsR0FBRyxDQUFDSSxHQUFKLENBQVEsVUFBVXFCLEdBQVYsRUFBZUMsR0FBZixFQUFvQkMsSUFBcEIsRUFBMEI7QUFDaENBLEVBQUFBLElBQUksQ0FBQy9DLFdBQVcsQ0FBQyxHQUFELENBQVosQ0FBSjtBQUNELENBRkQsRSxDQUlBOztBQUNBb0IsR0FBRyxDQUFDSSxHQUFKLENBQVEsVUFBVWtCLEdBQVYsRUFBZUcsR0FBZixFQUFvQkMsR0FBcEIsRUFBeUJDLElBQXpCLEVBQStCO0FBQ3JDO0FBQ0FELEVBQUFBLEdBQUcsQ0FBQ0UsTUFBSixDQUFXQyxPQUFYLEdBQXFCUCxHQUFHLENBQUNPLE9BQXpCO0FBQ0FILEVBQUFBLEdBQUcsQ0FBQ0UsTUFBSixDQUFXRSxLQUFYLEdBQW1CTCxHQUFHLENBQUN6QixHQUFKLENBQVErQixHQUFSLENBQVksS0FBWixNQUF1QixhQUF2QixHQUF1Q1QsR0FBdkMsR0FBNkMsRUFBaEUsQ0FIcUMsQ0FLckM7O0FBQ0FJLEVBQUFBLEdBQUcsQ0FBQ00sTUFBSixDQUFXVixHQUFHLENBQUNVLE1BQUosSUFBYyxHQUF6QjtBQUNBTixFQUFBQSxHQUFHLENBQUNPLE1BQUosQ0FBVyxPQUFYO0FBQ0QsQ0FSRDtBQVVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUJuQyxHQUFqQiIsInNvdXJjZXNDb250ZW50IjpbInZhciBjcmVhdGVFcnJvciA9IHJlcXVpcmUoJ2h0dHAtZXJyb3JzJyk7XHJcbnZhciBleHByZXNzID0gcmVxdWlyZSgnZXhwcmVzcycpO1xyXG5jb25zdCBjb3JzID0gcmVxdWlyZSgnY29ycycpO1xyXG52YXIgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcclxuY29uc3QgYm9keVBhcnNlciA9IHJlcXVpcmUoJ2JvZHktcGFyc2VyJylcclxuY29uc3QgZXhwcmVzc1ZhbGlkYXRvciA9IHJlcXVpcmUoJ2V4cHJlc3MtdmFsaWRhdG9yJylcclxudmFyIHNlc3Npb24gPSByZXF1aXJlKCdleHByZXNzLXNlc3Npb24nKTtcclxudmFyIEZpbGVTdG9yZSA9IHJlcXVpcmUoJ3Nlc3Npb24tZmlsZS1zdG9yZScpKHNlc3Npb24pO1xyXG52YXIgY29va2llUGFyc2VyID0gcmVxdWlyZSgnY29va2llLXBhcnNlcicpO1xyXG52YXIgbG9nZ2VyID0gcmVxdWlyZSgnbW9yZ2FuJyk7XHJcbnZhciBwYXNzcG9ydCA9IHJlcXVpcmUoJ3Bhc3Nwb3J0Jyk7XHJcbmNvbnN0IG1vbmdvb3NlID0gcmVxdWlyZSgnbW9uZ29vc2UnKTtcclxucmVxdWlyZSgnZG90ZW52JykuY29uZmlnKClcclxuXHJcbnZhciB1c2VyUm91dGVyID0gcmVxdWlyZSgnLi9yb3V0ZXMvdXNlclJvdXRlcicpO1xyXG52YXIgZW1wbG95ZWVSb3V0ZXIgPSByZXF1aXJlKCcuL3JvdXRlcy9lbXBsb3llZVJvdXRlcicpO1xyXG52YXIgcGxhY2VSb3V0ZXIgPSByZXF1aXJlKCcuL3JvdXRlcy9wbGFjZVJvdXRlcicpO1xyXG52YXIgc2NoZWR1bGVSb3V0ZXIgPSByZXF1aXJlKCcuL3JvdXRlcy9zY2hlZHVsZVJvdXRlcicpO1xyXG52YXIgdG91cmlzdFJvdXRlciA9IHJlcXVpcmUoJy4vcm91dGVzL3RvdXJpc3RSb3V0ZXInKTtcclxudmFyIGRhc2hib2FyZFJvdXRlciA9IHJlcXVpcmUoJy4vcm91dGVzL2Rhc2hib2FyZFJvdXRlcicpO1xyXG5cclxudmFyIGFwcCA9IGV4cHJlc3MoKTtcclxuXHJcbi8vIHZpZXcgZW5naW5lIHNldHVwXHJcbmFwcC5zZXQoJ3ZpZXdzJywgcGF0aC5qb2luKF9fZGlybmFtZSwgJ3ZpZXdzJykpO1xyXG5hcHAuc2V0KCd2aWV3IGVuZ2luZScsICdqYWRlJyk7XHJcbmFwcC51c2UoY29ycygpKTtcclxuYXBwLnVzZShwYXNzcG9ydC5pbml0aWFsaXplKCkpO1xyXG5cclxuYXBwLnVzZShib2R5UGFyc2VyLmpzb24oKSk7XHJcblxyXG5hcHAudXNlKGNvb2tpZVBhcnNlcigndGhlLWltbW9ydGFsLWNvaWxzJykpO1xyXG4vLyBhcHAudXNlKGxvZ2dlcignZGV2JykpO1xyXG5hcHAudXNlKGV4cHJlc3MuanNvbigpKTtcclxuYXBwLnVzZShleHByZXNzLnVybGVuY29kZWQoeyBleHRlbmRlZDogZmFsc2UgfSkpO1xyXG5hcHAudXNlKGNvb2tpZVBhcnNlcigpKTtcclxuLy8gYXBwLnVzZShleHByZXNzLnN0YXRpYygnYnVpbGQnKSk7XHJcbmFwcC51c2UoZXhwcmVzcy5zdGF0aWMocGF0aC5qb2luKF9fZGlybmFtZSwgJ2J1aWxkJykpKTtcclxuXHJcbnZhciB1cmwgPSBwcm9jZXNzLmVudi5tb25nb1VybDtcclxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAndGVzdCcpIHtcclxuICB1cmwgPSBwcm9jZXNzLmVudi50ZXN0TW9uZ29Vcmw7XHJcbn1cclxubW9uZ29vc2UuY29ubmVjdCh1cmwsIHsgdXNlTmV3VXJsUGFyc2VyOiB0cnVlLCB1c2VDcmVhdGVJbmRleDogdHJ1ZSwgdXNlVW5pZmllZFRvcG9sb2d5OiB0cnVlIH0pLnRoZW4oKGRiKSA9PiB7XHJcbn0sIChlcnIpID0+IHtcclxuICBpZiAoZXJyKSB7XHJcbiAgICBjb25zb2xlLmxvZygn8J+RuiAgRXJyb3IgY29ubmVjdGluZyB0byBNb25nb0RCJyk7XHJcbiAgfSBlbHNlIHtcclxuICAgIGNvbnNvbGUubG9nKCfinIUgIENvbm5lY3RlZCB0byBNb25nb0RCJyk7XHJcbiAgfVxyXG59KTtcclxuXHJcbmFwcC51c2UoJy91c2VycycsIHVzZXJSb3V0ZXIpO1xyXG5hcHAudXNlKCcvZW1wbG95ZWVzJywgZW1wbG95ZWVSb3V0ZXIpO1xyXG5hcHAudXNlKCcvcGxhY2VzJywgcGxhY2VSb3V0ZXIpO1xyXG5hcHAudXNlKCcvc2NoZWR1bGVzJywgc2NoZWR1bGVSb3V0ZXIpO1xyXG5hcHAudXNlKCcvdG91cmlzdHMnLCB0b3VyaXN0Um91dGVyKTtcclxuYXBwLnVzZSgnL2Rhc2hib2FyZCcsIGRhc2hib2FyZFJvdXRlcik7XHJcblxyXG4vLyBjYXRjaCA0MDQgYW5kIGZvcndhcmQgdG8gZXJyb3IgaGFuZGxlclxyXG5hcHAudXNlKGZ1bmN0aW9uIChyZXEsIHJlcywgbmV4dCkge1xyXG4gIG5leHQoY3JlYXRlRXJyb3IoNDA0KSk7XHJcbn0pO1xyXG5cclxuLy8gZXJyb3IgaGFuZGxlclxyXG5hcHAudXNlKGZ1bmN0aW9uIChlcnIsIHJlcSwgcmVzLCBuZXh0KSB7XHJcbiAgLy8gc2V0IGxvY2Fscywgb25seSBwcm92aWRpbmcgZXJyb3IgaW4gZGV2ZWxvcG1lbnRcclxuICByZXMubG9jYWxzLm1lc3NhZ2UgPSBlcnIubWVzc2FnZTtcclxuICByZXMubG9jYWxzLmVycm9yID0gcmVxLmFwcC5nZXQoJ2VudicpID09PSAnZGV2ZWxvcG1lbnQnID8gZXJyIDoge307XHJcblxyXG4gIC8vIHJlbmRlciB0aGUgZXJyb3IgcGFnZVxyXG4gIHJlcy5zdGF0dXMoZXJyLnN0YXR1cyB8fCA1MDApO1xyXG4gIHJlcy5yZW5kZXIoJ2Vycm9yJyk7XHJcbn0pO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBhcHA7XHJcbiJdfQ==\",\"originalCode\":\"var createError = require('http-errors');\\r\\nvar express = require('express');\\r\\nconst cors = require('cors');\\r\\nvar path = require('path');\\r\\nconst bodyParser = require('body-parser')\\r\\nconst expressValidator = require('express-validator')\\r\\nvar session = require('express-session');\\r\\nvar FileStore = require('session-file-store')(session);\\r\\nvar cookieParser = require('cookie-parser');\\r\\nvar logger = require('morgan');\\r\\nvar passport = require('passport');\\r\\nconst mongoose = require('mongoose');\\r\\nrequire('dotenv').config()\\r\\n\\r\\nvar userRouter = require('./routes/userRouter');\\r\\nvar employeeRouter = require('./routes/employeeRouter');\\r\\nvar placeRouter = require('./routes/placeRouter');\\r\\nvar scheduleRouter = require('./routes/scheduleRouter');\\r\\nvar touristRouter = require('./routes/touristRouter');\\r\\nvar dashboardRouter = require('./routes/dashboardRouter');\\r\\n\\r\\nvar app = express();\\r\\n\\r\\n// view engine setup\\r\\napp.set('views', path.join(__dirname, 'views'));\\r\\napp.set('view engine', 'jade');\\r\\napp.use(cors());\\r\\napp.use(passport.initialize());\\r\\n\\r\\napp.use(bodyParser.json());\\r\\n\\r\\napp.use(cookieParser('the-immortal-coils'));\\r\\n// app.use(logger('dev'));\\r\\napp.use(express.json());\\r\\napp.use(express.urlencoded({ extended: false }));\\r\\napp.use(cookieParser());\\r\\n// app.use(express.static('build'));\\r\\napp.use(express.static(path.join(__dirname, 'build')));\\r\\n\\r\\nvar url = process.env.mongoUrl;\\r\\nif (process.env.NODE_ENV === 'test') {\\r\\n url = process.env.testMongoUrl;\\r\\n}\\r\\nmongoose.connect(url, { useNewUrlParser: true, useCreateIndex: true, useUnifiedTopology: true }).then((db) => {\\r\\n}, (err) => {\\r\\n if (err) {\\r\\n console.log('👺 Error connecting to MongoDB');\\r\\n } else {\\r\\n console.log('✅ Connected to MongoDB');\\r\\n }\\r\\n});\\r\\n\\r\\napp.use('/users', userRouter);\\r\\napp.use('/employees', employeeRouter);\\r\\napp.use('/places', placeRouter);\\r\\napp.use('/schedules', scheduleRouter);\\r\\napp.use('/tourists', touristRouter);\\r\\napp.use('/dashboard', dashboardRouter);\\r\\n\\r\\n// catch 404 and forward to error handler\\r\\napp.use(function (req, res, next) {\\r\\n next(createError(404));\\r\\n});\\r\\n\\r\\n// error handler\\r\\napp.use(function (err, req, res, next) {\\r\\n // set locals, only providing error in development\\r\\n res.locals.message = err.message;\\r\\n res.locals.error = req.app.get('env') === 'development' ? err : {};\\r\\n\\r\\n // render the error page\\r\\n res.status(err.status || 500);\\r\\n res.render('error');\\r\\n});\\r\\n\\r\\nmodule.exports = app;\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/01/app_010e21b7416079df77678cc6cb70a530.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"1596\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\app.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":10626,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":10623,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1632,\"endOffset\":1640,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1642,\"endOffset\":1776,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":2049,\"endOffset\":2104,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":2133,\"endOffset\":2408,\"count\":1}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"var express = require('express');\\n\\nvar userRouter = express.Router();\\n\\nconst bodyParser = require('body-parser');\\n\\nvar upload = require('../controllers/upload');\\n\\nconst {\\n checkSchema\\n} = require('express-validator');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nvar validationRules = require('../middleware/validation');\\n\\nvar userController = require('../controllers/userController');\\n\\nconst cors = require('./cors');\\n\\nuserRouter.use(bodyParser.json());\\nuserRouter.options('*', cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n});\\nuserRouter.post('/signup/admin', cors.corsWithOptions, userController.signupAdmin);\\nuserRouter.post('/login', cors.corsWithOptions, userController.login);\\nuserRouter.post('/changepassoword/:id', authenticate.verifyUser, userController.changePassoword);\\nuserRouter.post(\\\"/updateprofilepicture/:id\\\", authenticate.verifyUser, upload.UploadUserImage);\\nuserRouter.get('/logout', authenticate.verifyUser, userController.logout);\\nmodule.exports = userRouter;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVzZXJSb3V0ZXIuanMiXSwibmFtZXMiOlsiZXhwcmVzcyIsInJlcXVpcmUiLCJ1c2VyUm91dGVyIiwiUm91dGVyIiwiYm9keVBhcnNlciIsInVwbG9hZCIsImNoZWNrU2NoZW1hIiwiYXV0aGVudGljYXRlIiwidmFsaWRhdGlvblJ1bGVzIiwidXNlckNvbnRyb2xsZXIiLCJjb3JzIiwidXNlIiwianNvbiIsIm9wdGlvbnMiLCJjb3JzV2l0aE9wdGlvbnMiLCJyZXEiLCJyZXMiLCJzZW5kU3RhdHVzIiwicG9zdCIsInNpZ251cEFkbWluIiwibG9naW4iLCJ2ZXJpZnlVc2VyIiwiY2hhbmdlUGFzc293b3JkIiwiVXBsb2FkVXNlckltYWdlIiwiZ2V0IiwibG9nb3V0IiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsSUFBSUEsT0FBTyxHQUFHQyxPQUFPLENBQUMsU0FBRCxDQUFyQjs7QUFDQSxJQUFJQyxVQUFVLEdBQUdGLE9BQU8sQ0FBQ0csTUFBUixFQUFqQjs7QUFFQSxNQUFNQyxVQUFVLEdBQUdILE9BQU8sQ0FBQyxhQUFELENBQTFCOztBQUNBLElBQUlJLE1BQU0sR0FBR0osT0FBTyxDQUFDLHVCQUFELENBQXBCOztBQUNBLE1BQU07QUFBRUssRUFBQUE7QUFBRixJQUFrQkwsT0FBTyxDQUFDLG1CQUFELENBQS9COztBQUNBLElBQUlNLFlBQVksR0FBR04sT0FBTyxDQUFDLDRCQUFELENBQTFCOztBQUNBLElBQUlPLGVBQWUsR0FBR1AsT0FBTyxDQUFDLDBCQUFELENBQTdCOztBQUNBLElBQUlRLGNBQWMsR0FBR1IsT0FBTyxDQUFDLCtCQUFELENBQTVCOztBQUNBLE1BQU1TLElBQUksR0FBR1QsT0FBTyxDQUFDLFFBQUQsQ0FBcEI7O0FBRUFDLFVBQVUsQ0FBQ1MsR0FBWCxDQUFlUCxVQUFVLENBQUNRLElBQVgsRUFBZjtBQUVBVixVQUFVLENBQUNXLE9BQVgsQ0FBbUIsR0FBbkIsRUFBd0JILElBQUksQ0FBQ0ksZUFBN0IsRUFBOEMsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEtBQWM7QUFBRUEsRUFBQUEsR0FBRyxDQUFDQyxVQUFKLENBQWUsR0FBZjtBQUFzQixDQUFwRjtBQUVBZixVQUFVLENBQUNnQixJQUFYLENBQWdCLGVBQWhCLEVBQWlDUixJQUFJLENBQUNJLGVBQXRDLEVBQXVETCxjQUFjLENBQUNVLFdBQXRFO0FBRUFqQixVQUFVLENBQUNnQixJQUFYLENBQWdCLFFBQWhCLEVBQTBCUixJQUFJLENBQUNJLGVBQS9CLEVBQWdETCxjQUFjLENBQUNXLEtBQS9EO0FBRUFsQixVQUFVLENBQUNnQixJQUFYLENBQWdCLHNCQUFoQixFQUF1Q1gsWUFBWSxDQUFDYyxVQUFwRCxFQUFnRVosY0FBYyxDQUFDYSxlQUEvRTtBQUVBcEIsVUFBVSxDQUFDZ0IsSUFBWCxDQUFnQiwyQkFBaEIsRUFBNENYLFlBQVksQ0FBQ2MsVUFBekQsRUFBcUVoQixNQUFNLENBQUNrQixlQUE1RTtBQUVBckIsVUFBVSxDQUFDc0IsR0FBWCxDQUFlLFNBQWYsRUFBeUJqQixZQUFZLENBQUNjLFVBQXRDLEVBQWtEWixjQUFjLENBQUNnQixNQUFqRTtBQUVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUJ6QixVQUFqQiIsInNvdXJjZXNDb250ZW50IjpbInZhciBleHByZXNzID0gcmVxdWlyZSgnZXhwcmVzcycpO1xyXG52YXIgdXNlclJvdXRlciA9IGV4cHJlc3MuUm91dGVyKCk7XHJcblxyXG5jb25zdCBib2R5UGFyc2VyID0gcmVxdWlyZSgnYm9keS1wYXJzZXInKTtcclxudmFyIHVwbG9hZCA9IHJlcXVpcmUoJy4uL2NvbnRyb2xsZXJzL3VwbG9hZCcpO1xyXG5jb25zdCB7IGNoZWNrU2NoZW1hIH0gPSByZXF1aXJlKCdleHByZXNzLXZhbGlkYXRvcicpO1xyXG52YXIgYXV0aGVudGljYXRlID0gcmVxdWlyZSgnLi4vbWlkZGxld2FyZS9hdXRoZW50aWNhdGUnKTtcclxudmFyIHZhbGlkYXRpb25SdWxlcyA9IHJlcXVpcmUoJy4uL21pZGRsZXdhcmUvdmFsaWRhdGlvbicpO1xyXG52YXIgdXNlckNvbnRyb2xsZXIgPSByZXF1aXJlKCcuLi9jb250cm9sbGVycy91c2VyQ29udHJvbGxlcicpO1xyXG5jb25zdCBjb3JzID0gcmVxdWlyZSgnLi9jb3JzJyk7XHJcblxyXG51c2VyUm91dGVyLnVzZShib2R5UGFyc2VyLmpzb24oKSk7XHJcblxyXG51c2VyUm91dGVyLm9wdGlvbnMoJyonLCBjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcblxyXG51c2VyUm91dGVyLnBvc3QoJy9zaWdudXAvYWRtaW4nLCBjb3JzLmNvcnNXaXRoT3B0aW9ucywgdXNlckNvbnRyb2xsZXIuc2lnbnVwQWRtaW4pO1xyXG5cclxudXNlclJvdXRlci5wb3N0KCcvbG9naW4nLCBjb3JzLmNvcnNXaXRoT3B0aW9ucywgdXNlckNvbnRyb2xsZXIubG9naW4pO1xyXG5cclxudXNlclJvdXRlci5wb3N0KCcvY2hhbmdlcGFzc293b3JkLzppZCcsYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIHVzZXJDb250cm9sbGVyLmNoYW5nZVBhc3Nvd29yZCk7XHJcblxyXG51c2VyUm91dGVyLnBvc3QoXCIvdXBkYXRlcHJvZmlsZXBpY3R1cmUvOmlkXCIsYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIHVwbG9hZC5VcGxvYWRVc2VySW1hZ2UpO1xyXG5cclxudXNlclJvdXRlci5nZXQoJy9sb2dvdXQnLGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCB1c2VyQ29udHJvbGxlci5sb2dvdXQpO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSB1c2VyUm91dGVyO1xyXG4iXX0=\",\"originalCode\":\"var express = require('express');\\r\\nvar userRouter = express.Router();\\r\\n\\r\\nconst bodyParser = require('body-parser');\\r\\nvar upload = require('../controllers/upload');\\r\\nconst { checkSchema } = require('express-validator');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\nvar validationRules = require('../middleware/validation');\\r\\nvar userController = require('../controllers/userController');\\r\\nconst cors = require('./cors');\\r\\n\\r\\nuserRouter.use(bodyParser.json());\\r\\n\\r\\nuserRouter.options('*', cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n\\r\\nuserRouter.post('/signup/admin', cors.corsWithOptions, userController.signupAdmin);\\r\\n\\r\\nuserRouter.post('/login', cors.corsWithOptions, userController.login);\\r\\n\\r\\nuserRouter.post('/changepassoword/:id',authenticate.verifyUser, userController.changePassoword);\\r\\n\\r\\nuserRouter.post(\\\"/updateprofilepicture/:id\\\",authenticate.verifyUser, upload.UploadUserImage);\\r\\n\\r\\nuserRouter.get('/logout',authenticate.verifyUser, userController.logout);\\r\\n\\r\\nmodule.exports = userRouter;\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/a6/userRouter_a6221ff3be20743fe1c0fd1dc9fd8435.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2377\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\userRouter.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":4566,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":4563,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":606,\"endOffset\":646,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const sharp = require('sharp');\\n\\nconst uid = require('uid');\\n\\nconst fs = require('fs');\\n\\nconst Users = require('../models/users');\\n\\nconst Places = require('../models/visitingPlaces');\\n\\nconst uploadFile = async (req, res) => {\\n try {\\n await upload(req, res);\\n\\n if (req.file == undefined) {\\n return res.send(`You must select a file.`);\\n }\\n\\n return res.send(`File has been uploaded.`);\\n } catch (error) {\\n return res.send(`Error when trying upload image: ${error}`);\\n }\\n};\\n\\nconst UploadUserImage = async (req, res, next) => {\\n try {\\n const user_id = req.params._id;\\n const user = await Users.findById(user_id);\\n console.log(req);\\n let imageUrl;\\n\\n if (req.file) {\\n imageUrl = `${uid()}__${req.file.originalname}`;\\n let filename = `images/userImages/${imageUrl}`;\\n let previousImagePath = `images/userImages/${user.image}`;\\n const imageExist = fs.existsSync(previousImagePath);\\n\\n if (imageExist) {\\n deleteImage(previousImagePath);\\n }\\n\\n await sharp(req.file.path).rotate().resize(500, 500).toFile(filename);\\n fs.unlink(req.file.path, err => {\\n if (err) {}\\n });\\n } else {\\n imageUrl = 'profile.png';\\n }\\n\\n user.image = imageUrl;\\n await user.save();\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n message: 'Successfully updated profile picture'\\n });\\n } catch (err) {\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Error while updating profile picture'\\n });\\n }\\n};\\n\\nconst uploadPlaceImage = async (req, res, next) => {\\n try {\\n const place_id = req.params._id;\\n const place = await Places.findById(place_id);\\n let imageUrl;\\n\\n if (req.file) {\\n imageUrl = `${uid()}__${req.file.originalname}`;\\n let filename = `images/placeImages/${imageUrl}`;\\n let previousImagePath = `images/placeImages/${place.image}`;\\n const imageExist = fs.existsSync(previousImagePath);\\n\\n if (imageExist) {\\n deleteImage(previousImagePath);\\n }\\n\\n await sharp(req.file.path).rotate().resize(500, 500).toFile(filename);\\n fs.unlink(req.file.path, err => {\\n if (err) {}\\n });\\n } else {\\n imageUrl = 'image.png';\\n }\\n\\n place.image = imageUrl;\\n await place.save();\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n message: 'Successfully updated profile picture'\\n });\\n } catch (err) {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Error while updating profile picture'\\n });\\n }\\n};\\n\\nexports.UploadUserImage = UploadUserImage;\\nexports.uploadFile = uploadFile;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVwbG9hZC5qcyJdLCJuYW1lcyI6WyJzaGFycCIsInJlcXVpcmUiLCJ1aWQiLCJmcyIsIlVzZXJzIiwiUGxhY2VzIiwidXBsb2FkRmlsZSIsInJlcSIsInJlcyIsInVwbG9hZCIsImZpbGUiLCJ1bmRlZmluZWQiLCJzZW5kIiwiZXJyb3IiLCJVcGxvYWRVc2VySW1hZ2UiLCJuZXh0IiwidXNlcl9pZCIsInBhcmFtcyIsIl9pZCIsInVzZXIiLCJmaW5kQnlJZCIsImNvbnNvbGUiLCJsb2ciLCJpbWFnZVVybCIsIm9yaWdpbmFsbmFtZSIsImZpbGVuYW1lIiwicHJldmlvdXNJbWFnZVBhdGgiLCJpbWFnZSIsImltYWdlRXhpc3QiLCJleGlzdHNTeW5jIiwiZGVsZXRlSW1hZ2UiLCJwYXRoIiwicm90YXRlIiwicmVzaXplIiwidG9GaWxlIiwidW5saW5rIiwiZXJyIiwic2F2ZSIsInN0YXR1c0NvZGUiLCJzZXRIZWFkZXIiLCJqc29uIiwic3VjY2VzcyIsIm1lc3NhZ2UiLCJ1cGxvYWRQbGFjZUltYWdlIiwicGxhY2VfaWQiLCJwbGFjZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLEtBQUssR0FBR0MsT0FBTyxDQUFDLE9BQUQsQ0FBckI7O0FBQ0EsTUFBTUMsR0FBRyxHQUFHRCxPQUFPLENBQUMsS0FBRCxDQUFuQjs7QUFDQSxNQUFNRSxFQUFFLEdBQUdGLE9BQU8sQ0FBQyxJQUFELENBQWxCOztBQUNBLE1BQU1HLEtBQUssR0FBR0gsT0FBTyxDQUFDLGlCQUFELENBQXJCOztBQUNBLE1BQU1JLE1BQU0sR0FBR0osT0FBTyxDQUFDLDBCQUFELENBQXRCOztBQUVBLE1BQU1LLFVBQVUsR0FBRyxPQUFPQyxHQUFQLEVBQVlDLEdBQVosS0FBb0I7QUFDbkMsTUFBSTtBQUNBLFVBQU1DLE1BQU0sQ0FBQ0YsR0FBRCxFQUFNQyxHQUFOLENBQVo7O0FBRUEsUUFBSUQsR0FBRyxDQUFDRyxJQUFKLElBQVlDLFNBQWhCLEVBQTJCO0FBQ3ZCLGFBQU9I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Q0FBQzhCLFVBQUosR0FBaUIsR0FBakI7QUFDQTlCLElBQUFBLEdBQUcsQ0FBQytCLFNBQUosQ0FBYyxjQUFkLEVBQThCLGtCQUE5QjtBQUNBL0IsSUFBQUEsR0FBRyxDQUFDZ0MsSUFBSixDQUFTO0FBQUVDLE1BQUFBLE9BQU8sRUFBRSxLQUFYO0FBQWtCQyxNQUFBQSxPQUFPLEVBQUU7QUFBM0IsS0FBVDtBQUNIO0FBQ0osQ0F6Q0Q7O0FBMkNBSSxPQUFPLENBQUNoQyxlQUFSLEdBQTBCQSxlQUExQjtBQUNBZ0MsT0FBTyxDQUFDeEMsVUFBUixHQUFxQkEsVUFBckIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBzaGFycCA9IHJlcXVpcmUoJ3NoYXJwJyk7XHJcbmNvbnN0IHVpZCA9IHJlcXVpcmUoJ3VpZCcpO1xyXG5jb25zdCBmcyA9IHJlcXVpcmUoJ2ZzJyk7XHJcbmNvbnN0IFVzZXJzID0gcmVxdWlyZSgnLi4vbW9kZWxzL3VzZXJzJyk7XHJcbmNvbnN0IFBsYWNlcyA9IHJlcXVpcmUoJy4uL21vZGVscy92aXNpdGluZ1BsYWNlcycpXHJcblxyXG5jb25zdCB1cGxvYWRGaWxlID0gYXN5bmMgKHJlcSwgcmVzKSA9PiB7XHJcbiAgICB0cnkge1xyXG4gICAgICAgIGF3YWl0IHVwbG9hZChyZXEsIHJlcyk7XHJcblxyXG4gICAgICAgIGlmIChyZXEuZmlsZSA9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlcy5zZW5kKGBZb3UgbXVzdCBzZWxlY3QgYSBmaWxlLmApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHJlcy5zZW5kKGBGaWxlIGhhcyBiZWVuIHVwbG9hZGVkLmApO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICByZXR1cm4gcmVzLnNlbmQoYEVycm9yIHdoZW4gdHJ5aW5nIHVwbG9hZCBpbWFnZTogJHtlcnJvcn1gKTtcclxuICAgIH1cclxufTtcclxuXHJcbmNvbnN0IFVwbG9hZFVzZXJJbWFnZSA9IGFzeW5jIChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgICBjb25zdCB1c2VyX2lkID0gcmVxLnBhcmFtcy5faWQ7XHJcbiAgICAgICAgY29uc3QgdXNlciA9IGF3YWl0IFVzZXJzLmZpbmRCeUlkKHVzZXJfaWQpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKHJlcSk7XHJcblxyXG4gICAgICAgIGxldCBpbWFnZVVybDtcclxuICAgICAgICBpZiAocmVxLmZpbGUpIHtcclxuICAgICAgICAgICAgaW1hZ2VVcmwgPSBgJHt1aWQoKX1fXyR7cmVxLmZpbGUub3JpZ2luYWxuYW1lfWA7XHJcbiAgICAgICAgICAgIGxldCBmaWxlbmFtZSA9IGBpbWFnZXMvdXNlckltYWdlcy8ke2ltYWdlVXJsfWA7XHJcbiAgICAgICAgICAgIGxldCBwcmV2aW91c0ltYWdlUGF0aCA9IGBpbWFnZXMvdXNlckltYWdlcy8ke3VzZXIuaW1hZ2V9YDtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGltYWdlRXhpc3QgPSBmcy5leGlzdHNTeW5jKHByZXZpb3VzSW1hZ2VQYXRoKTtcclxuICAgICAgICAgICAgaWYgKGltYWdlRXhpc3QpIHtcclxuICAgICAgICAgICAgICAgIGRlbGV0ZUltYWdlKHByZXZpb3VzSW1hZ2VQYXRoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBhd2FpdCBzaGFycChyZXEuZmlsZS5wYXRoKVxyXG4gICAgICAgICAgICAgICAgLnJvdGF0ZSgpXHJcbiAgICAgICAgICAgICAgICAucmVzaXplKDUwMCwgNTAwKVxyXG4gICAgICAgICAgICAgICAgLnRvRmlsZShmaWxlbmFtZSk7XHJcblxyXG4gICAgICAgICAgICBmcy51bmxpbmsocmVxLmZpbGUucGF0aCwgKGVycikgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGltYWdlVXJsID0gJ3Byb2ZpbGUucG5nJztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHVzZXIuaW1hZ2UgPSBpbWFnZVVybDtcclxuICAgICAgICBhd2FpdCB1c2VyLnNhdmUoKTtcclxuXHJcblxyXG4gICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCBtZXNzYWdlOiAnU3VjY2Vzc2Z1bGx5IHVwZGF0ZWQgcHJvZmlsZSBwaWN0dXJlJyB9KTtcclxuXHJcbiAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDUwMDtcclxuICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogZmFsc2UsIG1lc3NhZ2U6ICdFcnJvciB3aGlsZSB1cGRhdGluZyBwcm9maWxlIHBpY3R1cmUnIH0pO1xyXG4gICAgfVxyXG59O1xyXG5cclxuY29uc3QgdXBsb2FkUGxhY2VJbWFnZSA9IGFzeW5jIChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgICBjb25zdCBwbGFjZV9pZCA9IHJlcS5wYXJhbXMuX2lkO1xyXG4gICAgICAgIGNvbnN0IHBsYWNlID0gYXdhaXQgUGxhY2VzLmZpbmRCeUlkKHBsYWNlX2lkKTtcclxuXHJcbiAgICAgICAgbGV0IGltYWdlVXJsO1xyXG4gICAgICAgIGlmIChyZXEuZmlsZSkge1xyXG4gICAgICAgICAgICBpbWFnZVVybCA9IGAke3VpZCgpfV9fJHtyZXEuZmlsZS5vcmlnaW5hbG5hbWV9YDtcclxuICAgICAgICAgICAgbGV0IGZpbGVuYW1lID0gYGltYWdlcy9wbGFjZUltYWdlcy8ke2ltYWdlVXJsfWA7XHJcbiAgICAgICAgICAgIGxldCBwcmV2aW91c0ltYWdlUGF0aCA9IGBpbWFnZXMvcGxhY2VJbWFnZXMvJHtwbGFjZS5pbWFnZX1gO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgaW1hZ2VFeGlzdCA9IGZzLmV4aXN0c1N5bmMocHJldmlvdXNJbWFnZVBhdGgpO1xyXG4gICAgICAgICAgICBpZiAoaW1hZ2VFeGlzdCkge1xyXG4gICAgICAgICAgICAgICAgZGVsZXRlSW1hZ2UocHJldmlvdXNJbWFnZVBhdGgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGF3YWl0IHNoYXJwKHJlcS5maWxlLnBhdGgpXHJcbiAgICAgICAgICAgICAgICAucm90YXRlKClcclxuICAgICAgICAgICAgICAgIC5yZXNpemUoNTAwLCA1MDApXHJcbiAgICAgICAgICAgICAgICAudG9GaWxlKGZpbGVuYW1lKTtcclxuXHJcbiAgICAgICAgICAgIGZzLnVubGluayhyZXEuZmlsZS5wYXRoLCAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaW1hZ2VVcmwgPSAnaW1hZ2UucG5nJztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHBsYWNlLmltYWdlID0gaW1hZ2VVcmw7XHJcbiAgICAgICAgYXdhaXQgcGxhY2Uuc2F2ZSgpO1xyXG5cclxuXHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA1MDA7XHJcbiAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIG1lc3NhZ2U6ICdTdWNjZXNzZnVsbHkgdXBkYXRlZCBwcm9maWxlIHBpY3R1cmUnIH0pO1xyXG5cclxuICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogJ0Vycm9yIHdoaWxlIHVwZGF0aW5nIHByb2ZpbGUgcGljdHVyZScgfSk7XHJcbiAgICB9XHJcbn07XHJcblxyXG5leHBvcnRzLlVwbG9hZFVzZXJJbWFnZSA9IFVwbG9hZFVzZXJJbWFnZTtcclxuZXhwb3J0cy51cGxvYWRGaWxlID0gdXBsb2FkRmlsZTsiXX0=\",\"originalCode\":\"const sharp = require('sharp');\\r\\nconst uid = require('uid');\\r\\nconst fs = require('fs');\\r\\nconst Users = require('../models/users');\\r\\nconst Places = require('../models/visitingPlaces')\\r\\n\\r\\nconst uploadFile = async (req, res) => {\\r\\n try {\\r\\n await upload(req, res);\\r\\n\\r\\n if (req.file == undefined) {\\r\\n return res.send(`You must select a file.`);\\r\\n }\\r\\n\\r\\n return res.send(`File has been uploaded.`);\\r\\n } catch (error) {\\r\\n return res.send(`Error when trying upload image: ${error}`);\\r\\n }\\r\\n};\\r\\n\\r\\nconst UploadUserImage = async (req, res, next) => {\\r\\n try {\\r\\n const user_id = req.params._id;\\r\\n const user = await Users.findById(user_id);\\r\\n console.log(req);\\r\\n\\r\\n let imageUrl;\\r\\n if (req.file) {\\r\\n imageUrl = `${uid()}__${req.file.originalname}`;\\r\\n let filename = `images/userImages/${imageUrl}`;\\r\\n let previousImagePath = `images/userImages/${user.image}`;\\r\\n\\r\\n const imageExist = fs.existsSync(previousImagePath);\\r\\n if (imageExist) {\\r\\n deleteImage(previousImagePath);\\r\\n }\\r\\n await sharp(req.file.path)\\r\\n .rotate()\\r\\n .resize(500, 500)\\r\\n .toFile(filename);\\r\\n\\r\\n fs.unlink(req.file.path, (err) => {\\r\\n if (err) {\\r\\n }\\r\\n })\\r\\n } else {\\r\\n imageUrl = 'profile.png';\\r\\n }\\r\\n\\r\\n user.image = imageUrl;\\r\\n await user.save();\\r\\n\\r\\n\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, message: 'Successfully updated profile picture' });\\r\\n\\r\\n } catch (err) {\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Error while updating profile picture' });\\r\\n }\\r\\n};\\r\\n\\r\\nconst uploadPlaceImage = async (req, res, next) => {\\r\\n try {\\r\\n const place_id = req.params._id;\\r\\n const place = await Places.findById(place_id);\\r\\n\\r\\n let imageUrl;\\r\\n if (req.file) {\\r\\n imageUrl = `${uid()}__${req.file.originalname}`;\\r\\n let filename = `images/placeImages/${imageUrl}`;\\r\\n let previousImagePath = `images/placeImages/${place.image}`;\\r\\n\\r\\n const imageExist = fs.existsSync(previousImagePath);\\r\\n if (imageExist) {\\r\\n deleteImage(previousImagePath);\\r\\n }\\r\\n await sharp(req.file.path)\\r\\n .rotate()\\r\\n .resize(500, 500)\\r\\n .toFile(filename);\\r\\n\\r\\n fs.unlink(req.file.path, (err) => {\\r\\n if (err) {\\r\\n }\\r\\n })\\r\\n } else {\\r\\n imageUrl = 'image.png';\\r\\n }\\r\\n\\r\\n place.image = imageUrl;\\r\\n await place.save();\\r\\n\\r\\n\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, message: 'Successfully updated profile picture' });\\r\\n\\r\\n } catch (err) {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Error while updating profile picture' });\\r\\n }\\r\\n};\\r\\n\\r\\nexports.UploadUserImage = UploadUserImage;\\r\\nexports.uploadFile = uploadFile;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/7c/upload_7c4638f764653e4bdd79a0ce3f99ff41.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2378\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\upload.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":12934,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":12931,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"uploadFile\",\"ranges\":[{\"startOffset\":293,\"endOffset\":580,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"UploadUserImage\",\"ranges\":[{\"startOffset\":607,\"endOffset\":1726,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"uploadPlaceImage\",\"ranges\":[{\"startOffset\":1754,\"endOffset\":2858,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"var mongoose = require('mongoose');\\n\\nvar Schema = mongoose.Schema;\\n\\nvar passportLocalMongoose = require('passport-local-mongoose');\\n\\nvar User = new Schema({\\n firstname: {\\n type: String,\\n required: true\\n },\\n lastname: {\\n type: String,\\n required: true\\n },\\n email: {\\n type: String,\\n required: true,\\n unique: true\\n },\\n mobile: {\\n type: String\\n },\\n role: {\\n type: String,\\n default: \\\"user\\\",\\n enum: ['user', 'moderater', 'admin']\\n },\\n image: {\\n type: String\\n },\\n suite: {\\n type: String,\\n enum: ['gold', 'luxury', 'platinum']\\n },\\n rommnumber: {\\n type: String\\n },\\n userstate: {\\n type: String,\\n default: \\\"in\\\",\\n enum: ['in', 'out']\\n }\\n}, {\\n timestamps: true\\n});\\nUser.plugin(passportLocalMongoose);\\nUser.index({\\n '$**': 'text'\\n});\\nvar Users = mongoose.model('User', User);\\nmodule.exports = Users;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVzZXJzLmpzIl0sIm5hbWVzIjpbIm1vbmdvb3NlIiwicmVxdWlyZSIsIlNjaGVtYSIsInBhc3Nwb3J0TG9jYWxNb25nb29zZSIsIlVzZXIiLCJmaXJzdG5hbWUiLCJ0eXBlIiwiU3RyaW5nIiwicmVxdWlyZWQiLCJsYXN0bmFtZSIsImVtYWlsIiwidW5pcXVlIiwibW9iaWxlIiwicm9sZSIsImRlZmF1bHQiLCJlbnVtIiwiaW1hZ2UiLCJzdWl0ZSIsInJvbW1udW1iZXIiLCJ1c2Vyc3RhdGUiLCJ0aW1lc3RhbXBzIiwicGx1Z2luIiwiaW5kZXgiLCJVc2VycyIsIm1vZGVsIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsSUFBSUEsUUFBUSxHQUFHQyxPQUFPLENBQUMsVUFBRCxDQUF0Qjs7QUFDQSxJQUFJQyxNQUFNLEdBQUdGLFFBQVEsQ0FBQ0UsTUFBdEI7O0FBRUEsSUFBSUMscUJBQXFCLEdBQUdGLE9BQU8sQ0FBQyx5QkFBRCxDQUFuQzs7QUFFQSxJQUFJRyxJQUFJLEdBQUcsSUFBSUYsTUFBSixDQUFXO0FBQ2xCRyxFQUFBQSxTQUFTLEVBQUU7QUFDUEMsSUFBQUEsSUFBSSxFQUFFQyxNQURDO0FBRVBDLElBQUFBLFFBQVEsRUFBRTtBQUZILEdBRE87QUFLbEJDLEVBQUFBLFFBQVEsRUFBRTtBQUNOSCxJQUFBQSxJQUFJLEVBQUVDLE1BREE7QUFFTkMsSUFBQUEsUUFBUSxFQUFFO0FBRkosR0FMUTtBQVNsQkUsRUFBQUEsS0FBSyxFQUFFO0FBQ0hKLElBQUFBLElBQUksRUFBRUMsTUFESDtBQUVIQyxJQUFBQSxRQUFRLEVBQUUsSUFGUDtBQUdIRyxJQUFBQSxNQUFNLEVBQUU7QUFITCxHQVRXO0FBY2xCQyxFQUFBQSxNQUFNLEVBQUM7QUFDSE4sSUFBQUEsSUFBSSxFQUFFQztBQURILEdBZFc7QUFpQmxCTSxFQUFBQSxJQUFJLEVBQ0o7QUFDSVAsSUFBQUEsSUFBSSxFQUFFQyxNQURWO0FBRUlPLElBQUFBLE9BQU8sRUFBRSxNQUZiO0FBR0lDLElBQUFBLElBQUksRUFBQyxDQUFDLE1BQUQsRUFBUSxXQUFSLEVBQW9CLE9BQXBCO0FBSFQsR0FsQmtCO0FBdUJsQkMsRUFBQUEsS0FBSyxFQUFFO0FBQ0hWLElBQUFBLElBQUksRUFBRUM7QUFESCxHQXZCVztBQTBCbEJVLEVBQUFBLEtBQUssRUFBQztBQUNGWCxJQUFBQSxJQUFJLEVBQUVDLE1BREo7QUFFRlEsSUFBQUEsSUFBSSxFQUFDLENBQUMsTUFBRCxFQUFRLFFBQVIsRUFBaUIsVUFBakI7QUFGSCxHQTFCWTtBQThCbEJHLEVBQUFBLFVBQVUsRUFBQztBQUNQWixJQUFBQSxJQUFJLEVBQUVDO0FBREMsR0E5Qk87QUFpQ2xCWSxFQUFBQSxTQUFTLEVBQUM7QUFDTmIsSUFBQUEsSUFBSSxFQUFFQyxNQURBO0FBRU5PLElBQUFBLE9BQU8sRUFBRSxJQUZIO0FBR05DLElBQUFBLElBQUksRUFBQyxDQUFDLElBQUQsRUFBTSxLQUFOO0FBSEM7QUFqQ1EsQ0FBWCxFQXNDUjtBQUNDSyxFQUFBQSxVQUFVLEVBQUU7QUFEYixDQXRDUSxDQUFYO0FBMENBaEIsSUFBSSxDQUFDaUIsTUFBTCxDQUFZbEIscUJBQVo7QUFDQUMsSUFBSSxDQUFDa0IsS0FBTCxDQUFXO0FBQUMsU0FBTTtBQUFQLENBQVg7QUFDQSxJQUFJQyxLQUFLLEdBQUd2QixRQUFRLENBQUN3QixLQUFULENBQWUsTUFBZixFQUF1QnBCLElBQXZCLENBQVo7QUFFQXFCLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQkgsS0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgbW9uZ29vc2UgPSByZXF1aXJlKCdtb25nb29zZScpO1xyXG52YXIgU2NoZW1hID0gbW9uZ29vc2UuU2NoZW1hO1xyXG5cclxudmFyIHBhc3Nwb3J0TG9jYWxNb25nb29zZSA9IHJlcXVpcmUoJ3Bhc3Nwb3J0LWxvY2FsLW1vbmdvb3NlJyk7XHJcblxyXG52YXIgVXNlciA9IG5ldyBTY2hlbWEoe1xyXG4gICAgZmlyc3RuYW1lOiB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlXHJcbiAgICB9LFxyXG4gICAgbGFzdG5hbWU6IHtcclxuICAgICAgICB0eXBlOiBTdHJpbmcsXHJcbiAgICAgICAgcmVxdWlyZWQ6IHRydWVcclxuICAgIH0sXHJcbiAgICBlbWFpbDoge1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgICB1bmlxdWU6IHRydWVcclxuICAgIH0sXHJcbiAgICBtb2JpbGU6e1xyXG4gICAgICAgIHR5cGU6IFN0cmluZ1xyXG4gICAgfSxcclxuICAgIHJvbGU6XHJcbiAgICB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICAgIGRlZmF1bHQ6IFwidXNlclwiLFxyXG4gICAgICAgIGVudW06Wyd1c2VyJywnbW9kZXJhdGVyJywnYWRtaW4nXVxyXG4gICAgfSxcclxuICAgIGltYWdlOiB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nXHJcbiAgICB9LFxyXG4gICAgc3VpdGU6e1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICBlbnVtOlsnZ29sZCcsJ2x1eHVyeScsJ3BsYXRpbnVtJ11cclxuICAgIH0sXHJcbiAgICByb21tbnVtYmVyOntcclxuICAgICAgICB0eXBlOiBTdHJpbmdcclxuICAgIH0sXHJcbiAgICB1c2Vyc3RhdGU6e1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICBkZWZhdWx0OiBcImluXCIsXHJcbiAgICAgICAgZW51bTpbJ2luJywnb3V0J11cclxuICAgIH1cclxufSwge1xyXG4gICAgdGltZXN0YW1wczogdHJ1ZVxyXG59KTtcclxuXHJcblVzZXIucGx1Z2luKHBhc3Nwb3J0TG9jYWxNb25nb29zZSk7XHJcblVzZXIuaW5kZXgoeyckKionOid0ZXh0J30pO1xyXG52YXIgVXNlcnMgPSBtb25nb29zZS5tb2RlbCgnVXNlcicsIFVzZXIpO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBVc2VyczsiXX0=\",\"originalCode\":\"var mongoose = require('mongoose');\\r\\nvar Schema = mongoose.Schema;\\r\\n\\r\\nvar passportLocalMongoose = require('passport-local-mongoose');\\r\\n\\r\\nvar User = new Schema({\\r\\n firstname: {\\r\\n type: String,\\r\\n required: true\\r\\n },\\r\\n lastname: {\\r\\n type: String,\\r\\n required: true\\r\\n },\\r\\n email: {\\r\\n type: String,\\r\\n required: true,\\r\\n unique: true\\r\\n },\\r\\n mobile:{\\r\\n type: String\\r\\n },\\r\\n role:\\r\\n {\\r\\n type: String,\\r\\n default: \\\"user\\\",\\r\\n enum:['user','moderater','admin']\\r\\n },\\r\\n image: {\\r\\n type: String\\r\\n },\\r\\n suite:{\\r\\n type: String,\\r\\n enum:['gold','luxury','platinum']\\r\\n },\\r\\n rommnumber:{\\r\\n type: String\\r\\n },\\r\\n userstate:{\\r\\n type: String,\\r\\n default: \\\"in\\\",\\r\\n enum:['in','out']\\r\\n }\\r\\n}, {\\r\\n timestamps: true\\r\\n});\\r\\n\\r\\nUser.plugin(passportLocalMongoose);\\r\\nUser.index({'$**':'text'});\\r\\nvar Users = mongoose.model('User', User);\\r\\n\\r\\nmodule.exports = Users;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/fa/users_fa250a82bd410ffb1909f920e93eed19.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2448\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\models\\\\users.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":4633,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":4630,\"count\":1}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const mongoose = require('mongoose');\\n\\nconst Schema = mongoose.Schema;\\nconst pointSchema = new Schema({\\n type: {\\n type: String,\\n enum: ['Point'],\\n required: true,\\n default: 'Point'\\n },\\n coordinates: {\\n type: [Number],\\n required: true\\n }\\n});\\nconst placeSchema = new Schema({\\n name: {\\n type: String,\\n required: true,\\n unique: true\\n },\\n description: {\\n type: String,\\n required: true\\n },\\n location: {\\n type: pointSchema,\\n index: '2dsphere',\\n required: true\\n },\\n distance: {\\n type: String,\\n required: true\\n },\\n timeToReach: {\\n type: String,\\n required: true\\n },\\n image: {\\n type: String\\n },\\n travellingMethods: [{\\n type: String,\\n enum: ['Bus', 'Car', 'Train', 'Threewheeler', 'Foot']\\n }]\\n}, {\\n timestamps: true\\n});\\nplaceSchema.index({\\n '$**': 'text'\\n});\\nvar Places = mongoose.model('Place', placeSchema);\\nmodule.exports = Places;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInZpc2l0aW5nUGxhY2VzLmpzIl0sIm5hbWVzIjpbIm1vbmdvb3NlIiwicmVxdWlyZSIsIlNjaGVtYSIsInBvaW50U2NoZW1hIiwidHlwZSIsIlN0cmluZyIsImVudW0iLCJyZXF1aXJlZCIsImRlZmF1bHQiLCJjb29yZGluYXRlcyIsIk51bWJlciIsInBsYWNlU2NoZW1hIiwibmFtZSIsInVuaXF1ZSIsImRlc2NyaXB0aW9uIiwibG9jYXRpb24iLCJpbmRleCIsImRpc3RhbmNlIiwidGltZVRvUmVhY2giLCJpbWFnZSIsInRyYXZlbGxpbmdNZXRob2RzIiwidGltZXN0YW1wcyIsIlBsYWNlcyIsIm1vZGVsIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsUUFBUSxHQUFHQyxPQUFPLENBQUMsVUFBRCxDQUF4Qjs7QUFDQSxNQUFNQyxNQUFNLEdBQUdGLFFBQVEsQ0FBQ0UsTUFBeEI7QUFFQSxNQUFNQyxXQUFXLEdBQUcsSUFBSUQsTUFBSixDQUFXO0FBQzNCRSxFQUFBQSxJQUFJLEVBQUU7QUFDRkEsSUFBQUEsSUFBSSxFQUFFQyxNQURKO0FBRUZDLElBQUFBLElBQUksRUFBRSxDQUFDLE9BQUQsQ0FGSjtBQUdGQyxJQUFBQSxRQUFRLEVBQUUsSUFIUjtBQUlGQyxJQUFBQSxPQUFPLEVBQUU7QUFKUCxHQURxQjtBQU8zQkMsRUFBQUEsV0FBVyxFQUFFO0FBQ1RMLElBQUFBLElBQUksRUFBRSxDQUFDTSxNQUFELENBREc7QUFFVEgsSUFBQUEsUUFBUSxFQUFFO0FBRkQ7QUFQYyxDQUFYLENBQXBCO0FBYUEsTUFBTUksV0FBVyxHQUFHLElBQUlULE1BQUosQ0FBVztBQUMzQlUsRUFBQUEsSUFBSSxFQUFFO0FBQ0ZSLElBQUFBLElBQUksRUFBRUMsTUFESjtBQUVGRSxJQUFBQSxRQUFRLEVBQUUsSUFGUjtBQUdGTSxJQUFBQSxNQUFNLEVBQUU7QUFITixHQURxQjtBQU0zQkMsRUFBQUEsV0FBVyxFQUFFO0FBQ1RWLElBQUFBLElBQUksRUFBRUMsTUFERztBQUVURSxJQUFBQSxRQUFRLEVBQUU7QUFGRCxHQU5jO0FBVTNCUSxFQUFBQSxRQUFRLEVBQUU7QUFDTlgsSUFBQUEsSUFBSSxFQUFFRCxXQURBO0FBRU5hLElBQUFBLEtBQUssRUFBRSxVQUZEO0FBR05ULElBQUFBLFFBQVEsRUFBRTtBQUhKLEdBVmlCO0FBZTNCVSxFQUFBQSxRQUFRLEVBQUU7QUFDTmIsSUFBQUEsSUFBSSxFQUFFQyxNQURBO0FBRU5FLElBQUFBLFFBQVEsRUFBRTtBQUZKLEdBZmlCO0FBbUIzQlcsRUFBQUEsV0FBVyxFQUFFO0FBQ1RkLElBQUFBLElBQUksRUFBRUMsTUFERztBQUVURSxJQUFBQSxRQUFRLEVBQUU7QUFGRCxHQW5CYztBQXVCM0JZLEVBQUFBLEtBQUssRUFDTDtBQUNJZixJQUFBQSxJQUFJLEVBQUVDO0FBRFYsR0F4QjJCO0FBMkIzQmUsRUFBQUEsaUJBQWlCLEVBQUUsQ0FDZjtBQUNJaEIsSUFBQUEsSUFBSSxFQUFFQyxNQURWO0FBRUlDLElBQUFBLElBQUksRUFBRSxDQUFDLEtBQUQsRUFBUSxLQUFSLEVBQWUsT0FBZixFQUF3QixjQUF4QixFQUF3QyxNQUF4QztBQUZWLEdBRGU7QUEzQlEsQ0FBWCxFQWlDakI7QUFDQ2UsRUFBQUEsVUFBVSxFQUFFO0FBRGIsQ0FqQ2lCLENBQXBCO0FBcUNBVixXQUFXLENBQUNLLEtBQVosQ0FBa0I7QUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJTSxNQUFNLEdBQUd0QixRQUFRLENBQUN1QixLQUFULENBQWUsT0FBZixFQUF3QlosV0FBeEIsQ0FBYjtBQUVBYSxNQUFNLENBQUNDLE9BQVAsR0FBaUJILE1BQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgbW9uZ29vc2UgPSByZXF1aXJlKCdtb25nb29zZScpO1xyXG5jb25zdCBTY2hlbWEgPSBtb25nb29zZS5TY2hlbWE7XHJcblxyXG5jb25zdCBwb2ludFNjaGVtYSA9IG5ldyBTY2hlbWEoe1xyXG4gICAgdHlwZToge1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICBlbnVtOiBbJ1BvaW50J10sXHJcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXHJcbiAgICAgICAgZGVmYXVsdDogJ1BvaW50J1xyXG4gICAgfSxcclxuICAgIGNvb3JkaW5hdGVzOiB7XHJcbiAgICAgICAgdHlwZTogW051bWJlcl0sXHJcbiAgICAgICAgcmVxdWlyZWQ6IHRydWVcclxuICAgIH1cclxufSk7XHJcblxyXG5jb25zdCBwbGFjZVNjaGVtYSA9IG5ldyBTY2hlbWEoe1xyXG4gICAgbmFtZToge1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgICB1bmlxdWU6IHRydWVcclxuICAgIH0sXHJcbiAgICBkZXNjcmlwdGlvbjoge1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICByZXF1aXJlZDogdHJ1ZVxyXG4gICAgfSxcclxuICAgIGxvY2F0aW9uOiB7XHJcbiAgICAgICAgdHlwZTogcG9pbnRTY2hlbWEsXHJcbiAgICAgICAgaW5kZXg6ICcyZHNwaGVyZScsXHJcbiAgICAgICAgcmVxdWlyZWQ6IHRydWVcclxuICAgIH0sXHJcbiAgICBkaXN0YW5jZToge1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICByZXF1aXJlZDogdHJ1ZVxyXG4gICAgfSxcclxuICAgIHRpbWVUb1JlYWNoOiB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlXHJcbiAgICB9LFxyXG4gICAgaW1hZ2U6XHJcbiAgICB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgfSxcclxuICAgIHRyYXZlbGxpbmdNZXRob2RzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXHJcbiAgICAgICAgICAgIGVudW06IFsnQnVzJywgJ0NhcicsICdUcmFpbicsICdUaHJlZXdoZWVsZXInLCAnRm9vdCddXHJcbiAgICAgICAgfVxyXG4gICAgXVxyXG59LCB7XHJcbiAgICB0aW1lc3RhbXBzOiB0cnVlXHJcbn0pO1xyXG5cclxucGxhY2VTY2hlbWEuaW5kZXgoeyAnJCoqJzogJ3RleHQnIH0pO1xyXG52YXIgUGxhY2VzID0gbW9uZ29vc2UubW9kZWwoJ1BsYWNlJywgcGxhY2VTY2hlbWEpO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBQbGFjZXM7Il19\",\"originalCode\":\"const mongoose = require('mongoose');\\r\\nconst Schema = mongoose.Schema;\\r\\n\\r\\nconst pointSchema = new Schema({\\r\\n type: {\\r\\n type: String,\\r\\n enum: ['Point'],\\r\\n required: true,\\r\\n default: 'Point'\\r\\n },\\r\\n coordinates: {\\r\\n type: [Number],\\r\\n required: true\\r\\n }\\r\\n});\\r\\n\\r\\nconst placeSchema = new Schema({\\r\\n name: {\\r\\n type: String,\\r\\n required: true,\\r\\n unique: true\\r\\n },\\r\\n description: {\\r\\n type: String,\\r\\n required: true\\r\\n },\\r\\n location: {\\r\\n type: pointSchema,\\r\\n index: '2dsphere',\\r\\n required: true\\r\\n },\\r\\n distance: {\\r\\n type: String,\\r\\n required: true\\r\\n },\\r\\n timeToReach: {\\r\\n type: String,\\r\\n required: true\\r\\n },\\r\\n image:\\r\\n {\\r\\n type: String,\\r\\n },\\r\\n travellingMethods: [\\r\\n {\\r\\n type: String,\\r\\n enum: ['Bus', 'Car', 'Train', 'Threewheeler', 'Foot']\\r\\n }\\r\\n ]\\r\\n}, {\\r\\n timestamps: true\\r\\n});\\r\\n\\r\\nplaceSchema.index({ '$**': 'text' });\\r\\nvar Places = mongoose.model('Place', placeSchema);\\r\\n\\r\\nmodule.exports = Places;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/c4/visitingPlaces_c4ccc91c117df8c4aeada72a82534688.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2459\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\models\\\\visitingPlaces.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":4920,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":4917,\"count\":1}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"var passport = require('passport');\\n\\nvar LocalStrategy = require('passport-local').Strategy;\\n\\nvar User = require('../models/users');\\n\\nvar JwtStrategy = require('passport-jwt').Strategy;\\n\\nvar ExtractJwt = require('passport-jwt').ExtractJwt;\\n\\nvar jwt = require('jsonwebtoken');\\n\\npassport.use(new LocalStrategy(User.authenticate()));\\npassport.serializeUser(User.serializeUser());\\npassport.deserializeUser(User.deserializeUser());\\n\\nexports.getToken = user => {\\n return jwt.sign(user, process.env.secretKey, {\\n expiresIn: 3600\\n });\\n};\\n\\nvar opts = {};\\nopts.jwtFromRequest = ExtractJwt.fromAuthHeaderAsBearerToken();\\nopts.secretOrKey = process.env.secretKey;\\nexports.jwtPassport = passport.use(new JwtStrategy(opts, (jwt_payload, done) => {\\n User.findOne({\\n _id: jwt_payload._id\\n }, (err, user) => {\\n if (err) {\\n return done(err, false);\\n } else if (user) {\\n return done(null, user);\\n } else {\\n return done(null, false);\\n }\\n });\\n}));\\nexports.verifyUser = passport.authenticate('jwt', {\\n session: false\\n});\\n\\nexports.verifyAdmin = (req, res, next) => {\\n if (req.user.role == 'admin') {\\n return next();\\n } else if (req.user.role != 'admin') {\\n err = new Error('You are not authorized to perform this operation!');\\n err.status = 403;\\n return next(err);\\n } else {\\n err = new Error('Admin Verification Failed!');\\n err.status = 500;\\n return next(err);\\n }\\n};\\n\\nexports.verifyModerater = (req, res, next) => {\\n if (req.user.role != 'user') {\\n return next();\\n } else if (req.user.role == 'user') {\\n err = new Error('You are not authorized to perform this operation!');\\n err.status = 403;\\n return next(err);\\n }\\n};\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF1dGhlbnRpY2F0ZS5qcyJdLCJuYW1lcyI6WyJwYXNzcG9ydCIsInJlcXVpcmUiLCJMb2NhbFN0cmF0ZWd5IiwiU3RyYXRlZ3kiLCJVc2VyIiwiSnd0U3RyYXRlZ3kiLCJFeHRyYWN0Snd0Iiwiand0IiwidXNlIiwiYXV0aGVudGljYXRlIiwic2VyaWFsaXplVXNlciIsImRlc2VyaWFsaXplVXNlciIsImV4cG9ydHMiLCJnZXRUb2tlbiIsInVzZXIiLCJzaWduIiwicHJvY2VzcyIsImVudiIsInNlY3JldEtleSIsImV4cGlyZXNJbiIsIm9wdHMiLCJqd3RGcm9tUmVxdWVzdCIsImZyb21BdXRoSGVhZGVyQXNCZWFyZXJUb2tlbiIsInNlY3JldE9yS2V5Iiwiand0UGFzc3BvcnQiLCJqd3RfcGF5bG9hZCIsImRvbmUiLCJmaW5kT25lIiwiX2lkIiwiZXJyIiwidmVyaWZ5VXNlciIsInNlc3Npb24iLCJ2ZXJpZnlBZG1pbiIsInJlcSIsInJlcyIsIm5leHQiLCJyb2xlIiwiRXJyb3IiLCJzdGF0dXMiLCJ2ZXJpZnlNb2RlcmF0ZXIiXSwibWFwcGluZ3MiOiJBQUFBLElBQUlBLFFBQVEsR0FBR0MsT0FBTyxDQUFDLFVBQUQsQ0FBdEI7O0FBQ0EsSUFBSUMsYUFBYSxHQUFHRCxPQUFPLENBQUMsZ0JBQUQsQ0FBUCxDQUEwQkUsUUFBOUM7O0FBQ0EsSUFBSUMsSUFBSSxHQUFHSCxPQUFPLENBQUMsaUJBQUQsQ0FBbEI7O0FBRUEsSUFBSUksV0FBVyxHQUFHSixPQUFPLENBQUMsY0FBRCxDQUFQLENBQXdCRSxRQUExQzs7QUFDQSxJQUFJRyxVQUFVLEdBQUdMLE9BQU8sQ0FBQyxjQUFELENBQVAsQ0FBd0JLLFVBQXpDOztBQUNBLElBQUlDLEdBQUcsR0FBR04sT0FBTyxDQUFDLGNBQUQsQ0FBakI7O0FBR0FELFFBQVEsQ0FBQ1EsR0FBVCxDQUFhLElBQUlOLGFBQUosQ0FBa0JFLElBQUksQ0FBQ0ssWUFBTCxFQUFsQixDQUFiO0FBQ0FULFFBQVEsQ0FBQ1UsYUFB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dCI6WyJ2YXIgcGFzc3BvcnQgPSByZXF1aXJlKCdwYXNzcG9ydCcpO1xyXG52YXIgTG9jYWxTdHJhdGVneSA9IHJlcXVpcmUoJ3Bhc3Nwb3J0LWxvY2FsJykuU3RyYXRlZ3k7XHJcbnZhciBVc2VyID0gcmVxdWlyZSgnLi4vbW9kZWxzL3VzZXJzJyk7XHJcblxyXG52YXIgSnd0U3RyYXRlZ3kgPSByZXF1aXJlKCdwYXNzcG9ydC1qd3QnKS5TdHJhdGVneTtcclxudmFyIEV4dHJhY3RKd3QgPSByZXF1aXJlKCdwYXNzcG9ydC1qd3QnKS5FeHRyYWN0Snd0O1xyXG52YXIgand0ID0gcmVxdWlyZSgnanNvbndlYnRva2VuJyk7XHJcblxyXG5cclxucGFzc3BvcnQudXNlKG5ldyBMb2NhbFN0cmF0ZWd5KFVzZXIuYXV0aGVudGljYXRlKCkpKTtcclxucGFzc3BvcnQuc2VyaWFsaXplVXNlcihVc2VyLnNlcmlhbGl6ZVVzZXIoKSk7XHJcbnBhc3Nwb3J0LmRlc2VyaWFsaXplVXNlcihVc2VyLmRlc2VyaWFsaXplVXNlcigpKTtcclxuXHJcbmV4cG9ydHMuZ2V0VG9rZW4gPSAodXNlcikgPT4ge1xyXG4gICAgcmV0dXJuIGp3dC5zaWduKHVzZXIsIHByb2Nlc3MuZW52LnNlY3JldEtleSxcclxuICAgICAgICB7IGV4cGlyZXNJbjogMzYwMCB9KTtcclxufTtcclxuXHJcbnZhciBvcHRzID0ge307XHJcbm9wdHMuand0RnJvbVJlcXVlc3QgPSBFeHRyYWN0Snd0LmZyb21BdXRoSGVhZGVyQXNCZWFyZXJUb2tlbigpO1xyXG5vcHRzLnNlY3JldE9yS2V5ID0gcHJvY2Vzcy5lbnYuc2VjcmV0S2V5O1xyXG5cclxuZXhwb3J0cy5qd3RQYXNzcG9ydCA9IHBhc3Nwb3J0LnVzZShuZXcgSnd0U3RyYXRlZ3kob3B0cyxcclxuICAgIChqd3RfcGF5bG9hZCwgZG9uZSkgPT4ge1xyXG4gICAgICAgIFVzZXIuZmluZE9uZSh7IF9pZDogand0X3BheWxvYWQuX2lkIH0sIChlcnIsIHVzZXIpID0+IHtcclxuICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRvbmUoZXJyLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAodXNlcikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRvbmUobnVsbCwgdXNlcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZG9uZShudWxsLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH0pKTtcclxuXHJcbmV4cG9ydHMudmVyaWZ5VXNlciA9IHBhc3Nwb3J0LmF1dGhlbnRpY2F0ZSgnand0JywgeyBzZXNzaW9uOiBmYWxzZSB9KTtcclxuXHJcbmV4cG9ydHMudmVyaWZ5QWRtaW4gPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIGlmIChyZXEudXNlci5yb2xlID09ICdhZG1pbicpIHtcclxuICAgICAgICByZXR1cm4gbmV4dCgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAocmVxLnVzZXIucm9sZSAhPSAnYWRtaW4nKSB7XHJcbiAgICAgICAgZXJyID0gbmV3IEVycm9yKCdZb3UgYXJlIG5vdCBhdXRob3JpemVkIHRvIHBlcmZvcm0gdGhpcyBvcGVyYXRpb24hJyk7XHJcbiAgICAgICAgZXJyLnN0YXR1cyA9IDQwMztcclxuICAgICAgICByZXR1cm4gbmV4dChlcnIpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgZXJyID0gbmV3IEVycm9yKCdBZG1pbiBWZXJpZmljYXRpb24gRmFpbGVkIScpO1xyXG4gICAgICAgIGVyci5zdGF0dXMgPSA1MDA7XHJcbiAgICAgICAgcmV0dXJuIG5leHQoZXJyKTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0cy52ZXJpZnlNb2RlcmF0ZXIgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIGlmIChyZXEudXNlci5yb2xlICE9ICd1c2VyJykge1xyXG4gICAgICAgIHJldHVybiBuZXh0KCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChyZXEudXNlci5yb2xlID09ICd1c2VyJykge1xyXG4gICAgICAgIGVyciA9IG5ldyBFcnJvcignWW91IGFyZSBub3QgYXV0aG9yaXplZCB0byBwZXJmb3JtIHRoaXMgb3BlcmF0aW9uIScpO1xyXG4gICAgICAgIGVyci5zdGF0dXMgPSA0MDM7XHJcbiAgICAgICAgcmV0dXJuIG5leHQoZXJyKTtcclxuICAgIH1cclxufVxyXG4iXX0=\",\"originalCode\":\"var passport = require('passport');\\r\\nvar LocalStrategy = require('passport-local').Strategy;\\r\\nvar User = require('../models/users');\\r\\n\\r\\nvar JwtStrategy = require('passport-jwt').Strategy;\\r\\nvar ExtractJwt = require('passport-jwt').ExtractJwt;\\r\\nvar jwt = require('jsonwebtoken');\\r\\n\\r\\n\\r\\npassport.use(new LocalStrategy(User.authenticate()));\\r\\npassport.serializeUser(User.serializeUser());\\r\\npassport.deserializeUser(User.deserializeUser());\\r\\n\\r\\nexports.getToken = (user) => {\\r\\n return jwt.sign(user, process.env.secretKey,\\r\\n { expiresIn: 3600 });\\r\\n};\\r\\n\\r\\nvar opts = {};\\r\\nopts.jwtFromRequest = ExtractJwt.fromAuthHeaderAsBearerToken();\\r\\nopts.secretOrKey = process.env.secretKey;\\r\\n\\r\\nexports.jwtPassport = passport.use(new JwtStrategy(opts,\\r\\n (jwt_payload, done) => {\\r\\n User.findOne({ _id: jwt_payload._id }, (err, user) => {\\r\\n if (err) {\\r\\n return done(err, false);\\r\\n }\\r\\n else if (user) {\\r\\n return done(null, user);\\r\\n }\\r\\n else {\\r\\n return done(null, false);\\r\\n }\\r\\n });\\r\\n }));\\r\\n\\r\\nexports.verifyUser = passport.authenticate('jwt', { session: false });\\r\\n\\r\\nexports.verifyAdmin = (req, res, next) => {\\r\\n if (req.user.role == 'admin') {\\r\\n return next();\\r\\n }\\r\\n else if (req.user.role != 'admin') {\\r\\n err = new Error('You are not authorized to perform this operation!');\\r\\n err.status = 403;\\r\\n return next(err);\\r\\n }\\r\\n else {\\r\\n err = new Error('Admin Verification Failed!');\\r\\n err.status = 500;\\r\\n return next(err);\\r\\n }\\r\\n}\\r\\n\\r\\nexports.verifyModerater = (req, res, next) => {\\r\\n if (req.user.role != 'user') {\\r\\n return next();\\r\\n }\\r\\n else if (req.user.role == 'user') {\\r\\n err = new Error('You are not authorized to perform this operation!');\\r\\n err.status = 403;\\r\\n return next(err);\\r\\n }\\r\\n}\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/17/authenticate_1749ed24acd3b9174e3e8d9c003de68d.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2460\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\middleware\\\\authenticate.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":8164,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":8161,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
.exports.getToken\",\"ranges\":[{\"startOffset\":536,\"endOffset\":622,\"count\":2}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":803,\"endOffset\":1050,\"count\":11}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":875,\"endOffset\":1046,\"count\":11}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
.exports.verifyAdmin\",\"ranges\":[{\"startOffset\":1150,\"endOffset\":1495,\"count\":11}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
.exports.verifyModerater\",\"ranges\":[{\"startOffset\":1524,\"endOffset\":1761,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"var validationRules = {\\n id: {\\n in: ['params', 'query'],\\n errorMessage: 'ID is wrong',\\n isInt: true,\\n toInt: true\\n },\\n name: {\\n errorMessage: 'Name should be at least 2 chars long and maximum of 50 chars',\\n isLength: {\\n options: {\\n min: 2,\\n max: 50\\n }\\n },\\n trim: true\\n },\\n description: {\\n errorMessage: 'Description should be at least 2 chars long and maximum of 200 chars',\\n isLength: {\\n options: {\\n min: 2,\\n max: 200\\n }\\n },\\n trim: true\\n },\\n distance: {\\n errorMessage: 'Distance should be at least 1 chars long and maximum of 200 chars',\\n isLength: {\\n options: {\\n min: 1,\\n max: 200\\n }\\n },\\n trim: true\\n },\\n timeToReach: {\\n errorMessage: 'Time To Reach should be at least 2 chars long and maximum of 200 chars',\\n isLength: {\\n options: {\\n min: 2,\\n max: 200\\n }\\n },\\n trim: true\\n },\\n firstname: {\\n errorMessage: 'First Name should be at least 3 chars long and maximum of 50 chars',\\n isLength: {\\n options: {\\n min: 3,\\n max: 50\\n }\\n },\\n trim: true\\n },\\n lastname: {\\n errorMessage: 'Last Name should be at least 3 chars long and maximum of 50 chars',\\n isLength: {\\n options: {\\n min: 3,\\n max: 50\\n }\\n },\\n trim: true\\n },\\n email: {\\n errorMessage: 'Please enter a valid email address',\\n isEmail: true,\\n trim: true\\n },\\n mobile: {\\n errorMessage: 'Please enter Phone Number in 10 digits',\\n isLength: {\\n options: {\\n min: 10,\\n max: 10\\n }\\n },\\n matches: {\\n options: [/^\\\\d{10}$/],\\n errorMessage: \\\"Please enter digits\\\"\\n },\\n trim: true\\n },\\n password: {\\n isLength: {\\n errorMessage: 'Password should be at least 6 chars long',\\n options: {\\n min: 6\\n }\\n }\\n },\\n confirm_password: {\\n errorMessage: 'Must have the same value as the password field',\\n custom: {\\n options: (value, {\\n req\\n }) => value === req.body.password\\n }\\n },\\n suite: {\\n errorMessage: 'Please select suite type',\\n isIn: {\\n options: [['gold', 'luxury', 'platinum']]\\n }\\n },\\n roomnumber: {\\n errorMessage: 'Room Number should be at least 3 chars long and maximum of 50 chars',\\n isLength: {\\n options: {\\n min: 3,\\n max: 50\\n }\\n },\\n trim: true\\n },\\n state: {\\n errorMessage: 'Please select correct state',\\n isIn: {\\n options: [[\\\"new\\\", \\\"not-completed\\\", \\\"canceled\\\", \\\"completed\\\"]]\\n }\\n },\\n method: {\\n errorMessage: 'Please select correct travelling method',\\n isIn: {\\n options: [['Bus', 'Car', 'Train', 'Threewheeler', 'Foot']]\\n }\\n }\\n};\\nexports.validationRules = validationRules;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInZhbGlkYXRpb24uanMiXSwibmFtZXMiOlsidmFsaWRhdGlvblJ1bGVzIiwiaWQiLCJpbiIsImVycm9yTWVzc2FnZSIsImlzSW50IiwidG9JbnQiLCJuYW1lIiwiaXNMZW5ndGgiLCJvcHRpb25zIiwibWluIiwibWF4IiwidHJpbSIsImRlc2NyaXB0aW9uIiwiZGlzdGFuY2UiLCJ0aW1lVG9SZWFjaCIsImZpcnN0bmFtZSIsImxhc3RuYW1lIiwiZW1haWwiLCJpc0VtYWlsIiwibW9iaWxlIiwibWF0Y2hlcyIsInBhc3N3b3JkIiwiY29uZmlybV9wYXNzd29yZCIsImN1c3RvbSIsInZhbHVlIiwicmVxIiwiYm9keSIsInN1aXRlIiwiaXNJbiIsInJvb21udW1iZXIiLCJzdGF0ZSIsIm1ldGhvZCIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLElBQUlBLGVBQWUsR0FBRztBQUNsQkMsRUFBQUEsRUFBRSxFQUFFO0FBQ0FDLElBQUFBLEVBQUUsRUFBRSxDQUFDLFFBQUQsRUFBVyxPQUFYLENBREo7QUFFQUMsSUFBQUEsWUFBWSxFQUFFLGFBRmQ7QUFHQUMsSUFBQUEsS0FBSyxFQUFFLElBSFA7QUFJQUMsSUFBQUEsS0FBSyxFQUFFO0FBSlAsR0FEYztBQU9sQkMsRUFBQUEsSUFBSSxFQUFFO0FBQ0ZILElBQUFBLFlBQVksRUFBRSw4REFEWjtBQUVGSSxJQUFBQSxRQUFRLEVBQUU7QUFDTkMsTUFBQUEsT0FBTyxFQUFFO0FBQUVDLFFBQUFBLEdBQUcsRUFBRSxDQUFQO0FBQVVDLFFBQUFBLEdBQUcsRUFBRTtBQUFmO0FBREgsS0FGUjtBQUtGQyxJQUFBQSxJQUFJLEVBQUU7QUFMSixHQVBZO0FBY2xCQyxFQUFBQSxXQUFXLEVBQUU7QUFDVFQsSUFBQUEsWUFBWSxFQUFFLHNFQURMO0FBRVRJLElBQUFBLFFBQVEsRUFBRTtBQUNOQyxNQUFBQSxPQUFPLEVBQUU7QUFBRUMsUUFBQUEsR0FBRyxFQUFFLENBQVA7QUFBVUMsUUFBQUEsR0FBRyxFQUFFO0FBQWY7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RTtBQUFFQyxRQUFBQSxHQUFHLEVBQUUsQ0FBUDtBQUFVQyxRQUFBQSxHQUFHLEVBQUU7QUFBZjtBQURILEtBRkY7QUFLUkMsSUFBQUEsSUFBSSxFQUFFO0FBTEUsR0FuRk07QUEwRmxCbUIsRUFBQUEsS0FBSyxFQUFFO0FBQ0gzQixJQUFBQSxZQUFZLEVBQUUsNkJBRFg7QUFFSHlCLElBQUFBLElBQUksRUFBRTtBQUNGcEIsTUFBQUEsT0FBTyxFQUFFLENBQUMsQ0FBQyxLQUFELEVBQVEsZUFBUixFQUF5QixVQUF6QixFQUFxQyxXQUFyQyxDQUFEO0FBRFA7QUFGSCxHQTFGVztBQWdHbEJ1QixFQUFBQSxNQUFNLEVBQUU7QUFDSjVCLElBQUFBLFlBQVksRUFBRSx5Q0FEVjtBQUVKeUIsSUFBQUEsSUFBSSxFQUFFO0FBQ0ZwQixNQUFBQSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEtBQUQsRUFBUSxLQUFSLEVBQWUsT0FBZixFQUF3QixjQUF4QixFQUF3QyxNQUF4QyxDQUFEO0FBRFA7QUFGRjtBQWhHVSxDQUF0QjtBQXdHQXdCLE9BQU8sQ0FBQ2hDLGVBQVIsR0FBMEJBLGVBQTFCIiwic291cmNlc0NvbnRlbnQiOlsidmFyIHZhbGlkYXRpb25SdWxlcyA9IHtcclxuICAgIGlkOiB7XHJcbiAgICAgICAgaW46IFsncGFyYW1zJywgJ3F1ZXJ5J10sXHJcbiAgICAgICAgZXJyb3JNZXNzYWdlOiAnSUQgaXMgd3JvbmcnLFxyXG4gICAgICAgIGlzSW50OiB0cnVlLFxyXG4gICAgICAgIHRvSW50OiB0cnVlLFxyXG4gICAgfSxcclxuICAgIG5hbWU6IHtcclxuICAgICAgICBlcnJvck1lc3NhZ2U6ICdOYW1lIHNob3VsZCBiZSBhdCBsZWFzdCAyIGNoYXJzIGxvbmcgYW5kIG1heGltdW0gb2YgNTAgY2hhcnMnLFxyXG4gICAgICAgIGlzTGVuZ3RoOiB7XHJcbiAgICAgICAgICAgIG9wdGlvbnM6IHsgbWluOiAyLCBtYXg6IDUwIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHRyaW06IHRydWVcclxuICAgIH0sXHJcbiAgICBkZXNjcmlwdGlvbjoge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ0Rlc2NyaXB0aW9uIHNob3VsZCBiZSBhdCBsZWFzdCAyIGNoYXJzIGxvbmcgYW5kIG1heGltdW0gb2YgMjAwIGNoYXJzJyxcclxuICAgICAgICBpc0xlbmd0aDoge1xyXG4gICAgICAgICAgICBvcHRpb25zOiB7IG1pbjogMiwgbWF4OiAyMDAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHJpbTogdHJ1ZVxyXG4gICAgfSxcclxuICAgIGRpc3RhbmNlOiB7XHJcbiAgICAgICAgZXJyb3JNZXNzYWdlOiAnRGlzdGFuY2Ugc2hvdWxkIGJlIGF0IGxlYXN0IDEgY2hhcnMgbG9uZyBhbmQgbWF4aW11bSBvZiAyMDAgY2hhcnMnLFxyXG4gICAgICAgIGlzTGVuZ3RoOiB7XHJcbiAgICAgICAgICAgIG9wdGlvbnM6IHsgbWluOiAxLCBtYXg6IDIwMCB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICB0cmltOiB0cnVlXHJcbiAgICB9LFxyXG4gICAgdGltZVRvUmVhY2g6IHtcclxuICAgICAgICBlcnJvck1lc3NhZ2U6ICdUaW1lIFRvIFJlYWNoIHNob3VsZCBiZSBhdCBsZWFzdCAyIGNoYXJzIGxvbmcgYW5kIG1heGltdW0gb2YgMjAwIGNoYXJzJyxcclxuICAgICAgICBpc0xlbmd0aDoge1xyXG4gICAgICAgICAgICBvcHRpb25zOiB7IG1pbjogMiwgbWF4OiAyMDAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHJpbTogdHJ1ZVxyXG4gICAgfSxcclxuICAgIGZpcnN0bmFtZToge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ0ZpcnN0IE5hbWUgc2hvdWxkIGJlIGF0IGxlYXN0IDMgY2hhcnMgbG9uZyBhbmQgbWF4aW11bSBvZiA1MCBjaGFycycsXHJcbiAgICAgICAgaXNMZW5ndGg6IHtcclxuICAgICAgICAgICAgb3B0aW9uczogeyBtaW46IDMsIG1heDogNTAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHJpbTogdHJ1ZVxyXG4gICAgfSxcclxuICAgIGxhc3RuYW1lOiB7XHJcbiAgICAgICAgZXJyb3JNZXNzYWdlOiAnTGFzdCBOYW1lIHNob3VsZCBiZSBhdCBsZWFzdCAzIGNoYXJzIGxvbmcgYW5kIG1heGltdW0gb2YgNTAgY2hhcnMnLFxyXG4gICAgICAgIGlzTGVuZ3RoOiB7XHJcbiAgICAgICAgICAgIG9wdGlvbnM6IHsgbWluOiAzLCBtYXg6IDUwIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHRyaW06IHRydWVcclxuICAgIH0sXHJcbiAgICBlbWFpbDoge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ1BsZWFzZSBlbnRlciBhIHZhbGlkIGVtYWlsIGFkZHJlc3MnLFxyXG4gICAgICAgIGlzRW1haWw6IHRydWUsXHJcbiAgICAgICAgdHJpbTogdHJ1ZSxcclxuICAgIH0sXHJcbiAgICBtb2JpbGU6IHtcclxuICAgICAgICBlcnJvck1lc3NhZ2U6ICdQbGVhc2UgZW50ZXIgUGhvbmUgTnVtYmVyIGluIDEwIGRpZ2l0cycsXHJcbiAgICAgICAgaXNMZW5ndGg6IHtcclxuICAgICAgICAgICAgb3B0aW9uczogeyBtaW46IDEwLCBtYXg6IDEwIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIG1hdGNoZXM6IHtcclxuICAgICAgICAgICAgb3B0aW9uczogWy9eXFxkezEwfSQvXSxcclxuICAgICAgICAgICAgZXJyb3JNZXNzYWdlOiBcIlBsZWFzZSBlbnRlciBkaWdpdHNcIlxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHJpbTogdHJ1ZVxyXG4gICAgfSxcclxuICAgIHBhc3N3b3JkOiB7XHJcbiAgICAgICAgaXNMZW5ndGg6IHtcclxuICAgICAgICAgICAgZXJyb3JNZXNzYWdlOiAnUGFzc3dvcmQgc2hvdWxkIGJlIGF0IGxlYXN0IDYgY2hhcnMgbG9uZycsXHJcbiAgICAgICAgICAgIG9wdGlvbnM6IHsgbWluOiA2IH1cclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgY29uZmlybV9wYXNzd29yZDoge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ011c3QgaGF2ZSB0aGUgc2FtZSB2YWx1ZSBhcyB0aGUgcGFzc3dvcmQgZmllbGQnLFxyXG4gICAgICAgIGN1c3RvbToge1xyXG4gICAgICAgICAgICBvcHRpb25zOiAodmFsdWUsIHsgcmVxIH0pID0+IHZhbHVlID09PSByZXEuYm9keS5wYXNzd29yZFxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICBzdWl0ZToge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ1BsZWFzZSBzZWxlY3Qgc3VpdGUgdHlwZScsXHJcbiAgICAgICAgaXNJbjoge1xyXG4gICAgICAgICAgICBvcHRpb25zOiBbWydnb2xkJywgJ2x1eHVyeScsICdwbGF0aW51bSddXSxcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgcm9vbW51bWJlcjoge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ1Jvb20gTnVtYmVyIHNob3VsZCBiZSBhdCBsZWFzdCAzIGNoYXJzIGxvbmcgYW5kIG1heGltdW0gb2YgNTAgY2hhcnMnLFxyXG4gICAgICAgIGlzTGVuZ3RoOiB7XHJcbiAgICAgICAgICAgIG9wdGlvbnM6IHsgbWluOiAzLCBtYXg6IDUwIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHRyaW06IHRydWVcclxuICAgIH0sXHJcbiAgICBzdGF0ZToge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ1BsZWFzZSBzZWxlY3QgY29ycmVjdCBzdGF0ZScsXHJcbiAgICAgICAgaXNJbjoge1xyXG4gICAgICAgICAgICBvcHRpb25zOiBbW1wibmV3XCIsIFwibm90LWNvbXBsZXRlZFwiLCBcImNhbmNlbGVkXCIsIFwiY29tcGxldGVkXCJdXSxcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgbWV0aG9kOiB7XHJcbiAgICAgICAgZXJyb3JNZXNzYWdlOiAnUGxlYXNlIHNlbGVjdCBjb3JyZWN0IHRyYXZlbGxpbmcgbWV0aG9kJyxcclxuICAgICAgICBpc0luOiB7XHJcbiAgICAgICAgICAgIG9wdGlvbnM6IFtbJ0J1cycsICdDYXInLCAnVHJhaW4nLCAnVGhyZWV3aGVlbGVyJywgJ0Zvb3QnXV0sXHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxufVxyXG5cclxuZXhwb3J0cy52YWxpZGF0aW9uUnVsZXMgPSB2YWxpZGF0aW9uUnVsZXM7Il19\",\"originalCode\":\"var validationRules = {\\r\\n id: {\\r\\n in: ['params', 'query'],\\r\\n errorMessage: 'ID is wrong',\\r\\n isInt: true,\\r\\n toInt: true,\\r\\n },\\r\\n name: {\\r\\n errorMessage: 'Name should be at least 2 chars long and maximum of 50 chars',\\r\\n isLength: {\\r\\n options: { min: 2, max: 50 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n description: {\\r\\n errorMessage: 'Description should be at least 2 chars long and maximum of 200 chars',\\r\\n isLength: {\\r\\n options: { min: 2, max: 200 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n distance: {\\r\\n errorMessage: 'Distance should be at least 1 chars long and maximum of 200 chars',\\r\\n isLength: {\\r\\n options: { min: 1, max: 200 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n timeToReach: {\\r\\n errorMessage: 'Time To Reach should be at least 2 chars long and maximum of 200 chars',\\r\\n isLength: {\\r\\n options: { min: 2, max: 200 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n firstname: {\\r\\n errorMessage: 'First Name should be at least 3 chars long and maximum of 50 chars',\\r\\n isLength: {\\r\\n options: { min: 3, max: 50 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n lastname: {\\r\\n errorMessage: 'Last Name should be at least 3 chars long and maximum of 50 chars',\\r\\n isLength: {\\r\\n options: { min: 3, max: 50 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n email: {\\r\\n errorMessage: 'Please enter a valid email address',\\r\\n isEmail: true,\\r\\n trim: true,\\r\\n },\\r\\n mobile: {\\r\\n errorMessage: 'Please enter Phone Number in 10 digits',\\r\\n isLength: {\\r\\n options: { min: 10, max: 10 }\\r\\n },\\r\\n matches: {\\r\\n options: [/^\\\\d{10}$/],\\r\\n errorMessage: \\\"Please enter digits\\\"\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n password: {\\r\\n isLength: {\\r\\n errorMessage: 'Password should be at least 6 chars long',\\r\\n options: { min: 6 }\\r\\n }\\r\\n },\\r\\n confirm_password: {\\r\\n errorMessage: 'Must have the same value as the password field',\\r\\n custom: {\\r\\n options: (value, { req }) => value === req.body.password\\r\\n }\\r\\n },\\r\\n suite: {\\r\\n errorMessage: 'Please select suite type',\\r\\n isIn: {\\r\\n options: [['gold', 'luxury', 'platinum']],\\r\\n }\\r\\n },\\r\\n roomnumber: {\\r\\n errorMessage: 'Room Number should be at least 3 chars long and maximum of 50 chars',\\r\\n isLength: {\\r\\n options: { min: 3, max: 50 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n state: {\\r\\n errorMessage: 'Please select correct state',\\r\\n isIn: {\\r\\n options: [[\\\"new\\\", \\\"not-completed\\\", \\\"canceled\\\", \\\"completed\\\"]],\\r\\n }\\r\\n },\\r\\n method: {\\r\\n errorMessage: 'Please select correct travelling method',\\r\\n isIn: {\\r\\n options: [['Bus', 'Car', 'Train', 'Threewheeler', 'Foot']],\\r\\n }\\r\\n },\\r\\n}\\r\\n\\r\\nexports.validationRules = validationRules;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/4b/validation_4b7a8ff68e044daa8c6daa8312a761dc.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2493\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\middleware\\\\validation.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":11520,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":11517,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"options\",\"ranges\":[{\"startOffset\":2073,\"endOffset\":2134,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"var express = require('express');\\n\\nvar router = express.Router();\\n\\nvar Users = require('../models/users');\\n\\nvar passport = require('passport');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nconst signupAdmin = (req, res, next) => {\\n var admin = {\\n username: req.body.email,\\n firstname: req.body.firstname,\\n lastname: req.body.lastname,\\n email: req.body.email,\\n role: 'admin'\\n };\\n Users.register(new Users(admin), req.body.password, (err, user) => {\\n if (err) {\\n res.statusCode = 403;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n status: 'Registration Unsuccessful!'\\n });\\n } else {\\n if (req.body.firstname) user.firstname = req.body.firstname;\\n if (req.body.lastname) user.lastname = req.body.lastname;\\n user.save((err, user) => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n status: 'Registration Successful!'\\n });\\n });\\n }\\n });\\n};\\n\\nconst login = (req, res, next) => {\\n passport.authenticate('local', (err, user, info) => {\\n if (!user) {\\n res.statusCode = 401;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n status: 'Login Unsuccessful!',\\n err: info\\n });\\n return next(err);\\n }\\n\\n req.logIn(user, err => {\\n var token = authenticate.getToken({\\n _id: req.user._id,\\n role: user.role\\n });\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n status: 'Login Successful!',\\n token: token\\n });\\n });\\n })(req, res, next);\\n};\\n\\nconst changePassoword = (req, res, next) => {\\n var userId = req.params.id;\\n var newPasswordString = req.body.password;\\n Users.findById(userId).then(function (sanitizedUser) {\\n if (sanitizedUser) {\\n sanitizedUser.setPassword(newPasswordString, function () {\\n sanitizedUser.save();\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n message: 'password reset successful'\\n });\\n });\\n } else {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'This user does not exist'\\n });\\n }\\n }, function (err) {\\n next(err);\\n });\\n};\\n\\nconst logout = (req, res) => {\\n if (req.session) {\\n req.session.destroy();\\n res.clearCookie('session-id');\\n } else {\\n var err = new Error('You are not logged in!');\\n err.status = 403;\\n }\\n};\\n\\nexports.signupAdmin = signupAdmin;\\nexports.login = login;\\nexports.logout = logout;\\nexports.changePassoword = changePassoword;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVzZXJDb250cm9sbGVyLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwicm91dGVyIiwiUm91dGVyIiwiVXNlcnMiLCJwYXNzcG9ydCIsImF1dGhlbnRpY2F0ZSIsInNpZ251cEFkbWluIiwicmVxIiwicmVzIiwibmV4dCIsImFkbWluIiwidXNlcm5hbWUiLCJib2R5IiwiZW1haWwiLCJmaXJzdG5hbWUiLCJsYXN0bmFtZSIsInJvbGUiLCJyZWdpc3RlciIsInBhc3N3b3JkIiwiZXJyIiwidXNlciIsInN0YXR1c0NvZGUiLCJzZXRIZWFkZXIiLCJqc29uIiwic3VjY2VzcyIsInN0YXR1cyIsInNhdmUiLCJsb2dpbiIsImluZm8iLCJsb2dJbiIsInRva2VuIiwiZ2V0VG9rZW4iLCJfaWQiLCJjaGFuZ2VQYXNzb3dvcmQiLCJ1c2VySWQiLCJwYXJhbXMiLCJpZCIsIm5ld1Bhc3N3b3JkU3RyaW5nIiwiZmluZEJ5SWQiLCJ0aGVuIiwic2FuaXRpemVkVXNlciIsInNldFBhc3N3b3JkIiwibWVzc2FnZSIsImxvZ291dCIsInNlc3Npb24iLCJkZXN0cm95IiwiY2xlYXJDb29raWUiLCJFcnJvciIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLElBQUlBLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBckI7O0FBQ0EsSUFBSUMsTUFBTSxHQUFHRixPQUFPLENBQUNHLE1BQVIsRUFBYjs7QUFFQSxJQUFJQyxLQUFLLEdBQUdILE9BQU8sQ0FBQyxpQkFBRCxDQUFuQjs7QUFDQSxJQUFJSSxRQUFRLEdBQUdKLE9BQU8sQ0FBQyxVQUFELENBQXRCOztBQUNBLElBQUlLLFlBQVksR0FBR0wsT0FBTyxDQUFDLDRCQUFELENBQTFCOztBQUdBLE1BQU1NLFdBQVcsR0FBRyxDQUFDQyxHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUNwQyxNQUFJQyxLQUFLLEdBQUc7QUFDUkMsSUFBQUEsUUFBUSxFQUFFSixHQUFHLENBQUNLLElBQUosQ0FBU0MsS0FEWDtBQUVSQyxJQUFBQSxTQUFTLEVBQUVQLEdBQUcsQ0FBQ0ssSUFBSixDQUFTRSxTQUZaO0FBR1JDLElBQUFBLFFBQVEsRUFBRVIsR0FBRyxDQUFDSyxJQUFKLENBQVNHLFFBSFg7QUFJUkYsSUFBQUEsS0FBSyxFQUFFTixHQUFHLENBQUNLLElBQUosQ0FBU0MsS0FKUjtBQUtSRyxJQUFBQSxJQUFJLEVBQUU7QUFMRSxHQUFaO0FBT0FiLEVBQUFBLEtBQUssQ0FBQ2MsUUFBTixDQUFlLElBQUlkLEtBQUosQ0FBVU8sS0FBVixDQUFmLEVBQ0lILEdBQUcsQ0FBQ0ssSUFBSixDQUFTTSxRQURiLEVBQ3VCLENBQUNDLEdBQUQsRUFBTUMsSUFBTixLQUFlO0FBQzlCLFFBQUlELEdBQUosRUFBUztBQUNMWCxNQUFBQSxHQUFHLENBQUNhLFVBQUosR0FBaUIsR0FBakI7QUFDQWIsTUFBQUEsR0FBRyxDQUFDYyxTQUFKLENBQWMsY0FBZCxFQUE4QixrQkFBOUI7QUFDQWQsTUFBQUEsR0FBRyxDQUFDZSxJQUFKLENBQVM7QUFBRUMsUUFBQUEsT0FBTyxFQUFFLEtBQVg7QUFBa0JDLFFBQUFBLE1BQU0sRUFBRTtBQUExQixPQUFUO0FBQ0gsS0FKRCxNQUtLO0FBQ0QsVUFBSWxCLEdBQUcsQ0FBQ0ssSUFBSixDQUFTRSxTQUFiLEVBQ0lNLElBQUksQ0FBQ04sU0FBTCxHQUFpQlAsR0FBRyxDQUFDSyxJQUFKLENBQVNFLFNBQTFCO0FBQ0osVUFBSVAsR0FBRyxDQUFDSyxJQUFKLENBQVNHLFFBQWIsRUFDSUssSUFBSSxDQUFDTCxRQUFMLEdBQWdCUixHQUFHLENBQUNLLElBQUosQ0FBU0csUUFBekI7QUFDSkssTUFBQUEsSUFBSSxDQUFDTSxJQUFMLENBQVUsQ0FBQ1AsR0FBRCxFQUFNQyxJQUFOLEtBQWU7QUFDckJaLFFBQUFBLEdBQUcsQ0FBQ2EsVUFBSixHQUFpQixHQUFqQjtBQUNBYixRQUFBQSxHQUFHLENBQUNjLFNBQUosQ0FBYyxjQUFkLEVBQThCLGtCQUE5QjtBQUNBZCxRQUFBQSxHQUFHLENBQUNlLElBQUosQ0FBUztBQUFFQyxVQUFBQSxPQUFPLEVBQUUsSUFBWDtBQUFpQkMsVUFBQUEsTUFBTSxFQUFFO0FBQXpCLFNBQVQ7QUFDSCxPQUpEO0FBS0g7QUFDSixHQWxCTDtBQW1CSCxDQTNCRDs7QUE2QkEsTUFBTUUsS0FBSyxHQUFHLENBQUNwQixHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUM5QkwsRUFBQUEsUUFBUSxDQUFDQyxZQUFULENBQXNCLE9BQXRCLEVBQStCLENBQUNjLEdBQUQsRUFBTUMsSUFBTixFQUFZUSxJQUFaLEtBQXFCO0FBRWhELFFBQUksQ0FBQ1IsSUFBTCxFQUFXO0FBQ1BaLE1BQUFBLEdBQUcsQ0FBQ2EsVUFBSixHQUFpQixHQUFqQjtBQUNBYixNQUFBQSxHQUFHLENBQUNjLFNBQUosQ0FBYyxjQUFkLEVBQThCLGtCQUE5QjtBQUNBZCxNQUFBQSxHQUFHLENBQUNlLElBQUosQ0FBUztBQUFFQyxRQUFBQSxPQUFPLEVBQUUsS0FBWDtBQUFrQkMsUUFBQUEsTUFBTSxFQUFFLHFCQUExQjtBQUFpRE4sUUFBQUEsR0FBRyxFQUFFUztBQUF0RCxPQUFUO0FBQ0EsYUFBT25CLElBQUksQ0FBQ1UsR0FBRCxDQUFYO0FBQ0g7O0FBQ0RaLElBQUFBLEdBQUcsQ0FBQ3NCLEtBQUosQ0FBVVQsSUFBVixFQUFpQkQsR0FBRCxJQUFTO0FBQ3JCLFVBQUlXLEtBQUssR0FBR3pCLFlBQVksQ0FBQzBCLFFBQWIsQ0FBc0I7QUFBRUMsUUFBQUEsR0FBRyxFQUFFekIsR0FBRyxDQUFDYSxJQUFKLENBQVNZLEdBQWhCO0FBQXFCaEIsUUFBQUEsSUFBSSxFQUFFSSxJQUFJLENBQUNKO0FBQWhDLE9BQXRCLENBQVo7QUFDQVIsTUFBQUEsR0FBRyxDQUFDYSxVQUFKLEdBQWlCLEdBQWpCO0FBQ0FiLE1BQUFBLEdBQUcsQ0FBQ2MsU0FBSixDQUFjLGNBQWQsRUFBOEIsa0JBQTlCO0FBQ0FkLE1BQUFBLEdBQUcsQ0FBQ2UsSUFBSixDQUFTO0FBQUVDLFFBQUFBLE9BQU8sRUFBRSxJQUFYO0FBQWlCQyxRQUFBQSxNQUFNLEVBQUUsbUJBQXpCO0FBQThDSyxRQUFBQSxLQUFLLEVBQUVBO0FBQXJELE9BQVQ7QUFDSCxLQUxEO0FBTUgsR0FkRCxFQWNHdkIsR0FkSCxFQWNRQyxHQWRSLEVBY2FDLElBZGI7QUFlSCxDQWhCRDs7QUFrQkEsTUFBTXdCLGVBQWUsR0FBRyxDQUFDMUIsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDeEMsTUFBSXlCLE1BQU0sR0FBRzNCLEdBQUcsQ0FBQzRCLE1BQUosQ0FBV0MsRUFBeEI7QUFDQSxNQUFJQyxpQkFBaUIsR0FBRzlCLEdBQUcsQ0FBQ0ssSUFBSixDQUFTTSxRQUFqQztBQUNBZixFQUFBQSxLQUFLLENBQUNtQyxRQUFOLENBQWVKLE1BQWYsRUFBdUJLLElBQXZCLENBQTRCLFVBQVVDLGFBQVYsRUFBeUI7QUFDakQsUUFBSUEsYUFBSixFQUFtQjtBQUNmQSxNQUFBQSxhQUFhLENBQUNDLFdBQWQsQ0FBMEJKLGlCQUExQixFQUE2QyxZQUFZO0FBQ3JERyxRQUFBQSxhQUFhLENBQUNkLElBQWQ7QUFDQWxCLFFBQUFBLEdBQUcsQ0FBQ2EsVUFBSixHQUFpQixHQUFqQjtBQUNBYixRQUFBQSxHQUFHLENBQUNjLFNBQUosQ0FBYyxjQUFkLEVBQThCLGtCQUE5QjtBQUNBZCxRQUFBQSxHQUFHLENBQUNlLElBQUosQ0FBUztBQUFFQyxVQUFBQSxPQUFPLEVBQUUsSUFBWDtBQUFpQmtCLFVBQUFBLE9BQU8sRUFBRTtBQUExQixTQUFUO0FBQ0gsT0FMRDtBQU1ILEtBUEQsTUFPTztBQUNIbEMsTUFBQUEsR0FBRyxDQUFDYSxVQUFKLEdBQWlCLEdBQWpCO0FBQ0FiLE1BQUFBLEdBQUcsQ0FBQ2MsU0FBSixDQUFjLGNBQWQsRUFBOEIsa0JBQTlCO0FBQ0FkLE1BQUFBLEdBQUcsQ0FBQ2UsSUFBSixDQUFTO0FBQUVDLFFBQUFBLE9BQU8sRUFBRSxLQUFYO0FBQWtCa0IsUUFBQUEsT0FBTyxFQUFFO0FBQTNCLE9BQVQ7QUFDSDtBQUNKLEdBYkQsRUFhRyxVQUFVdkIsR0FBVixFQUFlO0FBQ2RWLElBQUFBLElBQUksQ0FBQ1UsR0FBRCxDQUFKO0FBQ0gsR0FmRDtBQWdCSCxDQW5CRDs7QUFxQkEsTUFBTXdCLE1BQU0sR0FBRyxDQUFDcEMsR0FBRCxFQUFNQyxHQUFOLEtBQWM7QUFDekIsTUFBSUQsR0FBRyxDQUFDcUMsT0FBUixFQUFpQjtBQUNickMsSUFBQUEsR0FBRyxDQUFDcUMsT0FBSixDQUFZQyxPQUFaO0FBQ0FyQyxJQUFBQSxHQUFHLENBQUNzQyxXQUFKLENBQWdCLFlBQWhCO0FBQ0gsR0FIRCxNQUlLO0FBQ0QsUUFBSTNCLEdBQUcsR0FBRyxJQUFJNEIsS0FBSixDQUFVLHdCQUFWLENBQVY7QUFDQTVCLElBQUFBLEdBQUcsQ0FBQ00sTUFBSixHQUFhLEdBQWI7QUFDSDtBQUNKLENBVEQ7O0FBV0F1QixPQUFPLENBQUMxQyxXQUFSLEdBQXNCQSxXQUF0QjtBQUNBMEMsT0FBTyxDQUFDckIsS0FBUixHQUFnQkEsS0FBaEI7QUFDQXFCLE9BQU8sQ0FBQ0wsTUFBUixHQUFpQkEsTUFBakI7QUFDQUssT0FBTyxDQUFDZixlQUFSLEdBQTBCQSxlQUExQiIsInNvdXJjZXNDb250ZW50IjpbInZhciBleHByZXNzID0gcmVxdWlyZSgnZXhwcmVzcycpO1xyXG52YXIgcm91dGVyID0gZXhwcmVzcy5Sb3V0ZXIoKTtcclxuXHJcbnZhciBVc2VycyA9IHJlcXVpcmUoJy4uL21vZGVscy91c2VycycpO1xyXG52YXIgcGFzc3BvcnQgPSByZXF1aXJlKCdwYXNzcG9ydCcpO1xyXG52YXIgYXV0aGVudGljYXRlID0gcmVxdWlyZSgnLi4vbWlkZGxld2FyZS9hdXRoZW50aWNhdGUnKTtcclxuXHJcblxyXG5jb25zdCBzaWdudXBBZG1pbiA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgdmFyIGFkbWluID0ge1xyXG4gICAgICAgIHVzZXJuYW1lOiByZXEuYm9keS5lbWFpbCxcclxuICAgICAgICBmaXJzdG5hbWU6IHJlcS5ib2R5LmZpcnN0bmFtZSxcclxuICAgICAgICBsYXN0bmFtZTogcmVxLmJvZHkubGFzdG5hbWUsXHJcbiAgICAgICAgZW1haWw6IHJlcS5ib2R5LmVtYWlsLFxyXG4gICAgICAgIHJvbGU6ICdhZG1pbidcclxuICAgIH1cclxuICAgIFVzZXJzLnJlZ2lzdGVyKG5ldyBVc2VycyhhZG1pbiksXHJcbiAgICAgICAgcmVxLmJvZHkucGFzc3dvcmQsIChlcnIsIHVzZXIpID0+IHtcclxuICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgc3RhdHVzOiAnUmVnaXN0cmF0aW9uIFVuc3VjY2Vzc2Z1bCEnIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlcS5ib2R5LmZpcnN0bmFtZSlcclxuICAgICAgICAgICAgICAgICAgICB1c2VyLmZpcnN0bmFtZSA9IHJlcS5ib2R5LmZpcnN0bmFtZTtcclxuICAgICAgICAgICAgICAgIGlmIChyZXEuYm9keS5sYXN0bmFtZSlcclxuICAgICAgICAgICAgICAgICAgICB1c2VyLmxhc3RuYW1lID0gcmVxLmJvZHkubGFzdG5hbWU7XHJcbiAgICAgICAgICAgICAgICB1c2VyLnNhdmUoKGVyciwgdXNlcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCBzdGF0dXM6ICdSZWdpc3RyYXRpb24gU3VjY2Vzc2Z1bCEnIH0pO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxufVxyXG5cclxuY29uc3QgbG9naW4gPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHBhc3Nwb3J0LmF1dGhlbnRpY2F0ZSgnbG9jYWwnLCAoZXJyLCB1c2VyLCBpbmZvKSA9PiB7XHJcblxyXG4gICAgICAgIGlmICghdXNlcikge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwMTtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgc3RhdHVzOiAnTG9naW4gVW5zdWNjZXNzZnVsIScsIGVycjogaW5mbyB9KTtcclxuICAgICAgICAgICAgcmV0dXJuIG5leHQoZXJyKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmVxLmxvZ0luKHVzZXIsIChlcnIpID0+IHtcclxuICAgICAgICAgICAgdmFyIHRva2VuID0gYXV0aGVudGljYXRlLmdldFRva2VuKHsgX2lkOiByZXEudXNlci5faWQsIHJvbGU6IHVzZXIucm9sZSB9KTtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgc3RhdHVzOiAnTG9naW4gU3VjY2Vzc2Z1bCEnLCB0b2tlbjogdG9rZW4sIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSkocmVxLCByZXMsIG5leHQpO1xyXG59XHJcblxyXG5jb25zdCBjaGFuZ2VQYXNzb3dvcmQgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHZhciB1c2VySWQgPSByZXEucGFyYW1zLmlkO1xyXG4gICAgdmFyIG5ld1Bhc3N3b3JkU3RyaW5nID0gcmVxLmJvZHkucGFzc3dvcmQ7XHJcbiAgICBVc2Vycy5maW5kQnlJZCh1c2VySWQpLnRoZW4oZnVuY3Rpb24gKHNhbml0aXplZFVzZXIpIHtcclxuICAgICAgICBpZiAoc2FuaXRpemVkVXNlcikge1xyXG4gICAgICAgICAgICBzYW5pdGl6ZWRVc2VyLnNldFBhc3N3b3JkKG5ld1Bhc3N3b3JkU3RyaW5nLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICBzYW5pdGl6ZWRVc2VyLnNhdmUoKTtcclxuICAgICAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgbWVzc2FnZTogJ3Bhc3N3b3JkIHJlc2V0IHN1Y2Nlc3NmdWwnIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwNDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogJ1RoaXMgdXNlciBkb2VzIG5vdCBleGlzdCcgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSwgZnVuY3Rpb24gKGVycikge1xyXG4gICAgICAgIG5leHQoZXJyKTtcclxuICAgIH0pO1xyXG59XHJcblxyXG5jb25zdCBsb2dvdXQgPSAocmVxLCByZXMpID0+IHtcclxuICAgIGlmIChyZXEuc2Vzc2lvbikge1xyXG4gICAgICAgIHJlcS5zZXNzaW9uLmRlc3Ryb3koKTtcclxuICAgICAgICByZXMuY2xlYXJDb29raWUoJ3Nlc3Npb24taWQnKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoJ1lvdSBhcmUgbm90IGxvZ2dlZCBpbiEnKTtcclxuICAgICAgICBlcnIuc3RhdHVzID0gNDAzO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnRzLnNpZ251cEFkbWluID0gc2lnbnVwQWRtaW47XHJcbmV4cG9ydHMubG9naW4gPSBsb2dpbjtcclxuZXhwb3J0cy5sb2dvdXQgPSBsb2dvdXQ7XHJcbmV4cG9ydHMuY2hhbmdlUGFzc293b3JkID0gY2hhbmdlUGFzc293b3JkOyJdfQ==\",\"originalCode\":\"var express = require('express');\\r\\nvar router = express.Router();\\r\\n\\r\\nvar Users = require('../models/users');\\r\\nvar passport = require('passport');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\n\\r\\n\\r\\nconst signupAdmin = (req, res, next) => {\\r\\n var admin = {\\r\\n username: req.body.email,\\r\\n firstname: req.body.firstname,\\r\\n lastname: req.body.lastname,\\r\\n email: req.body.email,\\r\\n role: 'admin'\\r\\n }\\r\\n Users.register(new Users(admin),\\r\\n req.body.password, (err, user) => {\\r\\n if (err) {\\r\\n res.statusCode = 403;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, status: 'Registration Unsuccessful!' });\\r\\n }\\r\\n else {\\r\\n if (req.body.firstname)\\r\\n user.firstname = req.body.firstname;\\r\\n if (req.body.lastname)\\r\\n user.lastname = req.body.lastname;\\r\\n user.save((err, user) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, status: 'Registration Successful!' });\\r\\n });\\r\\n }\\r\\n });\\r\\n}\\r\\n\\r\\nconst login = (req, res, next) => {\\r\\n passport.authenticate('local', (err, user, info) => {\\r\\n\\r\\n if (!user) {\\r\\n res.statusCode = 401;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, status: 'Login Unsuccessful!', err: info });\\r\\n return next(err);\\r\\n }\\r\\n req.logIn(user, (err) => {\\r\\n var token = authenticate.getToken({ _id: req.user._id, role: user.role });\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, status: 'Login Successful!', token: token, });\\r\\n });\\r\\n })(req, res, next);\\r\\n}\\r\\n\\r\\nconst changePassoword = (req, res, next) => {\\r\\n var userId = req.params.id;\\r\\n var newPasswordString = req.body.password;\\r\\n Users.findById(userId).then(function (sanitizedUser) {\\r\\n if (sanitizedUser) {\\r\\n sanitizedUser.setPassword(newPasswordString, function () {\\r\\n sanitizedUser.save();\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, message: 'password reset successful' });\\r\\n });\\r\\n } else {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'This user does not exist' });\\r\\n }\\r\\n }, function (err) {\\r\\n next(err);\\r\\n });\\r\\n}\\r\\n\\r\\nconst logout = (req, res) => {\\r\\n if (req.session) {\\r\\n req.session.destroy();\\r\\n res.clearCookie('session-id');\\r\\n }\\r\\n else {\\r\\n var err = new Error('You are not logged in!');\\r\\n err.status = 403;\\r\\n }\\r\\n}\\r\\n\\r\\nexports.signupAdmin = signupAdmin;\\r\\nexports.login = login;\\r\\nexports.logout = logout;\\r\\nexports.changePassoword = changePassoword;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/df/userController_dfcc3c245d97ff3aba4c4e3eb1674b0e.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2494\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\userController.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":12954,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":12951,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"signupAdmin\",\"ranges\":[{\"startOffset\":313,\"endOffset\":1156,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":553,\"endOffset\":1152,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":926,\"endOffset\":1140,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"login\",\"ranges\":[{\"startOffset\":1173,\"endOffset\":1848,\"count\":2}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1228,\"endOffset\":1828,\"count\":2}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1512,\"endOffset\":1822,\"count\":2}],\"isBlockCoverage\":false},{\"functionName\":\"changePassoword\",\"ranges\":[{\"startOffset\":1875,\"endOffset\":2594,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"logout\",\"ranges\":[{\"startOffset\":2612,\"endOffset\":2800,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const express = require('express');\\n\\nconst cors = require('cors');\\n\\nconst app = express();\\n\\nconst util = require('util');\\n\\nconst whitelist = ['http://localhost:3000', 'http://localhost:3001', 'https://localhost:5000'];\\n\\nvar corsOptionsDelegate = (req, callback) => {\\n var corsOptions;\\n\\n if (whitelist.indexOf(req.header('Origin')) !== -1) {\\n corsOptions = {\\n origin: true\\n };\\n } else {\\n corsOptions = {\\n origin: false\\n };\\n }\\n\\n callback(null, corsOptions);\\n}; // if we want to allow all origins\\n\\n\\nexports.cors = cors(); // if we want to allow only the whitelisted origins\\n\\nexports.corsWithOptions = cors(corsOptionsDelegate);\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvcnMuanMiXSwibmFtZXMiOlsiZXhwcmVzcyIsInJlcXVpcmUiLCJjb3JzIiwiYXBwIiwidXRpbCIsIndoaXRlbGlzdCIsImNvcnNPcHRpb25zRGVsZWdhdGUiLCJyZXEiLCJjYWxsYmFjayIsImNvcnNPcHRpb25zIiwiaW5kZXhPZiIsImhlYWRlciIsIm9yaWdpbiIsImV4cG9ydHMiLCJjb3JzV2l0aE9wdGlvbnMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBdkI7O0FBQ0EsTUFBTUMsSUFBSSxHQUFHRCxPQUFPLENBQUMsTUFBRCxDQUFwQjs7QUFDQSxNQUFNRSxHQUFHLEdBQUdILE9BQU8sRUFBbkI7O0FBQ0EsTUFBTUksSUFBSSxHQUFHSCxPQUFPLENBQUMsTUFBRCxDQUFwQjs7QUFFQSxNQUFNSSxTQUFTLEdBQUcsQ0FBQyx1QkFBRCxFQUEwQix1QkFBMUIsRUFBbUQsd0JBQW5ELENBQWxCOztBQUNBLElBQUlDLG1CQUFtQixHQUFHLENBQUNDLEdBQUQsRUFBTUMsUUFBTixLQUFtQjtBQUN6QyxNQUFJQyxXQUFKOztBQUNBLE1BQUdKLFNBQVMsQ0FBQ0ssT0FBVixDQUFrQkgsR0FBRyxDQUFDSSxNQUFKLENBQVcsUUFBWCxDQUFsQixNQUE0QyxDQUFDLENBQWhELEVBQW1EO0FBQy9DRixJQUFBQSxXQUFXLEdBQUc7QUFBRUcsTUFBQUEsTUFBTSxFQUFFO0FBQVYsS0FBZDtBQUNILEdBRkQsTUFHSztBQUNESCxJQUFBQSxXQUFXLEdBQUc7QUFBRUcsTUFBQUEsTUFBTSxFQUFFO0FBQVYsS0FBZDtBQUNIOztBQUNESixFQUFBQSxRQUFRLENBQUMsSUFBRCxFQUFPQyxXQUFQLENBQVI7QUFDSCxDQVRELEMsQ0FXQTs7O0FBQ0FJLE9BQU8sQ0FBQ1gsSUFBUixHQUFlQSxJQUFJLEVBQW5CLEMsQ0FFQTs7QUFDQVcsT0FBTyxDQUFDQyxlQUFSLEdBQTBCWixJQUFJLENBQUNJLG1CQUFELENBQTlCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZXhwcmVzcyA9IHJlcXVpcmUoJ2V4cHJlc3MnKTtcclxuY29uc3QgY29ycyA9IHJlcXVpcmUoJ2NvcnMnKTtcclxuY29uc3QgYXBwID0gZXhwcmVzcygpO1xyXG5jb25zdCB1dGlsID0gcmVxdWlyZSgndXRpbCcpO1xyXG5cclxuY29uc3Qgd2hpdGVsaXN0ID0gWydodHRwOi8vbG9jYWxob3N0OjMwMDAnLCAnaHR0cDovL2xvY2FsaG9zdDozMDAxJywgJ2h0dHBzOi8vbG9jYWxob3N0OjUwMDAnXTtcclxudmFyIGNvcnNPcHRpb25zRGVsZWdhdGUgPSAocmVxLCBjYWxsYmFjaykgPT4ge1xyXG4gICAgdmFyIGNvcnNPcHRpb25zO1xyXG4gICAgaWYod2hpdGVsaXN0LmluZGV4T2YocmVxLmhlYWRlcignT3JpZ2luJykpICE9PSAtMSkge1xyXG4gICAgICAgIGNvcnNPcHRpb25zID0geyBvcmlnaW46IHRydWUgfTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGNvcnNPcHRpb25zID0geyBvcmlnaW46IGZhbHNlIH07XHJcbiAgICB9XHJcbiAgICBjYWxsYmFjayhudWxsLCBjb3JzT3B0aW9ucyk7XHJcbn07XHJcblxyXG4vLyBpZiB3ZSB3YW50IHRvIGFsbG93IGFsbCBvcmlnaW5zXHJcbmV4cG9ydHMuY29ycyA9IGNvcnMoKTtcclxuXHJcbi8vIGlmIHdlIHdhbnQgdG8gYWxsb3cgb25seSB0aGUgd2hpdGVsaXN0ZWQgb3JpZ2luc1xyXG5leHBvcnRzLmNvcnNXaXRoT3B0aW9ucyA9IGNvcnMoY29yc09wdGlvbnNEZWxlZ2F0ZSk7Il19\",\"originalCode\":\"const express = require('express');\\r\\nconst cors = require('cors');\\r\\nconst app = express();\\r\\nconst util = require('util');\\r\\n\\r\\nconst whitelist = ['http://localhost:3000', 'http://localhost:3001', 'https://localhost:5000'];\\r\\nvar corsOptionsDelegate = (req, callback) => {\\r\\n var corsOptions;\\r\\n if(whitelist.indexOf(req.header('Origin')) !== -1) {\\r\\n corsOptions = { origin: true };\\r\\n }\\r\\n else {\\r\\n corsOptions = { origin: false };\\r\\n }\\r\\n callback(null, corsOptions);\\r\\n};\\r\\n\\r\\n// if we want to allow all origins\\r\\nexports.cors = cors();\\r\\n\\r\\n// if we want to allow only the whitelisted origins\\r\\nexports.corsWithOptions = cors(corsOptionsDelegate);\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/34/cors_34beef0e65d7cfb3f2bb7a05fb9de802.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2495\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\cors.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":2982,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":2979,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"corsOptionsDelegate\",\"ranges\":[{\"startOffset\":335,\"endOffset\":573,\"count\":16}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const express = require('express');\\n\\nconst bodyParser = require('body-parser');\\n\\nconst {\\n checkSchema\\n} = require('express-validator');\\n\\nconst cors = require('./cors');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nvar validationRules = require('../middleware/validation');\\n\\nconst employeeController = require('../controllers/employeeController');\\n\\nconst employeeRouter = express.Router();\\nemployeeRouter.use(bodyParser.json()); // **********************************************************************************\\n// \\n// Employee Routes\\n// \\n// **********************************************************************************\\n\\nemployeeRouter.route('/').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.getAllEmployees).post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.addEmployee).put(cors.corsWithOptions, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('PUT operation not supported on /employees');\\n}).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.deleteAllEmployees);\\nemployeeRouter.route('/search').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.getAllEmployeesByName); // **********************************************************************************\\n// \\n// Employee Routes Specified by ID\\n// \\n// **********************************************************************************\\n\\nemployeeRouter.route('/:employeeId').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.getEmployeeDetailsById).post(cors.corsWithOptions, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('POST operation not supported on /employees/' + req.params.employeeId);\\n}).put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.updateEmployeeDetailsById).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.deleteAEmployeeById);\\nmodule.exports = employeeRouter;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImVtcGxveWVlUm91dGVyLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwiYm9keVBhcnNlciIsImNoZWNrU2NoZW1hIiwiY29ycyIsImF1dGhlbnRpY2F0ZSIsInZhbGlkYXRpb25SdWxlcyIsImVtcGxveWVlQ29udHJvbGxlciIsImVtcGxveWVlUm91dGVyIiwiUm91dGVyIiwidXNlIiwianNvbiIsInJvdXRlIiwib3B0aW9ucyIsImNvcnNXaXRoT3B0aW9ucyIsInJlcSIsInJlcyIsInNlbmRTdGF0dXMiLCJnZXQiLCJ2ZXJpZnlVc2VyIiwidmVyaWZ5QWRtaW4iLCJnZXRBbGxFbXBsb3llZXMiLCJwb3N0IiwiYWRkRW1wbG95ZWUiLCJwdXQiLCJuZXh0Iiwic3RhdHVzQ29kZSIsImVuZCIsImRlbGV0ZSIsImRlbGV0ZUFsbEVtcGxveWVlcyIsImdldEFsbEVtcGxveWVlc0J5TmFtZSIsImdldEVtcGxveWVlRGV0YWlsc0J5SWQiLCJwYXJhbXMiLCJlbXBsb3llZUlkIiwidXBkYXRlRW1wbG95ZWVEZXRhaWxzQnlJZCIsImRlbGV0ZUFFbXBsb3llZUJ5SWQiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxPQUFPLEdBQUdDLE9BQU8sQ0FBQyxTQUFELENBQXZCOztBQUNBLE1BQU1DLFVBQVUsR0FBR0QsT0FBTyxDQUFDLGFBQUQsQ0FBMUI7O0FBQ0EsTUFBTTtBQUFFRSxFQUFBQTtBQUFGLElBQWtCRixPQUFPLENBQUMsbUJBQUQsQ0FBL0I7O0FBQ0EsTUFBTUcsSUFBSSxHQUFHSCxPQUFPLENBQUMsUUFBRCxDQUFwQjs7QUFDQSxJQUFJSSxZQUFZLEdBQUdKLE9BQU8sQ0FBQyw0QkFBRCxDQUExQjs7QUFDQSxJQUFJSyxlQUFlLEdBQUdMLE9BQU8sQ0FBQywwQkFBRCxDQUE3Qjs7QUFDQSxNQUFNTSxrQkFBa0IsR0FBR04sT0FBTyxDQUFDLG1DQUFELENBQWxDOztBQUVBLE1BQU1PLGNBQWMsR0FBR1IsT0FB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cHJlc3MnKTtcclxuY29uc3QgYm9keVBhcnNlciA9IHJlcXVpcmUoJ2JvZHktcGFyc2VyJyk7XHJcbmNvbnN0IHsgY2hlY2tTY2hlbWEgfSA9IHJlcXVpcmUoJ2V4cHJlc3MtdmFsaWRhdG9yJyk7XHJcbmNvbnN0IGNvcnMgPSByZXF1aXJlKCcuL2NvcnMnKTtcclxudmFyIGF1dGhlbnRpY2F0ZSA9IHJlcXVpcmUoJy4uL21pZGRsZXdhcmUvYXV0aGVudGljYXRlJyk7XHJcbnZhciB2YWxpZGF0aW9uUnVsZXMgPSByZXF1aXJlKCcuLi9taWRkbGV3YXJlL3ZhbGlkYXRpb24nKTtcclxuY29uc3QgZW1wbG95ZWVDb250cm9sbGVyID0gcmVxdWlyZSgnLi4vY29udHJvbGxlcnMvZW1wbG95ZWVDb250cm9sbGVyJyk7XHJcblxyXG5jb25zdCBlbXBsb3llZVJvdXRlciA9IGV4cHJlc3MuUm91dGVyKCk7XHJcblxyXG5lbXBsb3llZVJvdXRlci51c2UoYm9keVBhcnNlci5qc29uKCkpO1xyXG5cclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyBcclxuLy8gICAgICAgICAgICAgIEVtcGxveWVlIFJvdXRlc1xyXG4vLyBcclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuZW1wbG95ZWVSb3V0ZXIucm91dGUoJy8nKVxyXG4gICAgLm9wdGlvbnMoY29ycy5jb3JzV2l0aE9wdGlvbnMsIChyZXEsIHJlcykgPT4geyByZXMuc2VuZFN0YXR1cygyMDApOyB9KVxyXG4gICAgLmdldChjb3JzLmNvcnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCBhdXRoZW50aWNhdGUudmVyaWZ5QWRtaW4sICBlbXBsb3llZUNvbnRyb2xsZXIuZ2V0QWxsRW1wbG95ZWVzKVxyXG4gICAgLnBvc3QoY29ycy5jb3JzV2l0aE9wdGlvbnMsYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgZW1wbG95ZWVDb250cm9sbGVyLmFkZEVtcGxveWVlKVxyXG4gICAgLnB1dChjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgcmVzLmVuZCgnUFVUIG9wZXJhdGlvbiBub3Qgc3VwcG9ydGVkIG9uIC9lbXBsb3llZXMnKTtcclxuICAgIH0pXHJcbiAgICAuZGVsZXRlKGNvcnMuY29yc1dpdGhPcHRpb25zLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeUFkbWluLCAgZW1wbG95ZWVDb250cm9sbGVyLmRlbGV0ZUFsbEVtcGxveWVlcyk7XHJcbmVtcGxveWVlUm91dGVyLnJvdXRlKCcvc2VhcmNoJylcclxuICAgIC5vcHRpb25zKGNvcnMuY29yc1dpdGhPcHRpb25zLCAocmVxLCByZXMpID0+IHsgcmVzLnNlbmRTdGF0dXMoMjAwKTsgfSlcclxuICAgIC5wb3N0KGNvcnMuY29yc1dpdGhPcHRpb25zLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeUFkbWluLCBlbXBsb3llZUNvbnRyb2xsZXIuZ2V0QWxsRW1wbG95ZWVzQnlOYW1lKTtcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuLy8gXHJcbi8vICAgICAgICAgICAgICBFbXBsb3llZSBSb3V0ZXMgU3BlY2lmaWVkIGJ5IElEXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG5lbXBsb3llZVJvdXRlci5yb3V0ZSgnLzplbXBsb3llZUlkJylcclxuICAgIC5vcHRpb25zKGNvcnMuY29yc1dpdGhPcHRpb25zLCAocmVxLCByZXMpID0+IHsgcmVzLnNlbmRTdGF0dXMoMjAwKTsgfSlcclxuICAgIC5nZXQoY29ycy5jb3JzLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeUFkbWluLCAgZW1wbG95ZWVDb250cm9sbGVyLmdldEVtcGxveWVlRGV0YWlsc0J5SWQpXHJcbiAgICAucG9zdChjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgcmVzLmVuZCgnUE9TVCBvcGVyYXRpb24gbm90IHN1cHBvcnRlZCBvbiAvZW1wbG95ZWVzLycgKyByZXEucGFyYW1zLmVtcGxveWVlSWQpO1xyXG4gICAgfSlcclxuICAgIC5wdXQoY29ycy5jb3JzV2l0aE9wdGlvbnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCBhdXRoZW50aWNhdGUudmVyaWZ5QWRtaW4sICBlbXBsb3llZUNvbnRyb2xsZXIudXBkYXRlRW1wbG95ZWVEZXRhaWxzQnlJZClcclxuICAgIC5kZWxldGUoY29ycy5jb3JzV2l0aE9wdGlvbnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCBhdXRoZW50aWNhdGUudmVyaWZ5QWRtaW4sICBlbXBsb3llZUNvbnRyb2xsZXIuZGVsZXRlQUVtcGxveWVlQnlJZCk7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IGVtcGxveWVlUm91dGVyOyJdfQ==\",\"originalCode\":\"const express = require('express');\\r\\nconst bodyParser = require('body-parser');\\r\\nconst { checkSchema } = require('express-validator');\\r\\nconst cors = require('./cors');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\nvar validationRules = require('../middleware/validation');\\r\\nconst employeeController = require('../controllers/employeeController');\\r\\n\\r\\nconst employeeRouter = express.Router();\\r\\n\\r\\nemployeeRouter.use(bodyParser.json());\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Employee Routes\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nemployeeRouter.route('/')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.getAllEmployees)\\r\\n .post(cors.corsWithOptions,authenticate.verifyUser, authenticate.verifyAdmin, employeeController.addEmployee)\\r\\n .put(cors.corsWithOptions, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('PUT operation not supported on /employees');\\r\\n })\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.deleteAllEmployees);\\r\\nemployeeRouter.route('/search')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.getAllEmployeesByName);\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Employee Routes Specified by ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nemployeeRouter.route('/:employeeId')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.getEmployeeDetailsById)\\r\\n .post(cors.corsWithOptions, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('POST operation not supported on /employees/' + req.params.employeeId);\\r\\n })\\r\\n .put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.updateEmployeeDetailsById)\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.deleteAEmployeeById);\\r\\n\\r\\nmodule.exports = employeeRouter;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/3b/employeeRouter_3bb83cd3174a28ed34e0f44c133b9b42.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2496\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\employeeRouter.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":9455,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":9452,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":802,\"endOffset\":842,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1082,\"endOffset\":1185,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1369,\"endOffset\":1409,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1828,\"endOffset\":1868,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":2006,\"endOffset\":2135,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const Employees = require('../models/users');\\n\\nconst utils = require('../utils/utils'); // **********************************************************************************\\n// \\n// Employee Operations \\n// \\n// **********************************************************************************\\n\\n/**\\r\\n * @description get details of the assistants\\r\\n * @param {*} req \\r\\n * @param {*} res \\r\\n * @param {*} next \\r\\n * @returns {array} list of employees\\r\\n */\\n\\n\\nconst getAllEmployees = (req, res, next) => {\\n var query = {\\n \\\"role\\\": \\\"moderater\\\"\\n };\\n Employees.find(query).then(employees => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n employees: employees\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst getAllEmployeesByName = (req, res, next) => {\\n var query = {\\n \\\"role\\\": \\\"moderater\\\"\\n }; // if (req.body.similarTo) {\\n // var searchBy = req.body.similarTo || {}\\n // query = { \\\"role\\\": \\\"moderater\\\", $text: { $search: searchBy } }\\n // }\\n\\n if (req.body.similarTo) {\\n var searchBy = req.body.similarTo || {};\\n query = {\\n \\\"role\\\": \\\"moderater\\\",\\n firstname: {\\n $regex: `${searchBy}`,\\n $options: \\\"i\\\"\\n }\\n };\\n }\\n\\n var sortby = req.body.sortBy || {};\\n Employees.find(query).sort(sortby).then(employees => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n employees: employees\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst addEmployee = async (req, res, next) => {\\n const randomPassword = utils.password_generator(10);\\n var employee = {\\n username: req.body.email,\\n firstname: req.body.firstname,\\n lastname: req.body.lastname,\\n email: req.body.email,\\n role: 'moderater'\\n };\\n\\n try {\\n Employees.register(new Employees(employee), randomPassword, (err, employee) => {\\n if (err) {\\n res.statusCode = 403;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: err.message\\n });\\n } else {\\n employee.save((err, employee) => {\\n if (err) {\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Error while Saving new user.'\\n });\\n }\\n\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n email: employee.email,\\n password: randomPassword\\n });\\n });\\n }\\n });\\n } catch (error) {\\n var err = new Error(\\\"Error while registering new user.\\\");\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: err.message\\n });\\n }\\n};\\n\\nconst deleteAllEmployees = (req, res, next) => {\\n Employees.remove({\\n \\\"role\\\": \\\"moderater\\\"\\n }).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json(resp);\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nexports.getAllEmployees = getAllEmployees;\\nexports.getAllEmployeesByName = getAllEmployeesByName;\\nexports.addEmployee = addEmployee;\\nexports.deleteAllEmployees = deleteAllEmployees; // **********************************************************************************\\n// \\n// Employee Operations Specified by ID\\n// \\n// **********************************************************************************\\n\\nconst getEmployeeDetailsById = (req, res, next) => {\\n Employees.findById(req.params.employeeId).then(employee => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n employee: employee\\n });\\n }, err => {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Could not find employee with given ID'\\n });\\n }).catch(err => next(err));\\n};\\n\\nconst updateEmployeeDetailsById = (req, res, next) => {\\n var employee = {\\n username: req.body.email,\\n firstname: req.body.firstname,\\n lastname: req.body.lastname,\\n email: req.body.email,\\n role: 'moderater'\\n };\\n Employees.findByIdAndUpdate(req.params.employeeId, {\\n $set: employee\\n }, {\\n new: true\\n }).then(employee => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n employee: employee\\n });\\n }, err => next(err)).catch(err => {\\n var err = new Error(\\\"Error while updating.\\\");\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: err.message\\n });\\n });\\n};\\n\\nconst deleteAEmployeeById = (req, res, next) => {\\n Employees.findByIdAndRemove(req.params.employeeId).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json(resp);\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nexports.getEmployeeDetailsById = getEmployeeDetailsById;\\nexports.updateEmployeeDetailsById = updateEmployeeDetailsById;\\nexports.deleteAEmployeeById = deleteAEmployeeById;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImVtcGxveWVlQ29udHJvbGxlci5qcyJdLCJuYW1lcyI6WyJFbXBsb3llZXMiLCJyZXF1aXJlIiwidXRpbHMiLCJnZXRBbGxFbXBsb3llZXMiLCJyZXEiLCJyZXMiLCJuZXh0IiwicXVlcnkiLCJmaW5kIiwidGhlbiIsImVtcGxveWVlcyIsInN0YXR1c0NvZGUiLCJzZXRIZWFkZXIiLCJqc29uIiwic3VjY2VzcyIsImVyciIsImNhdGNoIiwiZ2V0QWxsRW1wbG95ZWVzQnlOYW1lIiwiYm9keSIsInNpbWlsYXJUbyIsInNlYXJjaEJ5IiwiZmlyc3RuYW1lIiwiJHJlZ2V4IiwiJG9wdGlvbnMiLCJzb3J0YnkiLCJzb3J0QnkiLCJzb3J0IiwiYWRkRW1wbG95ZWUiLCJyYW5kb21QYXNzd29yZCIsInBhc3N3b3JkX2dlbmVyYXRvciIsImVtcGxveWVlIiwidXNlcm5hbWUiLCJlbWFpbCIsImxhc3RuYW1lIiwicm9sZSIsInJlZ2lzdGVyIiwibWVzc2FnZSIsInNhdmUiLCJwYXNzd29yZCIsImVycm9yIiwiRXJyb3IiLCJkZWxldGVBbGxFbXBsb3llZXMiLCJyZW1vdmUiLCJyZXNwIiwiZXhwb3J0cyIsImdldEVtcGxveWVlRGV0YWlsc0J5SWQiLCJmaW5kQnlJZCIsInBhcmFtcyIsImVtcGxveWVlSWQiLCJ1cGRhdGVFbXBsb3llZURldGFpbHNCeUlkIiwiZmluZEJ5SWRBbmRVcGRhdGUiLCIkc2V0IiwibmV3IiwiZGVsZXRlQUVtcGxveWVlQnlJZCIsImZpbmRCeUlkQW5kUmVtb3ZlIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxTQUFTLEdBQUdDLE9BQU8sQ0FBQyxpQkFBRCxDQUF6Qjs7QUFDQSxNQUFNQyxLQUFLLEdBQUdELE9BQU8sQ0FBQyxnQkFBRCxDQUFyQixDLENBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0EsTUFBTUUsZUFBZSxHQUFHLENBQUNDLEdBQUQsRUFBTUMsR0FBTixF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SSxDQUFDUyxHQUFELENBTHBCLEVBTUtDLEtBTkwsQ0FNWUQsR0FBRCxJQUFTVCxJQUFJLENBQUNTLEdBQUQsQ0FOeEI7QUFPSCxDQVJEOztBQVVBNkIsT0FBTyxDQUFDQyxzQkFBUixHQUFpQ0Esc0JBQWpDO0FBQ0FELE9BQU8sQ0FBQ0sseUJBQVIsR0FBb0NBLHlCQUFwQztBQUNBTCxPQUFPLENBQUNTLG1CQUFSLEdBQThCQSxtQkFBOUIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBFbXBsb3llZXMgPSByZXF1aXJlKCcuLi9tb2RlbHMvdXNlcnMnKTtcclxuY29uc3QgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscy91dGlscycpO1xyXG5cclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyBcclxuLy8gICAgICAgICAgICAgIEVtcGxveWVlIE9wZXJhdGlvbnMgXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG4vKipcclxuICogQGRlc2NyaXB0aW9uIGdldCBkZXRhaWxzIG9mIHRoZSBhc3Npc3RhbnRzXHJcbiAqIEBwYXJhbSB7Kn0gcmVxIFxyXG4gKiBAcGFyYW0geyp9IHJlcyBcclxuICogQHBhcmFtIHsqfSBuZXh0IFxyXG4gKiBAcmV0dXJucyB7YXJyYXl9IGxpc3Qgb2YgZW1wbG95ZWVzXHJcbiAqL1xyXG5jb25zdCBnZXRBbGxFbXBsb3llZXMgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHZhciBxdWVyeSA9IHsgXCJyb2xlXCI6IFwibW9kZXJhdGVyXCIgfTtcclxuICAgIEVtcGxveWVlcy5maW5kKHF1ZXJ5KVxyXG4gICAgICAgIC50aGVuKChlbXBsb3llZXMpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgZW1wbG95ZWVzOiBlbXBsb3llZXMgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpO1xyXG59XHJcblxyXG5jb25zdCBnZXRBbGxFbXBsb3llZXNCeU5hbWUgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHZhciBxdWVyeSA9IHsgXCJyb2xlXCI6IFwibW9kZXJhdGVyXCIgfTtcclxuICAgIC8vIGlmIChyZXEuYm9keS5zaW1pbGFyVG8pIHtcclxuICAgIC8vICAgICB2YXIgc2VhcmNoQnkgPSByZXEuYm9keS5zaW1pbGFyVG8gfHwge31cclxuICAgIC8vICAgICBxdWVyeSA9IHsgXCJyb2xlXCI6IFwibW9kZXJhdGVyXCIsICR0ZXh0OiB7ICRzZWFyY2g6IHNlYXJjaEJ5IH0gfVxyXG4gICAgLy8gfVxyXG4gICAgaWYgKHJlcS5ib2R5LnNpbWlsYXJUbykge1xyXG4gICAgICAgIHZhciBzZWFyY2hCeSA9IHJlcS5ib2R5LnNpbWlsYXJUbyB8fCB7fVxyXG4gICAgICAgIHF1ZXJ5ID0geyBcInJvbGVcIjogXCJtb2RlcmF0ZXJcIiwgZmlyc3RuYW1lOiB7ICRyZWdleDogYCR7c2VhcmNoQnl9YCwgJG9wdGlvbnM6IFwiaVwiIH0gfVxyXG4gICAgfVxyXG4gICAgdmFyIHNvcnRieSA9IHJlcS5ib2R5LnNvcnRCeSB8fCB7fTtcclxuICAgIEVtcGxveWVlcy5maW5kKHF1ZXJ5KS5zb3J0KHNvcnRieSlcclxuICAgICAgICAudGhlbigoZW1wbG95ZWVzKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIGVtcGxveWVlczogZW1wbG95ZWVzIH0pO1xyXG4gICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuY29uc3QgYWRkRW1wbG95ZWUgPSBhc3luYyAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIGNvbnN0IHJhbmRvbVBhc3N3b3JkID0gdXRpbHMucGFzc3dvcmRfZ2VuZXJhdG9yKDEwKTtcclxuICAgIHZhciBlbXBsb3llZSA9IHtcclxuICAgICAgICB1c2VybmFtZTogcmVxLmJvZHkuZW1haWwsXHJcbiAgICAgICAgZmlyc3RuYW1lOiByZXEuYm9keS5maXJzdG5hbWUsXHJcbiAgICAgICAgbGFzdG5hbWU6IHJlcS5ib2R5Lmxhc3RuYW1lLFxyXG4gICAgICAgIGVtYWlsOiByZXEuYm9keS5lbWFpbCxcclxuICAgICAgICByb2xlOiAnbW9kZXJhdGVyJ1xyXG4gICAgfVxyXG4gICAgdHJ5IHtcclxuICAgICAgICBFbXBsb3llZXMucmVnaXN0ZXIobmV3IEVtcGxveWVlcyhlbXBsb3llZSksXHJcbiAgICAgICAgICAgIHJhbmRvbVBhc3N3b3JkLCAoZXJyLCBlbXBsb3llZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNDAzO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogZXJyLm1lc3NhZ2UgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBlbXBsb3llZS5zYXZlKChlcnIsIGVtcGxveWVlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNTAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IGZhbHNlLCBtZXNzYWdlOiAnRXJyb3Igd2hpbGUgU2F2aW5nIG5ldyB1c2VyLicgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgZW1haWw6IGVtcGxveWVlLmVtYWlsLCBwYXNzd29yZDogcmFuZG9tUGFzc3dvcmQgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICB2YXIgZXJyID0gbmV3IEVycm9yKFwiRXJyb3Igd2hpbGUgcmVnaXN0ZXJpbmcgbmV3IHVzZXIuXCIpO1xyXG4gICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNTAwO1xyXG4gICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogZXJyLm1lc3NhZ2UgfSk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmNvbnN0IGRlbGV0ZUFsbEVtcGxveWVlcyA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgRW1wbG95ZWVzLnJlbW92ZSh7IFwicm9sZVwiOiBcIm1vZGVyYXRlclwiIH0pXHJcbiAgICAgICAgLnRoZW4oKHJlc3ApID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHJlc3ApO1xyXG4gICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuZXhwb3J0cy5nZXRBbGxFbXBsb3llZXMgPSBnZXRBbGxFbXBsb3llZXM7XHJcbmV4cG9ydHMuZ2V0QWxsRW1wbG95ZWVzQnlOYW1lID0gZ2V0QWxsRW1wbG95ZWVzQnlOYW1lO1xyXG5leHBvcnRzLmFkZEVtcGxveWVlID0gYWRkRW1wbG95ZWU7XHJcbmV4cG9ydHMuZGVsZXRlQWxsRW1wbG95ZWVzID0gZGVsZXRlQWxsRW1wbG95ZWVzO1xyXG5cclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyBcclxuLy8gICAgICAgICAgICAgIEVtcGxveWVlIE9wZXJhdGlvbnMgU3BlY2lmaWVkIGJ5IElEXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG5jb25zdCBnZXRFbXBsb3llZURldGFpbHNCeUlkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICBFbXBsb3llZXMuZmluZEJ5SWQocmVxLnBhcmFtcy5lbXBsb3llZUlkKVxyXG4gICAgICAgIC50aGVuKChlbXBsb3llZSkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCBlbXBsb3llZTogZW1wbG95ZWUgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwNDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogJ0NvdWxkIG5vdCBmaW5kIGVtcGxveWVlIHdpdGggZ2l2ZW4gSUQnIH0pO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IG5leHQoZXJyKSk7XHJcbn1cclxuXHJcbmNvbnN0IHVwZGF0ZUVtcGxveWVlRGV0YWlsc0J5SWQgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHZhciBlbXBsb3llZSA9IHtcclxuICAgICAgICB1c2VybmFtZTogcmVxLmJvZHkuZW1haWwsXHJcbiAgICAgICAgZmlyc3RuYW1lOiByZXEuYm9keS5maXJzdG5hbWUsXHJcbiAgICAgICAgbGFzdG5hbWU6IHJlcS5ib2R5Lmxhc3RuYW1lLFxyXG4gICAgICAgIGVtYWlsOiByZXEuYm9keS5lbWFpbCxcclxuICAgICAgICByb2xlOiAnbW9kZXJhdGVyJ1xyXG4gICAgfVxyXG4gICAgRW1wbG95ZWVzLmZpbmRCeUlkQW5kVXBkYXRlKHJlcS5wYXJhbXMuZW1wbG95ZWVJZCwge1xyXG4gICAgICAgICRzZXQ6IGVtcGxveWVlXHJcbiAgICB9LCB7IG5ldzogdHJ1ZSB9KVxyXG4gICAgICAgIC50aGVuKChlbXBsb3llZSkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCBlbXBsb3llZTogZW1wbG95ZWUgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoXCJFcnJvciB3aGlsZSB1cGRhdGluZy5cIik7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNTAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IGZhbHNlLCBtZXNzYWdlOiBlcnIubWVzc2FnZSB9KTtcclxuICAgICAgICB9KTtcclxufVxyXG5cclxuY29uc3QgZGVsZXRlQUVtcGxveWVlQnlJZCA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgRW1wbG95ZWVzLmZpbmRCeUlkQW5kUmVtb3ZlKHJlcS5wYXJhbXMuZW1wbG95ZWVJZClcclxuICAgICAgICAudGhlbigocmVzcCkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24ocmVzcCk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpO1xyXG59XHJcblxyXG5leHBvcnRzLmdldEVtcGxveWVlRGV0YWlsc0J5SWQgPSBnZXRFbXBsb3llZURldGFpbHNCeUlkO1xyXG5leHBvcnRzLnVwZGF0ZUVtcGxveWVlRGV0YWlsc0J5SWQgPSB1cGRhdGVFbXBsb3llZURldGFpbHNCeUlkO1xyXG5leHBvcnRzLmRlbGV0ZUFFbXBsb3llZUJ5SWQgPSBkZWxldGVBRW1wbG95ZWVCeUlkOyJdfQ==\",\"originalCode\":\"const Employees = require('../models/users');\\r\\nconst utils = require('../utils/utils');\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Employee Operations \\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\n/**\\r\\n * @description get details of the assistants\\r\\n * @param {*} req \\r\\n * @param {*} res \\r\\n * @param {*} next \\r\\n * @returns {array} list of employees\\r\\n */\\r\\nconst getAllEmployees = (req, res, next) => {\\r\\n var query = { \\\"role\\\": \\\"moderater\\\" };\\r\\n Employees.find(query)\\r\\n .then((employees) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, employees: employees });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst getAllEmployeesByName = (req, res, next) => {\\r\\n var query = { \\\"role\\\": \\\"moderater\\\" };\\r\\n // if (req.body.similarTo) {\\r\\n // var searchBy = req.body.similarTo || {}\\r\\n // query = { \\\"role\\\": \\\"moderater\\\", $text: { $search: searchBy } }\\r\\n // }\\r\\n if (req.body.similarTo) {\\r\\n var searchBy = req.body.similarTo || {}\\r\\n query = { \\\"role\\\": \\\"moderater\\\", firstname: { $regex: `${searchBy}`, $options: \\\"i\\\" } }\\r\\n }\\r\\n var sortby = req.body.sortBy || {};\\r\\n Employees.find(query).sort(sortby)\\r\\n .then((employees) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, employees: employees });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst addEmployee = async (req, res, next) => {\\r\\n const randomPassword = utils.password_generator(10);\\r\\n var employee = {\\r\\n username: req.body.email,\\r\\n firstname: req.body.firstname,\\r\\n lastname: req.body.lastname,\\r\\n email: req.body.email,\\r\\n role: 'moderater'\\r\\n }\\r\\n try {\\r\\n Employees.register(new Employees(employee),\\r\\n randomPassword, (err, employee) => {\\r\\n if (err) {\\r\\n res.statusCode = 403;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: err.message });\\r\\n }\\r\\n else {\\r\\n employee.save((err, employee) => {\\r\\n if (err) {\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Error while Saving new user.' });\\r\\n }\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, email: employee.email, password: randomPassword });\\r\\n });\\r\\n }\\r\\n });\\r\\n } catch (error) {\\r\\n var err = new Error(\\\"Error while registering new user.\\\");\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: err.message });\\r\\n }\\r\\n}\\r\\n\\r\\nconst deleteAllEmployees = (req, res, next) => {\\r\\n Employees.remove({ \\\"role\\\": \\\"moderater\\\" })\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json(resp);\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nexports.getAllEmployees = getAllEmployees;\\r\\nexports.getAllEmployeesByName = getAllEmployeesByName;\\r\\nexports.addEmployee = addEmployee;\\r\\nexports.deleteAllEmployees = deleteAllEmployees;\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Employee Operations Specified by ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nconst getEmployeeDetailsById = (req, res, next) => {\\r\\n Employees.findById(req.params.employeeId)\\r\\n .then((employee) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, employee: employee });\\r\\n }, (err) => {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Could not find employee with given ID' });\\r\\n })\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst updateEmployeeDetailsById = (req, res, next) => {\\r\\n var employee = {\\r\\n username: req.body.email,\\r\\n firstname: req.body.firstname,\\r\\n lastname: req.body.lastname,\\r\\n email: req.body.email,\\r\\n role: 'moderater'\\r\\n }\\r\\n Employees.findByIdAndUpdate(req.params.employeeId, {\\r\\n $set: employee\\r\\n }, { new: true })\\r\\n .then((employee) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, employee: employee });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => {\\r\\n var err = new Error(\\\"Error while updating.\\\");\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: err.message });\\r\\n });\\r\\n}\\r\\n\\r\\nconst deleteAEmployeeById = (req, res, next) => {\\r\\n Employees.findByIdAndRemove(req.params.employeeId)\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json(resp);\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nexports.getEmployeeDetailsById = getEmployeeDetailsById;\\r\\nexports.updateEmployeeDetailsById = updateEmployeeDetailsById;\\r\\nexports.deleteAEmployeeById = deleteAEmployeeById;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/6e/employeeController_6ee2f5b4e4eea073cb5625109f63cb82.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2497\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\employeeController.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":22470,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":22467,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"getAllEmployees\",\"ranges\":[{\"startOffset\":577,\"endOffset\":889,\"count\":2}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":673,\"endOffset\":843,\"count\":2}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":845,\"endOffset\":861,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":869,\"endOffset\":885,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getAllEmployeesByName\",\"ranges\":[{\"startOffset\":922,\"endOffset\":1648,\"count\":3},{\"startOffset\":1172,\"endOffset\":1350,\"count\":1},{\"startOffset\":1212,\"endOffset\":1217,\"count\":0}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1432,\"endOffset\":1602,\"count\":3}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1604,\"endOffset\":1620,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1628,\"endOffset\":1644,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"addEmployee\",\"ranges\":[{\"startOffset\":1671,\"endOffset\":3020,\"count\":4}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1998,\"endOffset\":2777,\"count\":4}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":2250,\"endOffset\":2761,\"count\":2}],\"isBlockCoverage\":false},{\"functionName\":\"deleteAllEmployees\",\"ranges\":[{\"startOffset\":3050,\"endOffset\":3287,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":3127,\"endOffset\":3241,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":3243,\"endOffset\":3259,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":3267,\"endOffset\":3283,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getEmployeeDetailsById\",\"ranges\":[{\"startOffset\":3736,\"endOffset\":4197,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"updateEmployeeDetailsById\",\"ranges\":[{\"startOffset\":4234,\"endOffset\":4944,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"deleteAEmployeeById\",\"ranges\":[{\"startOffset\":4975,\"endOffset\":5215,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const multer = require('multer');\\n\\nconst {\\n v4: uuidv4\\n} = require('uuid');\\n\\nlet path = require('path');\\n\\nconst password_generator = len => {\\n var length = len ? len : 10;\\n var string = \\\"abcdefghijklmnopqrstuvwxyz\\\"; //to upper \\n\\n var numeric = '0123456789';\\n var punctuation = '!@#$%^&*()_+~`|}{[]\\\\:;?><,./-=';\\n var password = \\\"\\\";\\n var character = \\\"\\\";\\n var crunch = true;\\n\\n while (password.length < length) {\\n entity1 = Math.ceil(string.length * Math.random() * Math.random());\\n entity2 = Math.ceil(numeric.length * Math.random() * Math.random());\\n entity3 = Math.ceil(punctuation.length * Math.random() * Math.random());\\n hold = string.charAt(entity1);\\n hold = password.length % 2 == 0 ? hold.toUpperCase() : hold;\\n character += hold;\\n character += numeric.charAt(entity2);\\n character += punctuation.charAt(entity3);\\n password = character;\\n }\\n\\n password = password.split('').sort(function () {\\n return 0.5 - Math.random();\\n }).join('');\\n return password.substr(0, length);\\n};\\n\\nexports.password_generator = password_generator;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInV0aWxzLmpzIl0sIm5hbWVzIjpbIm11bHRlciIsInJlcXVpcmUiLCJ2NCIsInV1aWR2NCIsInBhdGgiLCJwYXNzd29yZF9nZW5lcmF0b3IiLCJsZW4iLCJsZW5ndGgiLCJzdHJpbmciLCJudW1lcmljIiwicHVuY3R1YXRpb24iLCJwYXNzd29yZCIsImNoYXJhY3RlciIsImNydW5jaCIsImVudGl0eTEiLCJNYXRoIiwiY2VpbCIsInJhbmRvbSIsImVudGl0eTIiLCJlbnRpdHkzIiwiaG9sZCIsImNoYXJBdCIsInRvVXBwZXJDYXNlIiwic3BsaXQiLCJzb3J0Iiwiam9pbiIsInN1YnN0ciIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE1BQU0sR0FBR0MsT0FBTyxDQUFDLFFBQUQsQ0FBdEI7O0FBQ0EsTUFBTTtBQUFFQyxFQUFBQSxFQUFFLEVBQUVDO0FBQU4sSUFBaUJGLE9BQU8sQ0FBQyxNQUFELENBQTlCOztBQUNBLElBQUlHLElBQUksR0FBR0gsT0FBTyxDQUFDLE1BQUQsQ0FBbEI7O0FBRUEsTUFBTUksa0JBQWtCLEdBQUlDLEdBQUQsSUFBUztBQUNoQyxNQUFJQyxNQUFNLEdBQUlELEdBQUQsR0FBU0EsR0FBVCxHQUFpQixFQUE5QjtBQUNBLE1BQUlFLE1BQU0sR0FBRyw0QkFBYixDQUZnQyxDQUVXOztBQUMzQyxNQUFJQyxPQUFPLEdBQUcsWUFBZDtBQUNBLE1BQUlDLFdBQVcsR0FBRyxnQ0FBbEI7QUFDQSxNQUFJQyxRQUFRLEdBQUcsRUFBZjtBQUNBLE1BQUlDLFNBQVMsR0FBRyxFQUFoQjtBQUNBLE1BQUlDLE1BQU0sR0FBRyxJQUFiOztBQUNBLFNBQU9GLFFBQVEsQ0FBQ0osTUFBVCxHQUFrQkEsTUFBekIsRUFBaUM7QUFDN0JPLElBQUFBLE9BQU8sR0FBR0MsSUFBSSxDQUFDQyxJQUFMLENBQVVSLE1BQU0sQ0FBQ0QsTUFBUCxHQUFnQlEsSUFBSSxDQUFDRSxNQUFMLEVBQWhCLEdBQWdDRixJQUFJLENBQUNFLE1BQUwsRUFBMUMsQ0FBVjtBQUNBQyxJQUFBQSxPQUFPLEdBQUdILElBQUksQ0FBQ0MsSUFBTCxDQUFVUCxPQUFPLENBQUNGLE1BQVIsR0FBaUJRLElBQUksQ0FBQ0UsTUFBTCxFQUFqQixHQUFpQ0YsSUFBSSxDQUFDRSxNQUFMLEVBQTNDLENBQVY7QUFDQUUsSUFBQUEsT0FBTyxHQUFHSixJQUFJLENBQUNDLElBQUwsQ0FBVU4sV0FBVyxDQUFDSCxNQUFaLEdBQXFCUSxJQUFJLENBQUNFLE1BQUwsRUFBckIsR0FBcUNGLElBQUksQ0FBQ0UsTUFBTCxFQUEvQyxDQUFWO0FBQ0FHLElBQUFBLElBQUksR0FBR1osTUFBTSxDQUFDYSxNQUFQLENBQWNQLE9BQWQsQ0FBUDtBQUNBTSxJQUFBQSxJQUFJLEdBQUlULFFBQVEsQ0FBQ0osTUFBVCxHQUFrQixDQUFsQixJQUF1QixDQUF4QixHQUE4QmEsSUFBSSxDQUFDRSxXQUFMLEVBQTlCLEdBQXFERixJQUE1RDtBQUNBUixJQUFBQSxTQUFTLElBQUlRLElBQWI7QUFDQVIsSUFBQUEsU0FBUyxJQUFJSCxPQUFPLENBQUNZLE1BQVIsQ0FBZUgsT0FBZixDQUFiO0FBQ0FOLElBQUFBLFNBQVMsSUFBSUYsV0FBVyxDQUFDVyxNQUFaLENBQW1CRixPQUFuQixDQUFiO0FBQ0FSLElBQUFBLFFBQVEsR0FBR0MsU0FBWDtBQUNIOztBQUNERCxFQUFBQSxRQUFRLEdBQUdBLFFBQVEsQ0FBQ1ksS0FBVCxDQUFlLEVBQWYsRUFBbUJDLElBQW5CLENBQXdCLFlBQVk7QUFBRSxXQUFPLE1BQU1ULElBQUksQ0FBQ0UsTUFBTCxFQUFiO0FBQTRCLEdBQWxFLEVBQW9FUSxJQUFwRSxDQUF5RSxFQUF6RSxDQUFYO0FBQ0EsU0FBT2QsUUFBUSxDQUFDZSxNQUFULENBQWdCLENBQWhCLEVBQW1CbkIsTUFBbkIsQ0FBUDtBQUNILENBckJEOztBQXVCQW9CLE9BQU8sQ0FBQ3RCLGtCQUFSLEdBQTZCQSxrQkFBN0IiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBtdWx0ZXIgPSByZXF1aXJlKCdtdWx0ZXInKTtcclxuY29uc3QgeyB2NDogdXVpZHY0IH0gPSByZXF1aXJlKCd1dWlkJyk7XHJcbmxldCBwYXRoID0gcmVxdWlyZSgncGF0aCcpO1xyXG5cclxuY29uc3QgcGFzc3dvcmRfZ2VuZXJhdG9yID0gKGxlbikgPT4ge1xyXG4gICAgdmFyIGxlbmd0aCA9IChsZW4pID8gKGxlbikgOiAoMTApO1xyXG4gICAgdmFyIHN0cmluZyA9IFwiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpcIjsgLy90byB1cHBlciBcclxuICAgIHZhciBudW1lcmljID0gJzAxMjM0NTY3ODknO1xyXG4gICAgdmFyIHB1bmN0dWF0aW9uID0gJyFAIyQlXiYqKClfK35gfH17W11cXDo7Pz48LC4vLT0nO1xyXG4gICAgdmFyIHBhc3N3b3JkID0gXCJcIjtcclxuICAgIHZhciBjaGFyYWN0ZXIgPSBcIlwiO1xyXG4gICAgdmFyIGNydW5jaCA9IHRydWU7XHJcbiAgICB3aGlsZSAocGFzc3dvcmQubGVuZ3RoIDwgbGVuZ3RoKSB7XHJcbiAgICAgICAgZW50aXR5MSA9IE1hdGguY2VpbChzdHJpbmcubGVuZ3RoICogTWF0aC5yYW5kb20oKSAqIE1hdGgucmFuZG9tKCkpO1xyXG4gICAgICAgIGVudGl0eTIgPSBNYXRoLmNlaWwobnVtZXJpYy5sZW5ndGggKiBNYXRoLnJhbmRvbSgpICogTWF0aC5yYW5kb20oKSk7XHJcbiAgICAgICAgZW50aXR5MyA9IE1hdGguY2VpbChwdW5jdHVhdGlvbi5sZW5ndGggKiBNYXRoLnJhbmRvbSgpICogTWF0aC5yYW5kb20oKSk7XHJcbiAgICAgICAgaG9sZCA9IHN0cmluZy5jaGFyQXQoZW50aXR5MSk7XHJcbiAgICAgICAgaG9sZCA9IChwYXNzd29yZC5sZW5ndGggJSAyID09IDApID8gKGhvbGQudG9VcHBlckNhc2UoKSkgOiAoaG9sZCk7XHJcbiAgICAgICAgY2hhcmFjdGVyICs9IGhvbGQ7XHJcbiAgICAgICAgY2hhcmFjdGVyICs9IG51bWVyaWMuY2hhckF0KGVudGl0eTIpO1xyXG4gICAgICAgIGNoYXJhY3RlciArPSBwdW5jdHVhdGlvbi5jaGFyQXQoZW50aXR5Myk7XHJcbiAgICAgICAgcGFzc3dvcmQgPSBjaGFyYWN0ZXI7XHJcbiAgICB9XHJcbiAgICBwYXNzd29yZCA9IHBhc3N3b3JkLnNwbGl0KCcnKS5zb3J0KGZ1bmN0aW9uICgpIHsgcmV0dXJuIDAuNSAtIE1hdGgucmFuZG9tKCkgfSkuam9pbignJyk7XHJcbiAgICByZXR1cm4gcGFzc3dvcmQuc3Vic3RyKDAsIGxlbmd0aCk7XHJcbn1cclxuXHJcbmV4cG9ydHMucGFzc3dvcmRfZ2VuZXJhdG9yID0gcGFzc3dvcmRfZ2VuZXJhdG9yOyJdfQ==\",\"originalCode\":\"const multer = require('multer');\\r\\nconst { v4: uuidv4 } = require('uuid');\\r\\nlet path = require('path');\\r\\n\\r\\nconst password_generator = (len) => {\\r\\n var length = (len) ? (len) : (10);\\r\\n var string = \\\"abcdefghijklmnopqrstuvwxyz\\\"; //to upper \\r\\n var numeric = '0123456789';\\r\\n var punctuation = '!@#$%^&*()_+~`|}{[]\\\\:;?><,./-=';\\r\\n var password = \\\"\\\";\\r\\n var character = \\\"\\\";\\r\\n var crunch = true;\\r\\n while (password.length < length) {\\r\\n entity1 = Math.ceil(string.length * Math.random() * Math.random());\\r\\n entity2 = Math.ceil(numeric.length * Math.random() * Math.random());\\r\\n entity3 = Math.ceil(punctuation.length * Math.random() * Math.random());\\r\\n hold = string.charAt(entity1);\\r\\n hold = (password.length % 2 == 0) ? (hold.toUpperCase()) : (hold);\\r\\n character += hold;\\r\\n character += numeric.charAt(entity2);\\r\\n character += punctuation.charAt(entity3);\\r\\n password = character;\\r\\n }\\r\\n password = password.split('').sort(function () { return 0.5 - Math.random() }).join('');\\r\\n return password.substr(0, length);\\r\\n}\\r\\n\\r\\nexports.password_generator = password_generator;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/12/utils_12501e91058955e05c348a4b2ab3e6a2.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2498\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\utils\\\\utils.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":5216,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":5213,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"password_generator\",\"ranges\":[{\"startOffset\":223,\"endOffset\":1107,\"count\":4}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1008,\"endOffset\":1057,\"count\":111}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const express = require('express');\\n\\nconst bodyParser = require('body-parser');\\n\\nconst cors = require('./cors');\\n\\nconst {\\n checkSchema\\n} = require('express-validator');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nvar validationRules = require('../middleware/validation');\\n\\nconst placeController = require('../controllers/placeController');\\n\\nconst visitingPlaceRouter = express.Router();\\nvisitingPlaceRouter.use(bodyParser.json()); // **********************************************************************************\\n// Visiting Place Routes\\n// **********************************************************************************\\n\\nvisitingPlaceRouter.route('/').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, placeController.getAllVisitingPlaces).post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.addVisitingPlace).put(cors.corsWithOptions, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('PUT operation not supported on /visitingPlaces');\\n}).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.deleteAllVisitingPlaces);\\nvisitingPlaceRouter.route('/search').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).post(cors.corsWithOptions, authenticate.verifyUser, placeController.getAllVisitingPlacesByName); // **********************************************************************************\\n// \\n// Visiting Place Routes On ID\\n// \\n// **********************************************************************************\\n\\nvisitingPlaceRouter.route('/:visitingPlaceId').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, placeController.getVisitingPlaceDetailsById).post(cors.corsWithOptions, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('POST operation not supported on /visitingPlaces/' + req.params.visitingPlaceId);\\n}).put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.updateVisitingPlaceDetailsById).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.deleteAVisitingPlaceById);\\nmodule.exports = visitingPlaceRouter;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBsYWNlUm91dGVyLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwiYm9keVBhcnNlciIsImNvcnMiLCJjaGVja1NjaGVtYSIsImF1dGhlbnRpY2F0ZSIsInZhbGlkYXRpb25SdWxlcyIsInBsYWNlQ29udHJvbGxlciIsInZpc2l0aW5nUGxhY2VSb3V0ZXIiLCJSb3V0ZXIiLCJ1c2UiLCJqc29uIiwicm91dGUiLCJvcHRpb25zIiwiY29yc1dpdGhPcHRpb25zIiwicmVxIiwicmVzIiwic2VuZFN0YXR1cyIsImdldCIsInZlcmlmeVVzZXIiLCJnZXRBbGxWaXNpdGluZ1BsYWNlcyIsInBvc3QiLCJ2ZXJpZnlBZG1pbiIsImFkZFZpc2l0aW5nUGxhY2UiLCJwdXQiLCJuZXh0Iiwic3RhdHVzQ29kZSIsImVuZCIsImRlbGV0ZSIsImRlbGV0ZUFsbFZpc2l0aW5nUGxhY2VzIiwiZ2V0QWxsVmlzaXRpbmdQbGFjZXNCeU5hbWUiLCJnZXRWaXNpdGluZ1BsYWNlRGV0YWlsc0J5SWQiLCJwYXJhbXMiLCJ2aXNpdGluZ1BsYWNlSWQiLCJ1cGRhdGVWaXNpdGluZ1BsYWNlRGV0YWlsc0J5SWQiLCJkZWxldGVBVmlzaXRpbmdQbGFjZUJ5SWQiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxPQUFPLEdBQUdDLE9BQU8sQ0FBQyxTQUFELENBQXZCOztBQUNBLE1BQU1DLFVBQVUsR0FBR0QsT0FBTyxDQUFDLGFBQUQsQ0FBMUI7O0FBRUEsTUFBTUUsSUFBSSxHQUFHRixPQUFPLENBQUMsUUFBRCxDQUFwQjs7QUFDQSxNQUFNO0FBQUVHLEVBQUFBO0FBQUYsSUFBa0JILE9BQU8sQ0FBQyxtQkFBRCxDQUEvQjs7QUFDQSxJQUFJSSxZQUFZLEdBQUdKLE9BQU8sQ0FBQyw0QkFBRCxDQUExQjs7QUFDQSxJQUFJSyxlQUFlLEdBQUdMLE9BQU8sQ0FBQywwQkFBRCxDQUE3Qjs7QUFDQSxNQUFNTSxlQUFlLEdBQUdOLE9BQU8sQ0FBQyxnQ0FBRCxDQUEvQjs7QUFFQSxNQUFNTyxtQkFBbUIsR0FBR1IsT0FBTyxDQUFDUyxNQUFSLEVBQTVCO0FBRUFELG1CQUFtQixDQUFDRSxHQUFwQixDQUF3QlIsVUFBVSxDQUFDUyxJQUFYLEVBQXhCLEUsQ0FFQTtBQUVBO0FBRUE7O0FBRUFILG1CQUFtQixDQUFDSSxLQUFwQixDQUEwQixHQUExQixFQUNLQyxPQURMLENBQ2FWLElBQUksQ0FBQ1csZUFEbEIsRUFDbUMsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEtBQWM7QUFBRUEsRUFBQUEsR0FBRyxDQUFDQyxVQUFKLENBQWUsR0FBZjtBQUFzQixDQUR6RSxFQUVLQyxHQUZMLENBRVNmLElBQUksQ0FBQ0EsSUFGZCxFQUVvQkUsWUFBWSxDQUFDYyxVQUZqQyxFQUU2Q1osZUFBZSxDQUFDYSxvQkFGN0QsRUFHS0MsSUFITCxDQUdVbEIsSUFBSSxDQUFDVyxlQUhmLEVBR2dDVCxZQUFZLENBQUNjLFVBSDdDLEVBR3lEZCxZQUFZLENBQUNpQixXQUh0RSxFQUdtRmYsZUFBZSxDQUFDZ0IsZ0JBSG5HLEVBSUtDLEdBSkwsQ0FJU3JCLElBQUksQ0FBQ1csZUFKZCxFQUkrQixDQUFDQyxHQUFELEVBQU1DLEdBQU4sRUFBV1MsSUFBWCxLQUFvQjtBQUMzQ1QsRUFBQUEsR0FBRyxDQUFDVSxVQUFKLEdBQWlCLEdBQWpCO0FBQ0FWLEVBQUFBLEdBQUcsQ0FBQ1csR0FBSixDQUFRLGdEQUFSO0FBQ0gsQ0FQTCxFQVFLQyxNQVJMLENBUVl6QixJQUFJLENBQUNXLGVBUmpCLEVBUWtDVCxZQUFZLENBQUNjLFVBUi9DLEVBUTJEZCxZQUFZLENBQUNpQixXQVJ4RSxFQVFxRmYsZUFBZSxDQUFDc0IsdUJBUnJHO0FBU0FyQixtQkFBbUIsQ0FBQ0ksS0FBcEIsQ0FBMEIsU0FBMUIsRUFDS0MsT0FETCxDQUNhVixJQUFJLENBQUNXLGVBRGxCLEVBQ21DLENBQUNDLEdBQUQsRUFBTUMsR0FBTixLQUFjO0FBQUVBLEVBQUFBLEdBQUcsQ0FBQ0MsVUFBSixDQUFlLEdBQWY7QUFBc0IsQ0FEekUsRUFFS0ksSUFGTCxDQUVVbEIsSUFBSSxDQUFDVyxlQUZmLEVBRWdDVCxZQUFZLENBQUNjLFVBRjdDLEVBRXlEWixlQUFlLENBQUN1QiwwQkFGekUsRSxDQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUF0QixtQkFBbUIsQ0FBQ0ksS0FBcEIsQ0FBMEIsbUJBQTFCLEVBQ0tDLE9BREwsQ0FDYVYsSUFBSSxDQUFDVyxlQURsQixFQUNtQyxDQUFDQyxHQUFELEVBQU1DLEdBQU4sS0FBYztBQUFFQSxFQUFBQSxHQUFHLENBQUNDLFVBQUosQ0FBZSxHQUFmO0FBQXNCLENBRHpFLEVBRUtDLEdBRkwsQ0FFU2YsSUFBSSxDQUFDQSxJQUZkLEVBRW9CRSxZQUFZLENBQUNjLFVBRmpDLEVBRTZDWixlQUFlLENBQUN3QiwyQkFGN0QsRUFHS1YsSUFITCxDQUdVbEIsSUFBSSxDQUFDVyxlQUhmLEVBR2dDLENBQUNDLEdBQUQsRUFBTUMsR0FBTixFQUFXUyxJQUFYLEtBQW9CO0FBQzVDVCxFQUFBQSxHQUFHLENBQUNVLFVBQUosR0FBaUIsR0FBakI7QUFDQVYsRUFBQUEsR0FBRyxDQUFDVyxHQUFKLENBQVEscURBQXFEWixHQUFHLENBQUNpQixNQUFKLENBQVdDLGVBQXhFO0FBQ0gsQ0FOTCxFQU9LVCxHQVBMLENBT1NyQixJQUFJLENBQUNXLGVBUGQsRUFPK0JULFlBQVksQ0FBQ2MsVUFQNUMsRUFPd0RkLFlBQVksQ0FBQ2lCLFdBUHJFLEVBT2tGZixlQUFlLENBQUMyQiw4QkFQbEcsRUFRS04sTUFSTCxDQVFZekIsSUFBSSxDQUFDVyxlQVJqQixFQVFrQ1QsWUFBWSxDQUFDYyxVQVIvQyxFQVEyRGQsWUFBWSxDQUFDaUIsV0FSeEUsRUFRcUZmLGVBQWUsQ0FBQzRCLHdCQVJyRztBQVVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUI3QixtQkFBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBleHByZXNzID0gcmVxdWlyZSgnZXhwcmVzcycpO1xyXG5jb25zdCBib2R5UGFyc2VyID0gcmVxdWlyZSgnYm9keS1wYXJzZXInKTtcclxuXHJcbmNvbnN0IGNvcnMgPSByZXF1aXJlKCcuL2NvcnMnKTtcclxuY29uc3QgeyBjaGVja1NjaGVtYSB9ID0gcmVxdWlyZSgnZXhwcmVzcy12YWxpZGF0b3InKTtcclxudmFyIGF1dGhlbnRpY2F0ZSA9IHJlcXVpcmUoJy4uL21pZGRsZXdhcmUvYXV0aGVudGljYXRlJyk7XHJcbnZhciB2YWxpZGF0aW9uUnVsZXMgPSByZXF1aXJlKCcuLi9taWRkbGV3YXJlL3ZhbGlkYXRpb24nKTtcclxuY29uc3QgcGxhY2VDb250cm9sbGVyID0gcmVxdWlyZSgnLi4vY29udHJvbGxlcnMvcGxhY2VDb250cm9sbGVyJyk7XHJcblxyXG5jb25zdCB2aXNpdGluZ1BsYWNlUm91dGVyID0gZXhwcmVzcy5Sb3V0ZXIoKTtcclxuXHJcbnZpc2l0aW5nUGxhY2VSb3V0ZXIudXNlKGJvZHlQYXJzZXIuanNvbigpKTtcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbi8vICAgICAgICAgICAgICBWaXNpdGluZyBQbGFjZSBSb3V0ZXNcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbnZpc2l0aW5nUGxhY2VSb3V0ZXIucm91dGUoJy8nKVxyXG4gICAgLm9wdGlvbnMoY29ycy5jb3JzV2l0aE9wdGlvbnMsIChyZXEsIHJlcykgPT4geyByZXMuc2VuZFN0YXR1cygyMDApOyB9KVxyXG4gICAgLmdldChjb3JzLmNvcnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCBwbGFjZUNvbnRyb2xsZXIuZ2V0QWxsVmlzaXRpbmdQbGFjZXMpXHJcbiAgICAucG9zdChjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgcGxhY2VDb250cm9sbGVyLmFkZFZpc2l0aW5nUGxhY2UpXHJcbiAgICAucHV0KGNvcnMuY29yc1dpdGhPcHRpb25zLCAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwMztcclxuICAgICAgICByZXMuZW5kKCdQVVQgb3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQgb24gL3Zpc2l0aW5nUGxhY2VzJyk7XHJcbiAgICB9KVxyXG4gICAgLmRlbGV0ZShjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgcGxhY2VDb250cm9sbGVyLmRlbGV0ZUFsbFZpc2l0aW5nUGxhY2VzKTtcclxudmlzaXRpbmdQbGFjZVJvdXRlci5yb3V0ZSgnL3NlYXJjaCcpXHJcbiAgICAub3B0aW9ucyhjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcbiAgICAucG9zdChjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIHBsYWNlQ29udHJvbGxlci5nZXRBbGxWaXNpdGluZ1BsYWNlc0J5TmFtZSk7XHJcblxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbi8vIFxyXG4vLyAgICAgICAgICAgICAgVmlzaXRpbmcgUGxhY2UgUm91dGVzIE9uIElEXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG52aXNpdGluZ1BsYWNlUm91dGVyLnJvdXRlKCcvOnZpc2l0aW5nUGxhY2VJZCcpXHJcbiAgICAub3B0aW9ucyhjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcbiAgICAuZ2V0KGNvcnMuY29ycywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIHBsYWNlQ29udHJvbGxlci5nZXRWaXNpdGluZ1BsYWNlRGV0YWlsc0J5SWQpXHJcbiAgICAucG9zdChjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgcmVzLmVuZCgnUE9TVCBvcGVyYXRpb24gbm90IHN1cHBvcnRlZCBvbiAvdmlzaXRpbmdQbGFjZXMvJyArIHJlcS5wYXJhbXMudmlzaXRpbmdQbGFjZUlkKTtcclxuICAgIH0pXHJcbiAgICAucHV0KGNvcnMuY29yc1dpdGhPcHRpb25zLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeUFkbWluLCBwbGFjZUNvbnRyb2xsZXIudXBkYXRlVmlzaXRpbmdQbGFjZURldGFpbHNCeUlkKVxyXG4gICAgLmRlbGV0ZShjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgcGxhY2VDb250cm9sbGVyLmRlbGV0ZUFWaXNpdGluZ1BsYWNlQnlJZCk7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IHZpc2l0aW5nUGxhY2VSb3V0ZXI7XHJcbiJdfQ==\",\"originalCode\":\"const express = require('express');\\r\\nconst bodyParser = require('body-parser');\\r\\n\\r\\nconst cors = require('./cors');\\r\\nconst { checkSchema } = require('express-validator');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\nvar validationRules = require('../middleware/validation');\\r\\nconst placeController = require('../controllers/placeController');\\r\\n\\r\\nconst visitingPlaceRouter = express.Router();\\r\\n\\r\\nvisitingPlaceRouter.use(bodyParser.json());\\r\\n\\r\\n// **********************************************************************************\\r\\n\\r\\n// Visiting Place Routes\\r\\n\\r\\n// **********************************************************************************\\r\\n\\r\\nvisitingPlaceRouter.route('/')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, placeController.getAllVisitingPlaces)\\r\\n .post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.addVisitingPlace)\\r\\n .put(cors.corsWithOptions, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('PUT operation not supported on /visitingPlaces');\\r\\n })\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.deleteAllVisitingPlaces);\\r\\nvisitingPlaceRouter.route('/search')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .post(cors.corsWithOptions, authenticate.verifyUser, placeController.getAllVisitingPlacesByName);\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Visiting Place Routes On ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nvisitingPlaceRouter.route('/:visitingPlaceId')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, placeController.getVisitingPlaceDetailsById)\\r\\n .post(cors.corsWithOptions, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('POST operation not supported on /visitingPlaces/' + req.params.visitingPlaceId);\\r\\n })\\r\\n .put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.updateVisitingPlaceDetailsById)\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.deleteAVisitingPlaceById);\\r\\n\\r\\nmodule.exports = visitingPlaceRouter;\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/9d/placeRouter_9d9aca2c41f2c1b6283bdacdd67537b2.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2539\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\placeRouter.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":9353,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":9350,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":809,\"endOffset\":849,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1067,\"endOffset\":1175,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1366,\"endOffset\":1406,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1807,\"endOffset\":1847,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1961,\"endOffset\":2100,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const VisitingPlaces = require('../models/visitingPlaces'); // **********************************************************************************\\n// \\n// Visiting Place Operations \\n// \\n// **********************************************************************************\\n\\n\\nconst getAllVisitingPlaces = (req, res, next) => {\\n var query = {};\\n VisitingPlaces.find(query, 'name description distance location timeToReach image travellingMethods').then(visitingPlaces => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n visitingPlaces: visitingPlaces\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst getAllVisitingPlacesByName = (req, res, next) => {\\n var query = {};\\n\\n if (req.body.similarTo) {\\n query = {\\n name: {\\n $regex: `${req.body.similarTo}`,\\n $options: \\\"i\\\"\\n }\\n };\\n }\\n\\n VisitingPlaces.find(query, 'name description distance location timeToReach image travellingMethods').then(visitingPlaces => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n visitingPlaces: visitingPlaces\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst addVisitingPlace = (req, res, next) => {\\n var imagesArray = []; // files = req.files;\\n // files.forEach(file => {\\n // imagesArray.push(file.filename);\\n // });\\n\\n var place = {\\n name: req.body.name,\\n description: req.body.description,\\n location: {\\n coordinates: req.body.location.coordinates\\n },\\n distance: req.body.distance,\\n timeToReach: req.body.timeToReach,\\n images: imagesArray,\\n travellingMethods: req.body.methods\\n };\\n VisitingPlaces.create(place).then(visitingPlace => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n visitingPlace: visitingPlace\\n });\\n }, err => {\\n res.statusCode = 403;\\n res.setHeader('Content-Type', 'application/json');\\n const msg = err.driver ? \\\"Duplicate Key\\\" : err._message;\\n res.json({\\n success: false,\\n message: msg\\n });\\n }).catch(err => next(err));\\n};\\n\\nconst deleteAllVisitingPlaces = (req, res, next) => {\\n VisitingPlaces.remove({}).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json(resp);\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nexports.getAllVisitingPlaces = getAllVisitingPlaces;\\nexports.getAllVisitingPlacesByName = getAllVisitingPlacesByName;\\nexports.addVisitingPlace = addVisitingPlace;\\nexports.deleteAllVisitingPlaces = deleteAllVisitingPlaces; // **********************************************************************************\\n// \\n// Visiting Place Operations Specified by ID\\n// \\n// **********************************************************************************\\n\\nconst getVisitingPlaceDetailsById = (req, res, next) => {\\n VisitingPlaces.findById(req.params.visitingPlaceId).then(visitingPlace => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n visitingPlace: visitingPlace\\n });\\n }, err => {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: \\\"Could not find the place\\\"\\n });\\n }).catch(err => next(err));\\n};\\n\\nconst updateVisitingPlaceDetailsById = (req, res, next) => {\\n VisitingPlaces.findByIdAndUpdate(req.params.visitingPlaceId, {\\n $set: req.body\\n }, {\\n new: true\\n }).then(visitingPlace => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n visitingPlace: visitingPlace\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst deleteAVisitingPlaceById = (req, res, next) => {\\n VisitingPlaces.findByIdAndRemove(req.params.visitingPlaceId).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n response: resp\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nexports.getVisitingPlaceDetailsById = getVisitingPlaceDetailsById;\\nexports.updateVisitingPlaceDetailsById = updateVisitingPlaceDetailsById;\\nexports.deleteAVisitingPlaceById = deleteAVisitingPlaceById;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBsYWNlQ29udHJvbGxlci5qcyJdLCJuYW1lcyI6WyJWaXNpdGluZ1BsYWNlcyIsInJlcXVpcmUiLCJnZXRBbGxWaXNpdGluZ1BsYWNlcyIsInJlcSIsInJlcyIsIm5leHQiLCJxdWVyeSIsImZpbmQiLCJ0aGVuIiwidmlzaXRpbmdQbGFjZXMiLCJzdGF0dXNDb2RlIiwic2V0SGVhZGVyIiwianNvbiIsInN1Y2Nlc3MiLCJlcnIiLCJjYXRjaCIsImdldEFsbFZpc2l0aW5nUGxhY2VzQnlOYW1lIiwiYm9keSIsInNpbWlsYXJUbyIsIm5hbWUiLCIkcmVnZXgiLCIkb3B0aW9ucyIsImFkZFZpc2l0aW5nUGxhY2UiLCJpbWFnZXNBcnJheSIsInBsYWNlIiwiZGVzY3JpcHRpb24iLCJsb2NhdGlvbiIsImNvb3JkaW5hdGVzIiwiZGlzdGFuY2UiLCJ0aW1lVG9SZWFjaCIsImltYWdlcyIsInRyYXZlbGxpbmdNZXRob2RzIiwibWV0aG9kcyIsImNyZWF0ZSIsInZpc2l0aW5nUGxhY2UiLCJtc2ciLCJkcml2ZXIiLCJfbWVzc2FnZSIsIm1lc3NhZ2UiLCJkZWxldGVBbGxWaXNpdGluZ1BsYWNlcyIsInJlbW92ZSIsInJlc3AiLCJleHBvcnRzIiwiZ2V0VmlzaXRpbmdQbGFjZURldGFpbHNCeUlkIiwiZmluZEJ5SWQiLCJwYXJhbXMiLCJ2aXNpdGluZ1BsYWNlSWQiLCJ1cGRhdGVWaXNpdGluZ1BsYWNlRGV0YWlsc0J5SWQiLCJmaW5kQnlJZEFuZFVwZGF0ZSIsIiRzZXQiLCJuZXciLCJkZWxldGVBVmlzaXRpbmdQbGFjZUJ5SWQiLCJmaW5kQnlJZEFuZFJlbW92ZSIsInJlc3BvbnNlIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxjQUFjLEdBQUdDLE9BQU8sQ0FBQywwQkFBRCxDQUE5QixDLENBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUEsTUFBTUMsb0JBQW9CLEdBQUcsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDN0MsTUFB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QztBQUNBTCxPQUFPLENBQUNTLHdCQUFSLEdBQW1DQSx3QkFBbkMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBWaXNpdGluZ1BsYWNlcyA9IHJlcXVpcmUoJy4uL21vZGVscy92aXNpdGluZ1BsYWNlcycpO1xyXG5cclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyBcclxuLy8gICAgICAgICAgICAgIFZpc2l0aW5nIFBsYWNlIE9wZXJhdGlvbnMgXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG5jb25zdCBnZXRBbGxWaXNpdGluZ1BsYWNlcyA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgdmFyIHF1ZXJ5ID0ge307XHJcbiAgICBWaXNpdGluZ1BsYWNlcy5maW5kKHF1ZXJ5LCAnbmFtZSBkZXNjcmlwdGlvbiBkaXN0YW5jZSBsb2NhdGlvbiB0aW1lVG9SZWFjaCBpbWFnZSB0cmF2ZWxsaW5nTWV0aG9kcycpXHJcbiAgICAgICAgLnRoZW4oKHZpc2l0aW5nUGxhY2VzKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHZpc2l0aW5nUGxhY2VzOiB2aXNpdGluZ1BsYWNlcyB9KTtcclxuICAgICAgICB9LCAoZXJyKSA9PiBuZXh0KGVycikpXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IG5leHQoZXJyKSk7XHJcbn1cclxuXHJcbmNvbnN0IGdldEFsbFZpc2l0aW5nUGxhY2VzQnlOYW1lID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICB2YXIgcXVlcnkgPSB7fTtcclxuICAgIGlmIChyZXEuYm9keS5zaW1pbGFyVG8pIHtcclxuICAgICAgICBxdWVyeSA9IHsgbmFtZTogeyAkcmVnZXg6IGAke3JlcS5ib2R5LnNpbWlsYXJUb31gLCAkb3B0aW9uczogXCJpXCIgfSB9XHJcbiAgICB9XHJcbiAgICBWaXNpdGluZ1BsYWNlcy5maW5kKHF1ZXJ5LCAnbmFtZSBkZXNjcmlwdGlvbiBkaXN0YW5jZSBsb2NhdGlvbiB0aW1lVG9SZWFjaCBpbWFnZSB0cmF2ZWxsaW5nTWV0aG9kcycpXHJcbiAgICAgICAgLnRoZW4oKHZpc2l0aW5nUGxhY2VzKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHZpc2l0aW5nUGxhY2VzOiB2aXNpdGluZ1BsYWNlcyB9KTtcclxuICAgICAgICB9LCAoZXJyKSA9PiBuZXh0KGVycikpXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IG5leHQoZXJyKSk7XHJcbn1cclxuXHJcbmNvbnN0IGFkZFZpc2l0aW5nUGxhY2UgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHZhciBpbWFnZXNBcnJheSA9IFtdO1xyXG4gICAgLy8gZmlsZXMgPSByZXEuZmlsZXM7XHJcbiAgICAvLyBmaWxlcy5mb3JFYWNoKGZpbGUgPT4ge1xyXG4gICAgLy8gICAgIGltYWdlc0FycmF5LnB1c2goZmlsZS5maWxlbmFtZSk7XHJcbiAgICAvLyB9KTtcclxuICAgIHZhciBwbGFjZSA9XHJcbiAgICB7XHJcbiAgICAgICAgbmFtZTogcmVxLmJvZHkubmFtZSxcclxuICAgICAgICBkZXNjcmlwdGlvbjogcmVxLmJvZHkuZGVzY3JpcHRpb24sXHJcbiAgICAgICAgbG9jYXRpb246IHtcclxuICAgICAgICAgICAgY29vcmRpbmF0ZXM6IHJlcS5ib2R5LmxvY2F0aW9uLmNvb3JkaW5hdGVzXHJcbiAgICAgICAgfSxcclxuICAgICAgICBkaXN0YW5jZTogcmVxLmJvZHkuZGlzdGFuY2UsXHJcbiAgICAgICAgdGltZVRvUmVhY2g6IHJlcS5ib2R5LnRpbWVUb1JlYWNoLFxyXG4gICAgICAgIGltYWdlczogaW1hZ2VzQXJyYXksXHJcbiAgICAgICAgdHJhdmVsbGluZ01ldGhvZHM6IHJlcS5ib2R5Lm1ldGhvZHNcclxuICAgIH1cclxuICAgIFZpc2l0aW5nUGxhY2VzLmNyZWF0ZShwbGFjZSlcclxuICAgICAgICAudGhlbigodmlzaXRpbmdQbGFjZSkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCB2aXNpdGluZ1BsYWNlOiB2aXNpdGluZ1BsYWNlIH0pO1xyXG4gICAgICAgIH0sIChlcnIpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIGNvbnN0IG1zZyA9IGVyci5kcml2ZXIgPyBcIkR1cGxpY2F0ZSBLZXlcIiA6IGVyci5fbWVzc2FnZTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogbXNnIH0pO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IG5leHQoZXJyKSk7XHJcbn1cclxuXHJcbmNvbnN0IGRlbGV0ZUFsbFZpc2l0aW5nUGxhY2VzID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICBWaXNpdGluZ1BsYWNlcy5yZW1vdmUoe30pXHJcbiAgICAgICAgLnRoZW4oKHJlc3ApID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHJlc3ApO1xyXG4gICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuZXhwb3J0cy5nZXRBbGxWaXNpdGluZ1BsYWNlcyA9IGdldEFsbFZpc2l0aW5nUGxhY2VzO1xyXG5leHBvcnRzLmdldEFsbFZpc2l0aW5nUGxhY2VzQnlOYW1lID0gZ2V0QWxsVmlzaXRpbmdQbGFjZXNCeU5hbWU7XHJcbmV4cG9ydHMuYWRkVmlzaXRpbmdQbGFjZSA9IGFkZFZpc2l0aW5nUGxhY2U7XHJcbmV4cG9ydHMuZGVsZXRlQWxsVmlzaXRpbmdQbGFjZXMgPSBkZWxldGVBbGxWaXNpdGluZ1BsYWNlcztcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuLy8gXHJcbi8vICAgICAgICAgICAgICBWaXNpdGluZyBQbGFjZSBPcGVyYXRpb25zIFNwZWNpZmllZCBieSBJRFxyXG4vLyBcclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuY29uc3QgZ2V0VmlzaXRpbmdQbGFjZURldGFpbHNCeUlkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICBWaXNpdGluZ1BsYWNlcy5maW5kQnlJZChyZXEucGFyYW1zLnZpc2l0aW5nUGxhY2VJZClcclxuICAgICAgICAudGhlbigodmlzaXRpbmdQbGFjZSkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCB2aXNpdGluZ1BsYWNlOiB2aXNpdGluZ1BsYWNlIH0pO1xyXG4gICAgICAgIH0sIChlcnIpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDQ7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogZmFsc2UsIG1lc3NhZ2U6IFwiQ291bGQgbm90IGZpbmQgdGhlIHBsYWNlXCIgfSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuY29uc3QgdXBkYXRlVmlzaXRpbmdQbGFjZURldGFpbHNCeUlkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICBWaXNpdGluZ1BsYWNlcy5maW5kQnlJZEFuZFVwZGF0ZShyZXEucGFyYW1zLnZpc2l0aW5nUGxhY2VJZCwge1xyXG4gICAgICAgICRzZXQ6IHJlcS5ib2R5XHJcbiAgICB9LCB7IG5ldzogdHJ1ZSB9KVxyXG4gICAgICAgIC50aGVuKCh2aXNpdGluZ1BsYWNlKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHZpc2l0aW5nUGxhY2U6IHZpc2l0aW5nUGxhY2UgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpO1xyXG59XHJcblxyXG5jb25zdCBkZWxldGVBVmlzaXRpbmdQbGFjZUJ5SWQgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIFZpc2l0aW5nUGxhY2VzLmZpbmRCeUlkQW5kUmVtb3ZlKHJlcS5wYXJhbXMudmlzaXRpbmdQbGFjZUlkKVxyXG4gICAgICAgIC50aGVuKChyZXNwKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHJlc3BvbnNlOiByZXNwIH0pO1xyXG4gICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuZXhwb3J0cy5nZXRWaXNpdGluZ1BsYWNlRGV0YWlsc0J5SWQgPSBnZXRWaXNpdGluZ1BsYWNlRGV0YWlsc0J5SWQ7XHJcbmV4cG9ydHMudXBkYXRlVmlzaXRpbmdQbGFjZURldGFpbHNCeUlkID0gdXBkYXRlVmlzaXRpbmdQbGFjZURldGFpbHNCeUlkO1xyXG5leHBvcnRzLmRlbGV0ZUFWaXNpdGluZ1BsYWNlQnlJZCA9IGRlbGV0ZUFWaXNpdGluZ1BsYWNlQnlJZDsiXX0=\",\"originalCode\":\"const VisitingPlaces = require('../models/visitingPlaces');\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Visiting Place Operations \\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nconst getAllVisitingPlaces = (req, res, next) => {\\r\\n var query = {};\\r\\n VisitingPlaces.find(query, 'name description distance location timeToReach image travellingMethods')\\r\\n .then((visitingPlaces) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, visitingPlaces: visitingPlaces });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst getAllVisitingPlacesByName = (req, res, next) => {\\r\\n var query = {};\\r\\n if (req.body.similarTo) {\\r\\n query = { name: { $regex: `${req.body.similarTo}`, $options: \\\"i\\\" } }\\r\\n }\\r\\n VisitingPlaces.find(query, 'name description distance location timeToReach image travellingMethods')\\r\\n .then((visitingPlaces) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, visitingPlaces: visitingPlaces });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst addVisitingPlace = (req, res, next) => {\\r\\n var imagesArray = [];\\r\\n // files = req.files;\\r\\n // files.forEach(file => {\\r\\n // imagesArray.push(file.filename);\\r\\n // });\\r\\n var place =\\r\\n {\\r\\n name: req.body.name,\\r\\n description: req.body.description,\\r\\n location: {\\r\\n coordinates: req.body.location.coordinates\\r\\n },\\r\\n distance: req.body.distance,\\r\\n timeToReach: req.body.timeToReach,\\r\\n images: imagesArray,\\r\\n travellingMethods: req.body.methods\\r\\n }\\r\\n VisitingPlaces.create(place)\\r\\n .then((visitingPlace) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, visitingPlace: visitingPlace });\\r\\n }, (err) => {\\r\\n res.statusCode = 403;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n const msg = err.driver ? \\\"Duplicate Key\\\" : err._message;\\r\\n res.json({ success: false, message: msg });\\r\\n })\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst deleteAllVisitingPlaces = (req, res, next) => {\\r\\n VisitingPlaces.remove({})\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json(resp);\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nexports.getAllVisitingPlaces = getAllVisitingPlaces;\\r\\nexports.getAllVisitingPlacesByName = getAllVisitingPlacesByName;\\r\\nexports.addVisitingPlace = addVisitingPlace;\\r\\nexports.deleteAllVisitingPlaces = deleteAllVisitingPlaces;\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Visiting Place Operations Specified by ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nconst getVisitingPlaceDetailsById = (req, res, next) => {\\r\\n VisitingPlaces.findById(req.params.visitingPlaceId)\\r\\n .then((visitingPlace) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, visitingPlace: visitingPlace });\\r\\n }, (err) => {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: \\\"Could not find the place\\\" });\\r\\n })\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst updateVisitingPlaceDetailsById = (req, res, next) => {\\r\\n VisitingPlaces.findByIdAndUpdate(req.params.visitingPlaceId, {\\r\\n $set: req.body\\r\\n }, { new: true })\\r\\n .then((visitingPlace) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, visitingPlace: visitingPlace });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst deleteAVisitingPlaceById = (req, res, next) => {\\r\\n VisitingPlaces.findByIdAndRemove(req.params.visitingPlaceId)\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, response: resp });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nexports.getVisitingPlaceDetailsById = getVisitingPlaceDetailsById;\\r\\nexports.updateVisitingPlaceDetailsById = updateVisitingPlaceDetailsById;\\r\\nexports.deleteAVisitingPlaceById = deleteAVisitingPlaceById;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/ee/placeController_ee3a20e34d4d356553af723b6f7f6a6e.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2540\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\placeController.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":18578,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":18575,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"getAllVisitingPlaces\",\"ranges\":[{\"startOffset\":403,\"endOffset\":782,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getAllVisitingPlacesByName\",\"ranges\":[{\"startOffset\":820,\"endOffset\":1339,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"addVisitingPlace\",\"ranges\":[{\"startOffset\":1367,\"endOffset\":2276,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"deleteAllVisitingPlaces\",\"ranges\":[{\"startOffset\":2311,\"endOffset\":2526,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getVisitingPlaceDetailsById\",\"ranges\":[{\"startOffset\":3026,\"endOffset\":3499,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"updateVisitingPlaceDetailsById\",\"ranges\":[{\"startOffset\":3541,\"endOffset\":3906,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"deleteAVisitingPlaceById\",\"ranges\":[{\"startOffset\":3942,\"endOffset\":4237,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const express = require('express');\\n\\nconst bodyParser = require('body-parser');\\n\\nconst cors = require('./cors');\\n\\nconst {\\n checkSchema\\n} = require('express-validator');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nvar validationRules = require('../middleware/validation');\\n\\nconst scheduleController = require('../controllers/scheduleController');\\n\\nconst scheduleRouter = express.Router();\\nscheduleRouter.use(bodyParser.json()); // **********************************************************************************\\n// \\n// Schedule Routes\\n// \\n// **********************************************************************************\\n\\nscheduleRouter.route('/').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, scheduleController.getAllSchedules).post(cors.corsWithOptions, authenticate.verifyUser, scheduleController.addSchedule).put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('PUT operation not supported on /schedules');\\n}).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, scheduleController.deleteAllSchedules); // **********************************************************************************\\n// \\n// Schedule Routes On ID\\n// \\n// **********************************************************************************\\n\\nscheduleRouter.route('/:scheduleId').options(cors.corsWithOptions, authenticate.verifyUser, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, scheduleController.getScheduleDetailsById).post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('POST operation not supported on /schedules/' + req.params.scheduleId);\\n}).put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, scheduleController.updateScheduleById).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, scheduleController.deleteScheduleById);\\nscheduleRouter.route('/user/:userId').options(cors.corsWithOptions, authenticate.verifyUser, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, scheduleController.getAllSchedulesForAUser);\\nmodule.exports = scheduleRouter;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNjaGVkdWxlUm91dGVyLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwiYm9keVBhcnNlciIsImNvcnMiLCJjaGVja1NjaGVtYSIsImF1dGhlbnRpY2F0ZSIsInZhbGlkYXRpb25SdWxlcyIsInNjaGVkdWxlQ29udHJvbGxlciIsInNjaGVkdWxlUm91dGVyIiwiUm91dGVyIiwidXNlIiwianNvbiIsInJvdXRlIiwib3B0aW9ucyIsImNvcnNXaXRoT3B0aW9ucyIsInJlcSIsInJlcyIsInNlbmRTdGF0dXMiLCJnZXQiLCJ2ZXJpZnlVc2VyIiwiZ2V0QWxsU2NoZWR1bGVzIiwicG9zdCIsImFkZFNjaGVkdWxlIiwicHV0IiwidmVyaWZ5TW9kZXJhdGVyIiwibmV4dCIsInN0YXR1c0NvZGUiLCJlbmQiLCJkZWxldGUiLCJ2ZXJpZnlBZG1pbiIsImRlbGV0ZUFsbFNjaGVkdWxlcyIsImdldFNjaGVkdWxlRGV0YWlsc0J5SWQiLCJwYXJhbXMiLCJzY2hlZHVsZUlkIiwidXBkYXRlU2NoZWR1bGVCeUlkIiwiZGVsZXRlU2NoZWR1bGVCeUlkIiwiZ2V0QWxsU2NoZWR1bGVzRm9yQVVzZXIiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxPQUFPLEdBQUdDLE9BQU8sQ0FBQyxTQUFELENBQXZCOztBQUNBLE1BQU1DLFVBQVUsR0FBR0QsT0FBTyxDQUFDLGFBQUQsQ0FBMUI7O0FBRUEsTUFBTUUsSUFBSSxHQUFHRixPQUFPLENBQUMsUUFBRCxDQUFwQjs7QUFDQSxNQUFNO0FBQUVHLEVBQUFBO0FBQUYsSUFBa0JILE9BQU8sQ0FBQyxtQkFBRCxDQUEvQjs7QUFDQSxJQUFJSSxZQUFZLEdBQUdKLE9BQU8sQ0FBQyw0QkFBRCxDQUExQjs7QUFDQSxJQUFJSyxlQUFlLEdBQUdMLE9BQU8sQ0FBQywwQkFBRCxDQUE3Qjs7QUFDQSxNQUFNTSxrQkFBa0IsR0FBR04sT0FBTyxDQUFDLG1DQUFELENBQWxDOztBQUVBLE1BQU1PLGNB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T0FBUCxHQUFpQjlCLGNBQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZXhwcmVzcyA9IHJlcXVpcmUoJ2V4cHJlc3MnKTtcclxuY29uc3QgYm9keVBhcnNlciA9IHJlcXVpcmUoJ2JvZHktcGFyc2VyJyk7XHJcblxyXG5jb25zdCBjb3JzID0gcmVxdWlyZSgnLi9jb3JzJyk7XHJcbmNvbnN0IHsgY2hlY2tTY2hlbWEgfSA9IHJlcXVpcmUoJ2V4cHJlc3MtdmFsaWRhdG9yJyk7XHJcbnZhciBhdXRoZW50aWNhdGUgPSByZXF1aXJlKCcuLi9taWRkbGV3YXJlL2F1dGhlbnRpY2F0ZScpO1xyXG52YXIgdmFsaWRhdGlvblJ1bGVzID0gcmVxdWlyZSgnLi4vbWlkZGxld2FyZS92YWxpZGF0aW9uJyk7XHJcbmNvbnN0IHNjaGVkdWxlQ29udHJvbGxlciA9IHJlcXVpcmUoJy4uL2NvbnRyb2xsZXJzL3NjaGVkdWxlQ29udHJvbGxlcicpXHJcblxyXG5jb25zdCBzY2hlZHVsZVJvdXRlciA9IGV4cHJlc3MuUm91dGVyKCk7XHJcblxyXG5zY2hlZHVsZVJvdXRlci51c2UoYm9keVBhcnNlci5qc29uKCkpO1xyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbi8vIFxyXG4vLyAgICAgICAgICAgICAgU2NoZWR1bGUgUm91dGVzXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG5zY2hlZHVsZVJvdXRlci5yb3V0ZSgnLycpXHJcbiAgICAub3B0aW9ucyhjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcbiAgICAuZ2V0KGNvcnMuY29ycywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsICBzY2hlZHVsZUNvbnRyb2xsZXIuZ2V0QWxsU2NoZWR1bGVzKVxyXG4gICAgLnBvc3QoY29ycy5jb3JzV2l0aE9wdGlvbnMsYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsICBzY2hlZHVsZUNvbnRyb2xsZXIuYWRkU2NoZWR1bGUpXHJcbiAgICAucHV0KGNvcnMuY29yc1dpdGhPcHRpb25zLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeU1vZGVyYXRlciwgKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgcmVzLmVuZCgnUFVUIG9wZXJhdGlvbiBub3Qgc3VwcG9ydGVkIG9uIC9zY2hlZHVsZXMnKTtcclxuICAgIH0pXHJcbiAgICAuZGVsZXRlKGNvcnMuY29yc1dpdGhPcHRpb25zLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeUFkbWluLCBzY2hlZHVsZUNvbnRyb2xsZXIuZGVsZXRlQWxsU2NoZWR1bGVzKTtcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuLy8gXHJcbi8vICAgICAgICAgICAgICBTY2hlZHVsZSBSb3V0ZXMgT24gSURcclxuLy8gXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbnNjaGVkdWxlUm91dGVyLnJvdXRlKCcvOnNjaGVkdWxlSWQnKVxyXG4gICAgLm9wdGlvbnMoY29ycy5jb3JzV2l0aE9wdGlvbnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCAocmVxLCByZXMpID0+IHsgcmVzLnNlbmRTdGF0dXMoMjAwKTsgfSlcclxuICAgIC5nZXQoY29ycy5jb3JzLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgc2NoZWR1bGVDb250cm9sbGVyLmdldFNjaGVkdWxlRGV0YWlsc0J5SWQpXHJcbiAgICAucG9zdChjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgcmVzLmVuZCgnUE9TVCBvcGVyYXRpb24gbm90IHN1cHBvcnRlZCBvbiAvc2NoZWR1bGVzLycgKyByZXEucGFyYW1zLnNjaGVkdWxlSWQpO1xyXG4gICAgfSlcclxuICAgIC5wdXQoY29ycy5jb3JzV2l0aE9wdGlvbnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCBhdXRoZW50aWNhdGUudmVyaWZ5TW9kZXJhdGVyLCBzY2hlZHVsZUNvbnRyb2xsZXIudXBkYXRlU2NoZWR1bGVCeUlkKVxyXG4gICAgLmRlbGV0ZShjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgc2NoZWR1bGVDb250cm9sbGVyLmRlbGV0ZVNjaGVkdWxlQnlJZCk7XHJcblxyXG5zY2hlZHVsZVJvdXRlci5yb3V0ZSgnL3VzZXIvOnVzZXJJZCcpXHJcbiAgICAub3B0aW9ucyhjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIChyZXEsIHJlcykgPT4geyByZXMuc2VuZFN0YXR1cygyMDApOyB9KVxyXG4gICAgLmdldChjb3JzLmNvcnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCAgc2NoZWR1bGVDb250cm9sbGVyLmdldEFsbFNjaGVkdWxlc0ZvckFVc2VyKTtcclxuXHJcbm1vZHVsZS5leHBvcnRzID0gc2NoZWR1bGVSb3V0ZXI7Il19\",\"originalCode\":\"const express = require('express');\\r\\nconst bodyParser = require('body-parser');\\r\\n\\r\\nconst cors = require('./cors');\\r\\nconst { checkSchema } = require('express-validator');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\nvar validationRules = require('../middleware/validation');\\r\\nconst scheduleController = require('../controllers/scheduleController')\\r\\n\\r\\nconst scheduleRouter = express.Router();\\r\\n\\r\\nscheduleRouter.use(bodyParser.json());\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Schedule Routes\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nscheduleRouter.route('/')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, scheduleController.getAllSchedules)\\r\\n .post(cors.corsWithOptions,authenticate.verifyUser, scheduleController.addSchedule)\\r\\n .put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('PUT operation not supported on /schedules');\\r\\n })\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, scheduleController.deleteAllSchedules);\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Schedule Routes On ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nscheduleRouter.route('/:scheduleId')\\r\\n .options(cors.corsWithOptions, authenticate.verifyUser, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, scheduleController.getScheduleDetailsById)\\r\\n .post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('POST operation not supported on /schedules/' + req.params.scheduleId);\\r\\n })\\r\\n .put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, scheduleController.updateScheduleById)\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, scheduleController.deleteScheduleById);\\r\\n\\r\\nscheduleRouter.route('/user/:userId')\\r\\n .options(cors.corsWithOptions, authenticate.verifyUser, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, scheduleController.getAllSchedulesForAUser);\\r\\n\\r\\nmodule.exports = scheduleRouter;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/9b/scheduleRouter_9b57edc7078385d142c957dea9d9e0be.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2541\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\scheduleRouter.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":9621,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":9618,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":802,\"endOffset\":842,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1085,\"endOffset\":1188,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1621,\"endOffset\":1661,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1824,\"endOffset\":1953,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":2288,\"endOffset\":2328,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const Schedules = require('../models/schedules'); // **********************************************************************************\\n// \\n// Schedule Operations \\n// \\n// **********************************************************************************\\n\\n\\nconst getAllSchedules = (req, res, next) => {\\n Schedules.find(req.query).populate(\\\"place\\\").populate(\\\"user\\\").then(schedules => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n schedules: schedules\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst getAllSchedulesForAUser = (req, res, next) => {\\n var query = {\\n \\\"user\\\": String(req.params.userId)\\n };\\n Schedules.find(query).populate(\\\"place\\\").then(schedules => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n schedules: schedules\\n });\\n }, err => {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n const msg = err._message;\\n res.json({\\n success: false,\\n message: msg\\n });\\n }).catch(err => {\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: \\\"Failed to get data\\\"\\n });\\n });\\n};\\n\\nconst addSchedule = (req, res, next) => {\\n var schedule = {\\n user: req.body.user,\\n place: req.body.place,\\n date: req.body.date,\\n state: \\\"new\\\",\\n travellingMethod: req.body.travellingMethod\\n };\\n Schedules.create(schedule).then(schedule => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n schedule: schedule\\n });\\n }, err => {\\n res.statusCode = 403;\\n res.setHeader('Content-Type', 'application/json');\\n const msg = err._message;\\n res.json({\\n success: false,\\n message: msg\\n });\\n }).catch(err => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: \\\"Failed to add a schedule\\\"\\n });\\n });\\n};\\n\\nconst deleteAllSchedules = (req, res, next) => {\\n Schedules.remove({}).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json(resp);\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nexports.getAllSchedules = getAllSchedules;\\nexports.addSchedule = addSchedule;\\nexports.deleteAllSchedules = deleteAllSchedules;\\nexports.getAllSchedulesForAUser = getAllSchedulesForAUser; // **********************************************************************************\\n// \\n// Schedule Operations Specified by ID\\n// \\n// **********************************************************************************\\n\\nconst getScheduleDetailsById = (req, res, next) => {\\n Schedules.findById(req.params.scheduleId).then(schedule => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n schedule: schedule\\n });\\n }, err => {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: \\\"Could not find the place\\\"\\n });\\n }).catch(err => next(err));\\n};\\n\\nconst updateScheduleById = (req, res, next) => {\\n Schedules.findByIdAndUpdate(req.params.scheduleId, {\\n $set: req.body\\n }, {\\n new: true\\n }).then(schedule => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n schedule: schedule\\n });\\n }, err => next(err)).catch(err => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: \\\"Update failed\\\"\\n });\\n });\\n};\\n\\nconst deleteScheduleById = (req, res, next) => {\\n Schedules.findByIdAndRemove(req.params.scheduleId).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n response: resp\\n });\\n }, err => next(err)).catch(err => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: \\\"Delete failed\\\"\\n });\\n });\\n};\\n\\nexports.getScheduleDetailsById = getScheduleDetailsById;\\nexports.updateScheduleById = updateScheduleById;\\nexports.deleteScheduleById = deleteScheduleById; // **********************************************************************************\\n// \\n// Schedule Operations Specified by UserID\\n// \\n// **********************************************************************************\\n// const getScheduleDetailsByUserId = (req, res, next) => {\\n// Schedules.findById(req.params.scheduleId)\\n// .then((schedule) => {\\n// res.statusCode = 200;\\n// res.setHeader('Content-Type', 'application/json');\\n// res.json(schedule);\\n// }, (err) => next(err))\\n// .catch((err) => next(err));\\n// }\\n// const updateScheduleByUserId = (req, res, next) => {\\n// Schedules.findByIdAndUpdate(req.params.scheduleId, {\\n// $set: req.body\\n// }, { new: true })\\n// .then((schedule) => {\\n// res.statusCode = 200;\\n// res.setHeader('Content-Type', 'application/json');\\n// res.json(schedule);\\n// }, (err) => next(err))\\n// .catch((err) => next(err));\\n// }\\n// const deleteScheduleByUserId = (req, res, next) => {\\n// Schedules.findByIdAndRemove(req.params.scheduleId)\\n// .then((resp) => {\\n// res.statusCode = 200;\\n// res.setHeader('Content-Type', 'application/json');\\n// res.json(resp);\\n// }, (err) => next(err))\\n// .catch((err) => next(err));\\n// }\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNjaGVkdWxlQ29udHJvbGxlci5qcyJdLCJuYW1lcyI6WyJTY2hlZHVsZXMiLCJyZXF1aXJlIiwiZ2V0QWxsU2NoZWR1bGVzIiwicmVxIiwicmVzIiwibmV4dCIsImZpbmQiLCJxdWVyeSIsInBvcHVsYXRlIiwidGhlbiIsInNjaGVkdWxlcyIsInN0YXR1c0NvZGUiLCJzZXRIZWFkZXIiLCJqc29uIiwic3VjY2VzcyIsImVyciIsImNhdGNoIiwiZ2V0QWxsU2NoZWR1bGVzRm9yQVVzZXIiLCJTdHJpbmciLCJwYXJhbXMiLCJ1c2VySWQiLCJtc2ciLCJfbWVzc2FnZSIsIm1lc3NhZ2UiLCJhZGRTY2hlZHVsZSIsInNjaGVkdWxlIiwidXNlciIsImJvZHkiLCJwbGFjZSIsImRhdGUiLCJzdGF0ZSIsInRyYXZlbGxpbmdNZXRob2QiLCJjcmVhdGUiLCJkZWxldGVBbGxTY2hlZHVsZXMiLCJyZW1vdmUiLCJyZXNwIiwiZXhwb3J0cyIsImdldFNjaGVkdWxlRGV0YWlsc0J5SWQiLCJmaW5kQnlJZCIsInNjaGVkdWxlSWQiLCJ1cGRhdGVTY2hlZHVsZUJ5SWQiLCJmaW5kQnlJZEFuZFVwZGF0ZSIsIiRzZXQiLCJuZXciLCJkZWxldGVTY2hlZHVsZUJ5SWQiLCJmaW5kQnlJZEFuZFJlbW92ZSIsInJlc3BvbnNlIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxTQUFTLEdBQUdDLE9BQU8sQ0FBQyxxQkFBRCxDQUF6QixDLENBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUEsTUFBTUMsZUFBZSxHQUFHLENBQUNDLEdBQUQsRUFBTUMsR0FBTixFQUFXQyxJQUFYLEtBQW9CO0FBQ3hDTCxFQUFBQSxTQUFTLENBQUNNLElBQVYsQ0FBZUgsR0FBRyxDQUFDSSxLQUFuQixFQUEwQkMsUUFBMUIsQ0FBbUMsT0FBbkMsRUFBNENBLFFBQTVDLENBQXFELE1BQXJELEVBQ0tDLElBREwsQ0FDV0MsU0FBRCxJQUFlO0FBQ2pCTixJQUFBQSxHQUFHLENBQUNPLFVBQUosR0FBaUIsR0FBakI7QUFDQVAsSUFBQUEsR0FBRyxDQUFDUSxTQUFKLENBQWMsY0FBZCxFQUE4QixrQkFBOUI7QUFDQVIsSUFBQUEsR0FBRyxDQUFDUyxJQUFKLENBQVM7QUFBRUMsTUFBQUEsT0FBTyxFQUFFLElBQVg7QUFBaUJKLE1BQUFBLFNBQVMsRUFBQ0E7QUFBM0IsS0FBVDtBQUNILEdBTEwsRUFLUUssR0FBRCxJQUFTVixJQUFJLENBQUNVLEdBQUQsQ0FMcEIsRUFNS0MsS0FOTCxDQU1ZRCxHQUFELElBQVNWLElBQUksQ0FBQ1UsR0FBRCxDQU54QjtBQU9ILENBUkQ7O0FBVUEsTUFBTUUsdUJBQXVCLEdBQUcsQ0FBQ2QsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDaEQsTUFBSUUsS0FBSyxHQUFHO0FBQUUsWUFBUVcsTUFBTSxDQUFDZixHQUFHLENBQUNnQixNQUFKLENBQVdDLE1BQVo7QUFBaEIsR0FBWjtBQUNBcEIsRUFBQUEsU0FBUyxDQUFDTSxJQUFWLENBQWVDLEtBQWYsRUFBc0JDLFFBQXRCLENBQStCLE9BQS9CLEVBQ0tDLElBREwsQ0FDV0MsU0FBRCxJQUFlO0FBQ2pCTixJQUFBQSxHQUFHLENBQUNPLFVBQUosR0FBaUIsR0FBakI7QUFDQVAsSUFBQUEsR0FBRyxDQUFDUSxTQUFKLENBQWMsY0FBZCxFQUE4QixrQkFBOUI7QUFDQVIsSUFBQUEsR0FBRyxDQUFDUyxJQUFKLENBQVM7QUFBRUMsTUFBQUEsT0FBTyxFQUFFLElBQVg7QUFBaUJKLE1BQUFBLFNBQVMsRUFBQ0E7QUFBM0IsS0FBVDtBQUNILEdBTEwsRUFLUUssR0FBRCxJQUFVO0FBQ1RYLElBQUFBLEdBQUcsQ0FBQ08sVUFBSixHQUFpQixHQUFqQjtBQUNBUCxJQUFBQSxHQUFHLENBQUNRLFNBQUosQ0FBYyxjQUFkLEVBQThCLGtCQUE5QjtBQUNBLFVBQU1TLEdBQUcsR0FBR04sR0FBRyxDQUFDTyxRQUFoQjtBQUNBbEIsSUFBQUEsR0FBRyxDQUFDUyxJQUFKLENBQVM7QUFBRUMsTUFBQUEsT0FBTyxFQUFFLEtBQVg7QUFBa0JTLE1BQUFBLE9BQU8sRUFBRUY7QUFBM0IsS0FBVDtBQUNILEdBVkwsRUFXS0wsS0FYTCxDQVdZRCxHQUFELElBQVM7QUFDWlgsSUFBQUEsR0FBRyxDQUFDTyxVQUFKLEdBQWlCLEdBQWpCO0FBQ0FQLElBQUFBLEdBQUcsQ0FBQ1EsU0FBSixDQUFjLGNBQWQsRUFBOEIsa0JBQTlCO0FBQ0FSLElBQUFBLEdBQUcsQ0FBQ1MsSUFBSixDQUFTO0FBQUVDLE1BQUFBLE9BQU8sRUFBRSxLQUFYO0FBQWtCUyxNQUFBQSxPQUFPLEVBQUU7QUFBM0IsS0FBVDtBQUNILEdBZkw7QUFnQkgsQ0FsQkQ7O0FBb0JBLE1BQU1DLFdBQVcsR0FBRyxDQUFDckIsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDcEMsTUFBSW9CLFFBQVEsR0FBRztBQUNYQyxJQUFBQSxJQUFJLEVBQUV2QixHQUFHLENBQUN3QixJQUFKLENBQVNELElBREo7QUFFWEUsSUFBQUEsS0FBSyxFQUFFekIsR0FBRyxDQUFDd0IsSUFBSixDQUFTQyxLQUZMO0FBR1hDLElBQUFBLElBQUksRUFBRTFCLEdBQUcsQ0FBQ3dCLElBQUosQ0FBU0UsSUFISjtBQUlYQyxJQUFBQSxLQUFLLEVBQUUsS0FKSTtBQUtYQyxJQUFBQSxnQkFBZ0IsRUFBRTVCLEdBQUcsQ0FBQ3dCLElBQUosQ0FBU0k7QUFMaEIsR0FBZjtBQU9BL0IsRUFBQUEsU0FBUyxDQUFDZ0MsTUFBVixDQUFpQlAsUUFBakIsRUFDS2hCLElBREwsQ0FDV2dCLFFBQUQsSUFBYztBQUNoQnJCLElBQUFBLEdBQUcsQ0FBQ08sVUFBSixHQUFpQixHQUFqQjtBQUNBUCxJQUFBQSxHQUFHLENBQUNRLFNBQUosQ0FBYyxjQUFkLEVBQThCLGtCQUE5QjtBQUNBUixJQUFBQSxHQUFHLENBQUNTLElBQUosQ0FBUztBQUFFQyxNQUFBQSxPQUFPLEVBQUUsSUFBWDtBQUFpQlcsTUFBQUEsUUFBUSxFQUFDQTtBQUExQixLQUFUO0FBQ0gsR0FMTCxFQUtRVixHQUFELElBQVM7QUFDUlgsSUFBQUEsR0FBRyxDQUFDTyxVQUFKLEdBQWlCLEdBQWpCO0FBQ0FQLElBQUFBLEdBQUcsQ0FBQ1EsU0FBSixDQUFjLGNBQWQsRUFBOEIsa0JBQTlCO0FBQ0EsVUFBTVMsR0FBRyxHQUFHTixHQUFHLENBQUNPLFFBQWhCO0FBQ0FsQixJQUFBQSxHQUFHLENBQUNTLElBQUosQ0FBUztBQUFFQyxNQUFBQSxPQUFPLEVBQUUsS0FBWDtBQUFrQlMsTUFBQUEsT0FBTyxFQUFFRjtBQUEzQixLQUFUO0FBQ0gsR0FWTCxFQVdLTCxLQVhMLENBV1lELEdBQUQsSUFBUztBQUNaWCxJQUFBQSxHQUFHLENBQUNPLFVBQUosR0FBaUIsR0FBakI7QUFDQVAsSUFBQUEsR0FBRyxDQUFDUSxTQUFKLENBQWMsY0FBZCxFQUE4QixrQkFBOUI7QUFDQVIsSUFBQUEsR0FBRyxDQUFDUyxJQUFKLENBQVM7QUFBRUMsTUFBQUEsT0FBTyxFQUFFLEtBQVg7QUFBa0JTLE1BQUFBLE9BQU8sRUFBRTtBQUEzQixLQUFUO0FBQ0gsR0FmTDtBQWdCSCxDQXhCRDs7QUEwQkEsTUFBTVUsa0JBQWtCLEdBQUcsQ0FBQzlCLEdBQUQsRUFBTUMsR0FBTixFQUFXQyxJQUFYLEtBQW9CO0FBQzNDTCxFQUFBQSxTQUFTLENBQUNrQyxNQUFWLENBQWlCLEVBQWpCLEVBQ0t6QixJQURMLENBQ1cwQixJQUFELElBQVU7QUFDWi9CLElBQUFBLEdBQUcsQ0FBQ08sVUFBSixHQUFpQixHQUFqQjtBQUNBUCxJQUFBQSxHQUFHLENBQUNRLFNBQUosQ0FBYyxjQUFkLEVBQThCLGtCQUE5QjtBQUNBUixJQUFBQSxHQUFHLENBQUNTLElBQUosQ0FBU3NCLElBQVQ7QUFDSCxHQUxMLEVBS1FwQixHQUFELElBQVNWLElBQUksQ0FBQ1UsR0FBRCxDQUxwQixFQU1LQyxLQU5MLENBTVlELEdBQUQsSUFBU1YsSUFBSSxDQUFDVSxHQUFELENBTnhCO0FBT0gsQ0FSRDs7QUFVQXFCLE9BQU8sQ0FBQ2xDLGVBQVIsR0FBMEJBLGVBQTFCO0FBQ0FrQyxPQUFPLENBQUNaLFdBQVIsR0FBc0JBLFdBQXRCO0FBQ0FZLE9BQU8sQ0FBQ0gsa0JBQVIsR0FBNkJBLGtCQUE3QjtBQUNBRyxPQUFPLENBQUNuQix1QkFBUixHQUFrQ0EsdUJBQWxDLEMsQ0FFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLE1BQU1vQixzQkFBc0IsR0FBRyxDQUFDbEMsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDL0NMLEVBQUFBLFNBQVMsQ0FBQ3NDLFFBQVYsQ0FBbUJuQyxHQUFHLENBQUNnQixNQUFKLENBQVdvQixVQUE5QixFQUNLOUIsSUFETCxDQUNXZ0IsUUFBRCxJQUFjO0FBQ2hCckIsSUFBQUEsR0FBRyxDQUFDTyxVQUFKLEdBQWlCLEdBQWpCO0FBQ0FQLElBQUFBLEdBQUcsQ0FBQ1EsU0FBSixDQUFjLGNBQWQsRUFBOEIsa0JBQTlCO0FBQ0FSLElBQUFBLEdBQUcsQ0FBQ1MsSUFBSixDQUFTO0FBQUVDLE1BQUFBLE9BQU8sRUFBRSxJQUFYO0FBQWlCVyxNQUFBQSxRQUFRLEVBQUNBO0FBQTFCLEtBQVQ7QUFDSCxHQUxMLEVBS1NWLEdBQUQsSUFBUztBQUNUWCxJQUFBQSxHQUFHLENBQUNPLFVBQUosR0FBaUIsR0FBakI7QUFDQVAsSUFBQUEsR0FBRyxDQUFDUSxTQUFKLENBQWMsY0FBZCxFQUE4QixrQkFBOUI7QUFDQVIsSUFBQUEsR0FBRyxDQUFDUyxJQUFKLENBQVM7QUFBRUMsTUFBQUEsT0FBTyxFQUFFLEtBQVg7QUFBa0JTLE1BQUFBLE9BQU8sRUFBRTtBQUEzQixLQUFUO0FBQ0gsR0FUTCxFQVVLUCxLQVZMLENBVVlELEdBQUQsSUFBU1YsSUFBSSxDQUFDVSxHQUFELENBVnhCO0FBV0gsQ0FaRDs7QUFjQSxNQUFNeUIsa0JBQWtCLEdBQUcsQ0FBQ3JDLEdBQUQsRUFBTUMsR0FBTixFQUFXQyxJQUFYLEtBQW9CO0FBQzNDTCxFQUFBQSxTQUFTLENBQUN5QyxpQkFBVixDQUE0QnRDLEdBQUcsQ0FBQ2dCLE1BQUosQ0FBV29CLFVBQXZDLEVBQW1EO0FBQy9DRyxJQUFBQSxJQUFJLEVBQUV2QyxHQUFHLENBQUN3QjtBQURxQyxHQUFuRCxFQUVHO0FBQUVnQixJQUFBQSxHQUFHLEVBQUU7QUFBUCxHQUZILEVBR0tsQyxJQUhMLENBR1dnQixRQUFELElBQWM7QUFDaEJyQixJQUFBQSxHQUFHLENBQUNPLFVBQUosR0FBaUIsR0FBakI7QUFDQVAsSUFBQUEsR0FBRyxDQUFDUSxTQUFKLENBQWMsY0FBZCxFQUE4QixrQkFBOUI7QUFDQVIsSUFBQUEsR0FBRyxDQUFDUyxJQUFKLENBQVM7QUFBRUMsTUFBQUEsT0FBTyxFQUFFLElBQVg7QUFBaUJXLE1BQUFBLFFBQVEsRUFBQ0E7QUFBMUIsS0FBVDtBQUNILEdBUEwsRUFPUVYsR0FBRCxJQUFTVixJQUFJLENBQUNVLEdBQUQsQ0FQcEIsRUFRS0MsS0FSTCxDQVFZRCxHQUFELElBQVM7QUFDWlgsSUFBQUEsR0FBRyxDQUFDTyxVQUFKLEdBQWlCLEdBQWpCO0FBQ0FQLElBQUFBLEdBQUcsQ0FBQ1EsU0FBSixDQUFjLGNBQWQsRUFBOEIsa0JBQTlCO0FBQ0FSLElBQUFBLEdBQUcsQ0FBQ1MsSUFBSixDQUFTO0FBQUVDLE1BQUFBLE9BQU8sRUFBRSxLQUFYO0FBQWtCUyxNQUFBQSxPQUFPLEVBQUU7QUFBM0IsS0FBVDtBQUNILEdBWkw7QUFhSCxDQWREOztBQWdCQSxNQUFNcUIsa0JBQWtCLEdBQUcsQ0FBQ3pDLEdBQUQsRUFBTUMsR0FBTixFQUFXQyxJQUFYLEtBQW9CO0FBQzNDTCxFQUFBQSxTQUFTLENBQUM2QyxpQkFBVixDQUE0QjFDLEdBQUcsQ0FBQ2dCLE1BQUosQ0FBV29CLFVBQXZDLEVBQ0s5QixJQURMLENBQ1cwQixJQUFELElBQVU7QUFDWi9CLElBQUFBLEdBQUcsQ0FBQ08sVUFBSixHQUFpQixHQUFqQjtBQUNBUCxJQUFBQSxHQUFHLENBQUNRLFNBQUosQ0FBYyxjQUFkLEVBQThCLGtCQUE5QjtBQUNBUixJQUFBQSxHQUFHLENBQUNTLElBQUosQ0FBUztBQUFFQyxNQUFBQSxPQUFPLEVBQUUsSUFBWDtBQUFpQmdDLE1BQUFBLFFBQVEsRUFBQ1g7QUFBMUIsS0FBVDtBQUNILEdBTEwsRUFLUXBCLEdBQUQsSUFBU1YsSUFBSSxDQUFDVSxHQUFELENBTHBCLEVBTUtDLEtBTkwsQ0FNWUQsR0FBRCxJQUFTO0FBQ1pYLElBQUFBLEdBQUcsQ0FBQ08sVUFBSixHQUFpQixHQUFqQjtBQUNBUCxJQUFBQSxHQUFHLENBQUNRLFNBQUosQ0FBYyxjQUFkLEVBQThCLGtCQUE5QjtBQUNBUixJQUFBQSxHQUFHLENBQUNTLElBQUosQ0FBUztBQUFFQyxNQUFBQSxPQUFPLEVBQUUsS0FBWDtBQUFrQlMsTUFBQUEsT0FBTyxFQUFFO0FBQTNCLEtBQVQ7QUFDSCxHQVZMO0FBV0gsQ0FaRDs7QUFjQWEsT0FBTyxDQUFDQyxzQkFBUixHQUFpQ0Esc0JBQWpDO0FBQ0FELE9BQU8sQ0FBQ0ksa0JBQVIsR0FBNkJBLGtCQUE3QjtBQUNBSixPQUFPLENBQUNRLGtCQUFSLEdBQTZCQSxrQkFBN0IsQyxDQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgU2NoZWR1bGVzID0gcmVxdWlyZSgnLi4vbW9kZWxzL3NjaGVkdWxlcycpO1xyXG5cclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyBcclxuLy8gICAgICAgICAgICAgIFNjaGVkdWxlIE9wZXJhdGlvbnMgXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG5jb25zdCBnZXRBbGxTY2hlZHVsZXMgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIFNjaGVkdWxlcy5maW5kKHJlcS5xdWVyeSkucG9wdWxhdGUoXCJwbGFjZVwiKS5wb3B1bGF0ZShcInVzZXJcIilcclxuICAgICAgICAudGhlbigoc2NoZWR1bGVzKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHNjaGVkdWxlczpzY2hlZHVsZXMgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpO1xyXG59XHJcblxyXG5jb25zdCBnZXRBbGxTY2hlZHVsZXNGb3JBVXNlciA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgdmFyIHF1ZXJ5ID0geyBcInVzZXJcIjogU3RyaW5nKHJlcS5wYXJhbXMudXNlcklkKSB9O1xyXG4gICAgU2NoZWR1bGVzLmZpbmQocXVlcnkpLnBvcHVsYXRlKFwicGxhY2VcIilcclxuICAgICAgICAudGhlbigoc2NoZWR1bGVzKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHNjaGVkdWxlczpzY2hlZHVsZXMgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gIHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDQ7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIGNvbnN0IG1zZyA9IGVyci5fbWVzc2FnZTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogbXNnIH0pO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA1MDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogZmFsc2UsIG1lc3NhZ2U6IFwiRmFpbGVkIHRvIGdldCBkYXRhXCIgfSk7XHJcbiAgICAgICAgfSk7XHJcbn1cclxuXHJcbmNvbnN0IGFkZFNjaGVkdWxlID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICB2YXIgc2NoZWR1bGUgPSB7XHJcbiAgICAgICAgdXNlcjogcmVxLmJvZHkudXNlcixcclxuICAgICAgICBwbGFjZTogcmVxLmJvZHkucGxhY2UsXHJcbiAgICAgICAgZGF0ZTogcmVxLmJvZHkuZGF0ZSxcclxuICAgICAgICBzdGF0ZTogXCJuZXdcIixcclxuICAgICAgICB0cmF2ZWxsaW5nTWV0aG9kOiByZXEuYm9keS50cmF2ZWxsaW5nTWV0aG9kXHJcbiAgICB9XHJcbiAgICBTY2hlZHVsZXMuY3JlYXRlKHNjaGVkdWxlKVxyXG4gICAgICAgIC50aGVuKChzY2hlZHVsZSkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCBzY2hlZHVsZTpzY2hlZHVsZSB9KTtcclxuICAgICAgICB9LCAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNDAzO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICBjb25zdCBtc2cgPSBlcnIuX21lc3NhZ2U7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogZmFsc2UsIG1lc3NhZ2U6IG1zZyB9KTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IGZhbHNlLCBtZXNzYWdlOiBcIkZhaWxlZCB0byBhZGQgYSBzY2hlZHVsZVwiIH0pO1xyXG4gICAgICAgIH0pO1xyXG59XHJcblxyXG5jb25zdCBkZWxldGVBbGxTY2hlZHVsZXMgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIFNjaGVkdWxlcy5yZW1vdmUoe30pXHJcbiAgICAgICAgLnRoZW4oKHJlc3ApID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHJlc3ApO1xyXG4gICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuZXhwb3J0cy5nZXRBbGxTY2hlZHVsZXMgPSBnZXRBbGxTY2hlZHVsZXM7XHJcbmV4cG9ydHMuYWRkU2NoZWR1bGUgPSBhZGRTY2hlZHVsZTtcclxuZXhwb3J0cy5kZWxldGVBbGxTY2hlZHVsZXMgPSBkZWxldGVBbGxTY2hlZHVsZXM7XHJcbmV4cG9ydHMuZ2V0QWxsU2NoZWR1bGVzRm9yQVVzZXIgPSBnZXRBbGxTY2hlZHVsZXNGb3JBVXNlcjtcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuLy8gXHJcbi8vICAgICAgICAgICAgICBTY2hlZHVsZSBPcGVyYXRpb25zIFNwZWNpZmllZCBieSBJRFxyXG4vLyBcclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuY29uc3QgZ2V0U2NoZWR1bGVEZXRhaWxzQnlJZCA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgU2NoZWR1bGVzLmZpbmRCeUlkKHJlcS5wYXJhbXMuc2NoZWR1bGVJZClcclxuICAgICAgICAudGhlbigoc2NoZWR1bGUpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgc2NoZWR1bGU6c2NoZWR1bGUgfSk7XHJcbiAgICAgICAgfSwgIChlcnIpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDQ7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogZmFsc2UsIG1lc3NhZ2U6IFwiQ291bGQgbm90IGZpbmQgdGhlIHBsYWNlXCIgfSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuY29uc3QgdXBkYXRlU2NoZWR1bGVCeUlkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICBTY2hlZHVsZXMuZmluZEJ5SWRBbmRVcGRhdGUocmVxLnBhcmFtcy5zY2hlZHVsZUlkLCB7XHJcbiAgICAgICAgJHNldDogcmVxLmJvZHlcclxuICAgIH0sIHsgbmV3OiB0cnVlIH0pXHJcbiAgICAgICAgLnRoZW4oKHNjaGVkdWxlKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHNjaGVkdWxlOnNjaGVkdWxlIH0pO1xyXG4gICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogXCJVcGRhdGUgZmFpbGVkXCIgfSk7XHJcbiAgICAgICAgfSk7XHJcbn1cclxuXHJcbmNvbnN0IGRlbGV0ZVNjaGVkdWxlQnlJZCA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgU2NoZWR1bGVzLmZpbmRCeUlkQW5kUmVtb3ZlKHJlcS5wYXJhbXMuc2NoZWR1bGVJZClcclxuICAgICAgICAudGhlbigocmVzcCkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCByZXNwb25zZTpyZXNwIH0pO1xyXG4gICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogXCJEZWxldGUgZmFpbGVkXCIgfSk7XHJcbiAgICAgICAgfSk7XHJcbn1cclxuXHJcbmV4cG9ydHMuZ2V0U2NoZWR1bGVEZXRhaWxzQnlJZCA9IGdldFNjaGVkdWxlRGV0YWlsc0J5SWQ7XHJcbmV4cG9ydHMudXBkYXRlU2NoZWR1bGVCeUlkID0gdXBkYXRlU2NoZWR1bGVCeUlkO1xyXG5leHBvcnRzLmRlbGV0ZVNjaGVkdWxlQnlJZCA9IGRlbGV0ZVNjaGVkdWxlQnlJZDtcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuLy8gXHJcbi8vICAgICAgICAgICAgICBTY2hlZHVsZSBPcGVyYXRpb25zIFNwZWNpZmllZCBieSBVc2VySURcclxuLy8gXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbi8vIGNvbnN0IGdldFNjaGVkdWxlRGV0YWlsc0J5VXNlcklkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbi8vICAgICBTY2hlZHVsZXMuZmluZEJ5SWQocmVxLnBhcmFtcy5zY2hlZHVsZUlkKVxyXG4vLyAgICAgICAgIC50aGVuKChzY2hlZHVsZSkgPT4ge1xyXG4vLyAgICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuLy8gICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuLy8gICAgICAgICAgICAgcmVzLmpzb24oc2NoZWR1bGUpO1xyXG4vLyAgICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuLy8gICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxuLy8gfVxyXG5cclxuLy8gY29uc3QgdXBkYXRlU2NoZWR1bGVCeVVzZXJJZCA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4vLyAgICAgU2NoZWR1bGVzLmZpbmRCeUlkQW5kVXBkYXRlKHJlcS5wYXJhbXMuc2NoZWR1bGVJZCwge1xyXG4vLyAgICAgICAgICRzZXQ6IHJlcS5ib2R5XHJcbi8vICAgICB9LCB7IG5ldzogdHJ1ZSB9KVxyXG4vLyAgICAgICAgIC50aGVuKChzY2hlZHVsZSkgPT4ge1xyXG4vLyAgICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuLy8gICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuLy8gICAgICAgICAgICAgcmVzLmpzb24oc2NoZWR1bGUpO1xyXG4vLyAgICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuLy8gICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxuLy8gfVxyXG5cclxuLy8gY29uc3QgZGVsZXRlU2NoZWR1bGVCeVVzZXJJZCA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4vLyAgICAgU2NoZWR1bGVzLmZpbmRCeUlkQW5kUmVtb3ZlKHJlcS5wYXJhbXMuc2NoZWR1bGVJZClcclxuLy8gICAgICAgICAudGhlbigocmVzcCkgPT4ge1xyXG4vLyAgICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuLy8gICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuLy8gICAgICAgICAgICAgcmVzLmpzb24ocmVzcCk7XHJcbi8vICAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4vLyAgICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpO1xyXG4vLyB9Il19\",\"originalCode\":\"const Schedules = require('../models/schedules');\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Schedule Operations \\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nconst getAllSchedules = (req, res, next) => {\\r\\n Schedules.find(req.query).populate(\\\"place\\\").populate(\\\"user\\\")\\r\\n .then((schedules) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, schedules:schedules });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst getAllSchedulesForAUser = (req, res, next) => {\\r\\n var query = { \\\"user\\\": String(req.params.userId) };\\r\\n Schedules.find(query).populate(\\\"place\\\")\\r\\n .then((schedules) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, schedules:schedules });\\r\\n }, (err) => {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n const msg = err._message;\\r\\n res.json({ success: false, message: msg });\\r\\n })\\r\\n .catch((err) => {\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: \\\"Failed to get data\\\" });\\r\\n });\\r\\n}\\r\\n\\r\\nconst addSchedule = (req, res, next) => {\\r\\n var schedule = {\\r\\n user: req.body.user,\\r\\n place: req.body.place,\\r\\n date: req.body.date,\\r\\n state: \\\"new\\\",\\r\\n travellingMethod: req.body.travellingMethod\\r\\n }\\r\\n Schedules.create(schedule)\\r\\n .then((schedule) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, schedule:schedule });\\r\\n }, (err) => {\\r\\n res.statusCode = 403;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n const msg = err._message;\\r\\n res.json({ success: false, message: msg });\\r\\n })\\r\\n .catch((err) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: \\\"Failed to add a schedule\\\" });\\r\\n });\\r\\n}\\r\\n\\r\\nconst deleteAllSchedules = (req, res, next) => {\\r\\n Schedules.remove({})\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json(resp);\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nexports.getAllSchedules = getAllSchedules;\\r\\nexports.addSchedule = addSchedule;\\r\\nexports.deleteAllSchedules = deleteAllSchedules;\\r\\nexports.getAllSchedulesForAUser = getAllSchedulesForAUser;\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Schedule Operations Specified by ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nconst getScheduleDetailsById = (req, res, next) => {\\r\\n Schedules.findById(req.params.scheduleId)\\r\\n .then((schedule) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, schedule:schedule });\\r\\n }, (err) => {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: \\\"Could not find the place\\\" });\\r\\n })\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst updateScheduleById = (req, res, next) => {\\r\\n Schedules.findByIdAndUpdate(req.params.scheduleId, {\\r\\n $set: req.body\\r\\n }, { new: true })\\r\\n .then((schedule) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, schedule:schedule });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: \\\"Update failed\\\" });\\r\\n });\\r\\n}\\r\\n\\r\\nconst deleteScheduleById = (req, res, next) => {\\r\\n Schedules.findByIdAndRemove(req.params.scheduleId)\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, response:resp });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: \\\"Delete failed\\\" });\\r\\n });\\r\\n}\\r\\n\\r\\nexports.getScheduleDetailsById = getScheduleDetailsById;\\r\\nexports.updateScheduleById = updateScheduleById;\\r\\nexports.deleteScheduleById = deleteScheduleById;\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Schedule Operations Specified by UserID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\n// const getScheduleDetailsByUserId = (req, res, next) => {\\r\\n// Schedules.findById(req.params.scheduleId)\\r\\n// .then((schedule) => {\\r\\n// res.statusCode = 200;\\r\\n// res.setHeader('Content-Type', 'application/json');\\r\\n// res.json(schedule);\\r\\n// }, (err) => next(err))\\r\\n// .catch((err) => next(err));\\r\\n// }\\r\\n\\r\\n// const updateScheduleByUserId = (req, res, next) => {\\r\\n// Schedules.findByIdAndUpdate(req.params.scheduleId, {\\r\\n// $set: req.body\\r\\n// }, { new: true })\\r\\n// .then((schedule) => {\\r\\n// res.statusCode = 200;\\r\\n// res.setHeader('Content-Type', 'application/json');\\r\\n// res.json(schedule);\\r\\n// }, (err) => next(err))\\r\\n// .catch((err) => next(err));\\r\\n// }\\r\\n\\r\\n// const deleteScheduleByUserId = (req, res, next) => {\\r\\n// Schedules.findByIdAndRemove(req.params.scheduleId)\\r\\n// .then((resp) => {\\r\\n// res.statusCode = 200;\\r\\n// res.setHeader('Content-Type', 'application/json');\\r\\n// res.json(resp);\\r\\n// }, (err) => next(err))\\r\\n// .catch((err) => next(err));\\r\\n// }\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/df/scheduleController_df2aee56329a17301dcb5de3e55455e9.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2542\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\scheduleController.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":22878,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":22875,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"getAllSchedules\",\"ranges\":[{\"startOffset\":382,\"endOffset\":688,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getAllSchedulesForAUser\",\"ranges\":[{\"startOffset\":723,\"endOffset\":1396,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"addSchedule\",\"ranges\":[{\"startOffset\":1419,\"endOffset\":2190,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"deleteAllSchedules\",\"ranges\":[{\"startOffset\":2220,\"endOffset\":2430,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getScheduleDetailsById\",\"ranges\":[{\"startOffset\":2883,\"endOffset\":3331,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"updateScheduleById\",\"ranges\":[{\"startOffset\":3361,\"endOffset\":3854,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"deleteScheduleById\",\"ranges\":[{\"startOffset\":3884,\"endOffset\":4322,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const mongoose = require('mongoose');\\n\\nconst Schema = mongoose.Schema;\\n\\nrequire('mongoose-currency').loadType(mongoose);\\n\\nconst Currency = mongoose.Types.Currency;\\nconst scheduleSchema = new Schema({\\n user: {\\n type: mongoose.Schema.Types.ObjectId,\\n ref: \\\"User\\\"\\n },\\n place: {\\n type: mongoose.Schema.Types.ObjectId,\\n ref: \\\"Place\\\"\\n },\\n date: {\\n type: Date,\\n required: true\\n },\\n fair: {\\n type: Currency,\\n min: 0\\n },\\n state: {\\n type: String,\\n default: \\\"new\\\",\\n enum: [\\\"new\\\", \\\"not-completed\\\", \\\"canceled\\\", \\\"completed\\\"]\\n },\\n travellingMethod: {\\n type: String,\\n required: true,\\n enum: ['Bus', 'Car', 'Train', 'Threewheeler', 'Foot']\\n }\\n}, {\\n timestamps: true\\n});\\nvar Schedules = mongoose.model('Schedule', scheduleSchema);\\nmodule.exports = Schedules;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNjaGVkdWxlcy5qcyJdLCJuYW1lcyI6WyJtb25nb29zZSIsInJlcXVpcmUiLCJTY2hlbWEiLCJsb2FkVHlwZSIsIkN1cnJlbmN5IiwiVHlwZXMiLCJzY2hlZHVsZVNjaGVtYSIsInVzZXIiLCJ0eXBlIiwiT2JqZWN0SWQiLCJyZWYiLCJwbGFjZSIsImRhdGUiLCJEYXRlIiwicmVxdWlyZWQiLCJmYWlyIiwibWluIiwic3RhdGUiLCJTdHJpbmciLCJkZWZhdWx0IiwiZW51bSIsInRyYXZlbGxpbmdNZXRob2QiLCJ0aW1lc3RhbXBzIiwiU2NoZWR1bGVzIiwibW9kZWwiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxRQUFRLEdBQUdDLE9BQU8sQ0FBQyxVQUFELENBQXhCOztBQUNBLE1BQU1DLE1BQU0sR0FBR0YsUUFBUSxDQUFDRSxNQUF4Qjs7QUFDQUQsT0FBTyxDQUFDLG1CQUFELENBQVAsQ0FBNkJFLFFBQTdCLENBQXNDSCxRQUF0Qzs7QUFDQSxNQUFNSSxRQUFRLEdBQUdKLFFBQVEsQ0FBQ0ssS0FBVCxDQUFlRCxRQUFoQztBQUNBLE1BQU1FLGNBQWMsR0FBRyxJQUFJSixNQUFKLENBQVc7QUFDOUJLLEVBQUFBLElBQUksRUFBRTtBQUNGQyxJQUFBQSxJQUFJLEVBQUVSLFFBQVEsQ0FBQ0UsTUFBVCxDQUFnQkcsS0FBaEIsQ0FBc0JJLFFBRDFCO0FBRUZDLElBQUFBLEdBQUcsRUFBRTtBQUZILEdBRHdCO0FBSzlCQyxFQUFBQSxLQUFLLEVBQUU7QUFDSEgsSUFBQUEsSUFBSSxFQUFFUixRQUFRLENBQUNFLE1BQVQsQ0FBZ0JHLEtBQWhCLENBQXNCSSxRQUR6QjtBQUVIQyxJQUFBQSxHQUFHLEVBQUU7QUFGRixHQUx1QjtBQVM5QkUsRUFBQUEsSUFBSSxFQUFFO0FBQ0ZKLElBQUFBLElBQUksRUFBRUssSUFESjtBQUVGQyxJQUFBQSxRQUFRLEVBQUU7QUFGUixHQVR3QjtBQWE5QkMsRUFBQUEsSUFBSSxFQUFFO0FBQ0ZQLElBQUFBLElBQUksRUFBRUosUUFESjtBQUVGWSxJQUFBQSxHQUFHLEVBQUU7QUFGSCxHQWJ3QjtBQWlCOUJDLEVBQUFBLEtBQUssRUFBRTtBQUNIVCxJQUFBQSxJQUFJLEVBQUVVLE1BREg7QUFFSEMsSUFBQUEsT0FBTyxFQUFFLEtBRk47QUFHSEMsSUFBQUEsSUFBSSxFQUFFLENBQUMsS0FBRCxFQUFPLGVBQVAsRUFBd0IsVUFBeEIsRUFBb0MsV0FBcEM7QUFISCxHQWpCdUI7QUFzQjlCQyxFQUFBQSxnQkFBZ0IsRUFBRTtBQUNkYixJQUFBQSxJQUFJLEVBQUVVLE1BRFE7QUFFZEosSUFBQUEsUUFBUSxFQUFFLElBRkk7QUFHZE0sSUFBQUEsSUFBSSxFQUFFLENBQUMsS0FBRCxFQUFRLEtBQVIsRUFBZSxPQUFmLEVBQXdCLGNBQXhCLEVBQXdDLE1BQXhDO0FBSFE7QUF0QlksQ0FBWCxFQTJCcEI7QUFDQ0UsRUFBQUEsVUFBVSxFQUFFO0FBRGIsQ0EzQm9CLENBQXZCO0FBK0JBLElBQUlDLFNBQVMsR0FBR3ZCLFFBQVEsQ0FBQ3dCLEtBQVQsQ0FBZSxVQUFmLEVBQTJCbEIsY0FBM0IsQ0FBaEI7QUFFQW1CLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQkgsU0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBtb25nb29zZSA9IHJlcXVpcmUoJ21vbmdvb3NlJyk7XHJcbmNvbnN0IFNjaGVtYSA9IG1vbmdvb3NlLlNjaGVtYTtcclxucmVxdWlyZSgnbW9uZ29vc2UtY3VycmVuY3knKS5sb2FkVHlwZShtb25nb29zZSk7XHJcbmNvbnN0IEN1cnJlbmN5ID0gbW9uZ29vc2UuVHlwZXMuQ3VycmVuY3k7XHJcbmNvbnN0IHNjaGVkdWxlU2NoZW1hID0gbmV3IFNjaGVtYSh7XHJcbiAgICB1c2VyOiB7XHJcbiAgICAgICAgdHlwZTogbW9uZ29vc2UuU2NoZW1hLlR5cGVzLk9iamVjdElkLFxyXG4gICAgICAgIHJlZjogXCJVc2VyXCJcclxuICAgIH0sXHJcbiAgICBwbGFjZToge1xyXG4gICAgICAgIHR5cGU6IG1vbmdvb3NlLlNjaGVtYS5UeXBlcy5PYmplY3RJZCxcclxuICAgICAgICByZWY6IFwiUGxhY2VcIlxyXG4gICAgfSxcclxuICAgIGRhdGU6IHtcclxuICAgICAgICB0eXBlOiBEYXRlLFxyXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlXHJcbiAgICB9LFxyXG4gICAgZmFpcjoge1xyXG4gICAgICAgIHR5cGU6IEN1cnJlbmN5LFxyXG4gICAgICAgIG1pbjogMFxyXG4gICAgfSxcclxuICAgIHN0YXRlOiB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICAgIGRlZmF1bHQ6IFwibmV3XCIsXHJcbiAgICAgICAgZW51bTogW1wibmV3XCIsXCJub3QtY29tcGxldGVkXCIsIFwiY2FuY2VsZWRcIiwgXCJjb21wbGV0ZWRcIl1cclxuICAgIH0sXHJcbiAgICB0cmF2ZWxsaW5nTWV0aG9kOiB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxyXG4gICAgICAgIGVudW06IFsnQnVzJywgJ0NhcicsICdUcmFpbicsICdUaHJlZXdoZWVsZXInLCAnRm9vdCddXHJcbiAgICB9XHJcbn0sIHtcclxuICAgIHRpbWVzdGFtcHM6IHRydWVcclxufSk7XHJcblxyXG52YXIgU2NoZWR1bGVzID0gbW9uZ29vc2UubW9kZWwoJ1NjaGVkdWxlJywgc2NoZWR1bGVTY2hlbWEpO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBTY2hlZHVsZXM7Il19\",\"originalCode\":\"const mongoose = require('mongoose');\\r\\nconst Schema = mongoose.Schema;\\r\\nrequire('mongoose-currency').loadType(mongoose);\\r\\nconst Currency = mongoose.Types.Currency;\\r\\nconst scheduleSchema = new Schema({\\r\\n user: {\\r\\n type: mongoose.Schema.Types.ObjectId,\\r\\n ref: \\\"User\\\"\\r\\n },\\r\\n place: {\\r\\n type: mongoose.Schema.Types.ObjectId,\\r\\n ref: \\\"Place\\\"\\r\\n },\\r\\n date: {\\r\\n type: Date,\\r\\n required: true\\r\\n },\\r\\n fair: {\\r\\n type: Currency,\\r\\n min: 0\\r\\n },\\r\\n state: {\\r\\n type: String,\\r\\n default: \\\"new\\\",\\r\\n enum: [\\\"new\\\",\\\"not-completed\\\", \\\"canceled\\\", \\\"completed\\\"]\\r\\n },\\r\\n travellingMethod: {\\r\\n type: String,\\r\\n required: true,\\r\\n enum: ['Bus', 'Car', 'Train', 'Threewheeler', 'Foot']\\r\\n }\\r\\n}, {\\r\\n timestamps: true\\r\\n});\\r\\n\\r\\nvar Schedules = mongoose.model('Schedule', scheduleSchema);\\r\\n\\r\\nmodule.exports = Schedules;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/e2/schedules_e2f8e79bc28961f4db3736c92d490e47.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2543\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\models\\\\schedules.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":4238,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":4235,\"count\":1}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const express = require('express');\\n\\nconst bodyParser = require('body-parser');\\n\\nconst cors = require('./cors');\\n\\nconst {\\n checkSchema\\n} = require('express-validator');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nvar validationRules = require('../middleware/validation');\\n\\nconst touristController = require('../controllers/touristController');\\n\\nconst touristRouter = express.Router();\\ntouristRouter.use(bodyParser.json()); // **********************************************************************************\\n// \\n// Tourist Routes\\n// \\n// **********************************************************************************\\n\\ntouristRouter.route('/').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, touristController.getAllTourists).post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, touristController.addTourist).put(cors.corsWithOptions, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('PUT operation not supported on /tourists');\\n}).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, touristController.deleteAllTourists);\\ntouristRouter.route('/search').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).post(cors.corsWithOptions, authenticate.verifyUser, touristController.getAllTouristsByName); // **********************************************************************************\\n// \\n// Tourist Routes Specified by ID\\n// \\n// **********************************************************************************\\n\\ntouristRouter.route('/:touristId').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, touristController.getTouristDetailsById).post(cors.corsWithOptions, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('POST operation not supported on /tourists/' + req.params.touristId);\\n}).put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, touristController.updateTouristDetailsById).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, touristController.deleteATouristById);\\nmodule.exports = touristRouter;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRvdXJpc3RSb3V0ZXIuanMiXSwibmFtZXMiOlsiZXhwcmVzcyIsInJlcXVpcmUiLCJib2R5UGFyc2VyIiwiY29ycyIsImNoZWNrU2NoZW1hIiwiYXV0aGVudGljYXRlIiwidmFsaWRhdGlvblJ1bGVzIiwidG91cmlzdENvbnRyb2xsZXIiLCJ0b3VyaXN0Um91dGVyIiwiUm91dGVyIiwidXNlIiwianNvbiIsInJvdXRlIiwib3B0aW9ucyIsImNvcnNXaXRoT3B0aW9ucyIsInJlcSIsInJlcyIsInNlbmRTdGF0dXMiLCJnZXQiLCJ2ZXJpZnlVc2VyIiwiZ2V0QWxsVG91cmlzdHMiLCJwb3N0IiwidmVyaWZ5TW9kZXJhdGVyIiwiYWRkVG91cmlzdCIsInB1dCIsIm5leHQiLCJzdGF0dXNDb2RlIiwiZW5kIiwiZGVsZXRlIiwidmVyaWZ5QWRtaW4iLCJkZWxldGVBbGxUb3VyaXN0cyIsImdldEFsbFRvdXJpc3RzQnlOYW1lIiwiZ2V0VG91cmlzdERldGFpbHNCeUlkIiwicGFyYW1zIiwidG91cmlzdElkIiwidXBkYXRlVG91cmlzdERldGFpbHNCeUlkIiwiZGVsZXRlQVRvdXJpc3RCeUlkIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsT0FBTyxHQUFHQyxPQUFPLENBQUMsU0FBRCxDQUF2Qjs7QUFDQSxNQUFNQyxVQUFVLEdBQUdELE9BQU8sQ0FBQyxhQUFELENBQTFCOztBQUVBLE1BQU1FLElBQUksR0FBR0YsT0FBTyxDQUFDLFFBQUQsQ0FBcEI7O0FBQ0EsTUFBTTtBQUFFRyxFQUFBQTtBQUFGLElBQWtCSCxPQUFPLENBQUMsbUJBQUQsQ0FBL0I7O0FBQ0EsSUFBSUksWUFBWSxHQUFHSixPQUFPLENBQUMsNEJBQUQsQ0FBMUI7O0FBQ0EsSUFBSUssZUFBZSxHQUFHTCxPQUFPLENBQUMsMEJBQUQsQ0FBN0I7O0FBQ0EsTUFBTU0saUJBQWlCLEdBQUdOLE9BQU8sQ0FBQyxrQ0FBRCxDQUFqQzs7QUFFQSxNQUFNTyxhQUFhLEdBQUdSLE9BQU8sQ0FBQ1MsTUFBUixFQUF0QjtBQUVBRCxhQUFhLENBQUNFLEdBQWQsQ0FBa0JSLFVBQVUsQ0FBQ1MsSUFBWCxFQUFsQixFLENBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQUgsYUFBYSxDQUFDSSxLQUFkLENBQW9CLEdBQXBCLEVBQ0tDLE9BREwsQ0FDYVYsSUFBSSxDQUFDVyxlQURsQixFQUNtQyxDQUFDQyxHQUFELEVBQU1DLEdBQU4sS0FBYztBQUFFQSxFQUFBQSxHQUFHLENBQUNDLFVBQUosQ0FBZSxHQUFmO0FBQXNCLENBRHpFLEVBRUtDLEdBRkwsQ0FFU2YsSUFBSSxDQUFDQSxJQUZkLEVBRXFCRSxZQUFZLENBQUNjLFVBRmxDLEVBRWdEWixpQkFBaUIsQ0FBQ2EsY0FGbEUsRUFHS0MsSUFITCxDQUdVbEIsSUFBSSxDQUFDVyxlQUhmLEVBR2lDVCxZQUFZLENBQUNjLFVBSDlDLEVBRzBEZCxZQUFZLENBQUNpQixlQUh2RSxFQUd3RmYsaUJBQWlCLENBQUNnQixVQUgxRyxFQUlLQyxHQUpMLENBSVNyQixJQUFJLENBQUNXLGVBSmQsRUFJK0IsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEVBQVdTLElBQVgsS0FBb0I7QUFDM0NULEVBQUFBLEdBQUcsQ0FBQ1UsVUFBSixHQUFpQixHQUFqQjtBQUNBVixFQUFBQSxHQUFHLENBQUNXLEdBQUosQ0FBUSwwQ0FBUjtBQUNILENBUEwsRUFRS0MsTUFSTCxDQVFZekIsSUFBSSxDQUFDVyxlQVJqQixFQVFrQ1QsWUFBWSxDQUFDYyxVQVIvQyxFQVEyRGQsWUFBWSxDQUFDd0IsV0FSeEUsRUFRc0Z0QixpQkFBaUIsQ0FBQ3VCLGlCQVJ4RztBQVNBdEIsYUFBYSxDQUFDSSxLQUFkLENBQW9CLFNBQXBCLEVBQ0tDLE9BREwsQ0FDYVYsSUFBSSxDQUFDVyxlQURsQixFQUNtQyxDQUFDQyxHQUFELEVBQU1DLEdBQU4sS0FBYztBQUFFQSxFQUFBQSxHQUFHLENBQUNDLFVBQUosQ0FBZSxHQUFmO0FBQXNCLENBRHpFLEVBRUtJLElBRkwsQ0FFVWxCLElBQUksQ0FBQ1csZUFGZixFQUVnQ1QsWUFBWSxDQUFDYyxVQUY3QyxFQUUwRFosaUJBQWlCLENBQUN3QixvQkFGNUUsRSxDQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUF2QixhQUFhLENBQUNJLEtBQWQsQ0FBb0IsYUFBcEIsRUFDS0MsT0FETCxDQUNhVixJQUFJLENBQUNXLGVBRGxCLEVBQ21DLENBQUNDLEdBQUQsRUFBTUMsR0FBTixLQUFjO0FBQUVBLEVBQUFBLEdBQUcsQ0FBQ0MsVUFBSixDQUFlLEdBQWY7QUFBc0IsQ0FEekUsRUFFS0MsR0FGTCxDQUVTZixJQUFJLENBQUNBLElBRmQsRUFFb0JFLFlBQVksQ0FBQ2MsVUFGakMsRUFFK0NaLGlCQUFpQixDQUFDeUIscUJBRmpFLEVBR0tYLElBSEwsQ0FHVWxCLElBQUksQ0FBQ1csZUFIZixFQUdnQyxDQUFDQyxHQUFELEVBQU1DLEdBQU4sRUFBV1MsSUFBWCxLQUFvQjtBQUM1Q1QsRUFBQUEsR0FBRyxDQUFDVSxVQUFKLEdBQWlCLEdBQWpCO0FBQ0FWLEVBQUFBLEdBQUcsQ0FBQ1csR0FBSixDQUFRLCtDQUErQ1osR0FBRyxDQUFDa0IsTUFBSixDQUFXQyxTQUFsRTtBQUNILENBTkwsRUFPS1YsR0FQTCxDQU9TckIsSUFBSSxDQUFDVyxlQVBkLEVBTytCVCxZQUFZLENBQUNjLFVBUDVDLEVBT3dEZCxZQUFZLENBQUNpQixlQVByRSxFQU91RmYsaUJBQWlCLENBQUM0Qix3QkFQekcsRUFRS1AsTUFSTCxDQVFZekIsSUFBSSxDQUFDVyxlQVJqQixFQVFtQ1QsWUFBWSxDQUFDYyxVQVJoRCxFQVE0RGQsWUFBWSxDQUFDaUIsZUFSekUsRUFRMEZmLGlCQUFpQixDQUFDNkIsa0JBUjVHO0FBVUFDLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQjlCLGFBQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZXhwcmVzcyA9IHJlcXVpcmUoJ2V4cHJlc3MnKTtcclxuY29uc3QgYm9keVBhcnNlciA9IHJlcXVpcmUoJ2JvZHktcGFyc2VyJyk7XHJcblxyXG5jb25zdCBjb3JzID0gcmVxdWlyZSgnLi9jb3JzJyk7XHJcbmNvbnN0IHsgY2hlY2tTY2hlbWEgfSA9IHJlcXVpcmUoJ2V4cHJlc3MtdmFsaWRhdG9yJyk7XHJcbnZhciBhdXRoZW50aWNhdGUgPSByZXF1aXJlKCcuLi9taWRkbGV3YXJlL2F1dGhlbnRpY2F0ZScpO1xyXG52YXIgdmFsaWRhdGlvblJ1bGVzID0gcmVxdWlyZSgnLi4vbWlkZGxld2FyZS92YWxpZGF0aW9uJyk7XHJcbmNvbnN0IHRvdXJpc3RDb250cm9sbGVyID0gcmVxdWlyZSgnLi4vY29udHJvbGxlcnMvdG91cmlzdENvbnRyb2xsZXInKVxyXG5cclxuY29uc3QgdG91cmlzdFJvdXRlciA9IGV4cHJlc3MuUm91dGVyKCk7XHJcblxyXG50b3VyaXN0Um91dGVyLnVzZShib2R5UGFyc2VyLmpzb24oKSk7XHJcblxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbi8vIFxyXG4vLyAgICAgICAgICAgICAgVG91cmlzdCBSb3V0ZXNcclxuLy8gXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbnRvdXJpc3RSb3V0ZXIucm91dGUoJy8nKVxyXG4gICAgLm9wdGlvbnMoY29ycy5jb3JzV2l0aE9wdGlvbnMsIChyZXEsIHJlcykgPT4geyByZXMuc2VuZFN0YXR1cygyMDApOyB9KVxyXG4gICAgLmdldChjb3JzLmNvcnMsICBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgICB0b3VyaXN0Q29udHJvbGxlci5nZXRBbGxUb3VyaXN0cylcclxuICAgIC5wb3N0KGNvcnMuY29yc1dpdGhPcHRpb25zLCAgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlNb2RlcmF0ZXIsIHRvdXJpc3RDb250cm9sbGVyLmFkZFRvdXJpc3QpXHJcbiAgICAucHV0KGNvcnMuY29yc1dpdGhPcHRpb25zLCAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwMztcclxuICAgICAgICByZXMuZW5kKCdQVVQgb3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQgb24gL3RvdXJpc3RzJyk7XHJcbiAgICB9KVxyXG4gICAgLmRlbGV0ZShjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgIHRvdXJpc3RDb250cm9sbGVyLmRlbGV0ZUFsbFRvdXJpc3RzKTtcclxudG91cmlzdFJvdXRlci5yb3V0ZSgnL3NlYXJjaCcpXHJcbiAgICAub3B0aW9ucyhjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcbiAgICAucG9zdChjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsICB0b3VyaXN0Q29udHJvbGxlci5nZXRBbGxUb3VyaXN0c0J5TmFtZSk7XHJcblxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbi8vIFxyXG4vLyAgICAgICAgICAgICAgVG91cmlzdCBSb3V0ZXMgU3BlY2lmaWVkIGJ5IElEXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG50b3VyaXN0Um91dGVyLnJvdXRlKCcvOnRvdXJpc3RJZCcpXHJcbiAgICAub3B0aW9ucyhjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcbiAgICAuZ2V0KGNvcnMuY29ycywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsICAgdG91cmlzdENvbnRyb2xsZXIuZ2V0VG91cmlzdERldGFpbHNCeUlkKVxyXG4gICAgLnBvc3QoY29ycy5jb3JzV2l0aE9wdGlvbnMsIChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNDAzO1xyXG4gICAgICAgIHJlcy5lbmQoJ1BPU1Qgb3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQgb24gL3RvdXJpc3RzLycgKyByZXEucGFyYW1zLnRvdXJpc3RJZCk7XHJcbiAgICB9KVxyXG4gICAgLnB1dChjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlNb2RlcmF0ZXIsICB0b3VyaXN0Q29udHJvbGxlci51cGRhdGVUb3VyaXN0RGV0YWlsc0J5SWQpXHJcbiAgICAuZGVsZXRlKGNvcnMuY29yc1dpdGhPcHRpb25zLCAgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlNb2RlcmF0ZXIsIHRvdXJpc3RDb250cm9sbGVyLmRlbGV0ZUFUb3VyaXN0QnlJZCk7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IHRvdXJpc3RSb3V0ZXI7Il19\",\"originalCode\":\"const express = require('express');\\r\\nconst bodyParser = require('body-parser');\\r\\n\\r\\nconst cors = require('./cors');\\r\\nconst { checkSchema } = require('express-validator');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\nvar validationRules = require('../middleware/validation');\\r\\nconst touristController = require('../controllers/touristController')\\r\\n\\r\\nconst touristRouter = express.Router();\\r\\n\\r\\ntouristRouter.use(bodyParser.json());\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Tourist Routes\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\ntouristRouter.route('/')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, touristController.getAllTourists)\\r\\n .post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, touristController.addTourist)\\r\\n .put(cors.corsWithOptions, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('PUT operation not supported on /tourists');\\r\\n })\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, touristController.deleteAllTourists);\\r\\ntouristRouter.route('/search')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .post(cors.corsWithOptions, authenticate.verifyUser, touristController.getAllTouristsByName);\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Tourist Routes Specified by ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\ntouristRouter.route('/:touristId')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, touristController.getTouristDetailsById)\\r\\n .post(cors.corsWithOptions, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('POST operation not supported on /tourists/' + req.params.touristId);\\r\\n })\\r\\n .put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, touristController.updateTouristDetailsById)\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, touristController.deleteATouristById);\\r\\n\\r\\nmodule.exports = touristRouter;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/0a/touristRouter_0ad938586662daadc81c6cb1ad2e0f53.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2545\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\touristRouter.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":9165,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":9162,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":796,\"endOffset\":836,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1050,\"endOffset\":1152,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1333,\"endOffset\":1373,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1761,\"endOffset\":1801,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1911,\"endOffset\":2038,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const Tourists = require('../models/users');\\n\\nconst utils = require('../utils/utils'); // **********************************************************************************\\n// \\n// Tourist Operations \\n// \\n// **********************************************************************************\\n\\n\\nconst getAllTourists = (req, res, next) => {\\n var query = {\\n \\\"role\\\": \\\"user\\\"\\n }; // var obj = Object.assign(query, { $text: { $search: searchBy } });\\n\\n Tourists.find(query).then(tourists => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n tourists: tourists\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst getAllTouristsByName = (req, res, next) => {\\n var query = {\\n \\\"role\\\": \\\"user\\\"\\n };\\n\\n if (req.body.similarTo) {\\n var searchBy = req.body.similarTo || {};\\n query = {\\n \\\"role\\\": \\\"user\\\",\\n $text: {\\n $search: searchBy\\n }\\n };\\n }\\n\\n var sortby = req.body.sortBy || {};\\n Tourists.find(query).sort(sortby).then(tourists => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n tourists: tourists\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst addTourist = async (req, res, next) => {\\n const randomPassword = utils.password_generator(10);\\n var tourist = {\\n username: req.body.email,\\n firstname: req.body.firstname,\\n lastname: req.body.lastname,\\n email: req.body.email,\\n mobile: req.body.mobile,\\n role: 'user'\\n };\\n\\n try {\\n Tourists.register(new Tourists(tourist), randomPassword, (err, tourist) => {\\n if (err) {\\n res.statusCode = 403;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: err.message\\n });\\n } else {\\n tourist.save((err, tourist) => {\\n if (err) {\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Error while Saving new user.'\\n });\\n }\\n\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n email: tourist.email,\\n password: randomPassword\\n });\\n });\\n }\\n });\\n } catch (error) {\\n next(err);\\n }\\n};\\n\\nconst deleteAllTourists = (req, res, next) => {\\n Tourists.remove({\\n \\\"role\\\": \\\"user\\\"\\n }).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n response: resp\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nexports.getAllTourists = getAllTourists;\\nexports.getAllTouristsByName = getAllTouristsByName;\\nexports.addTourist = addTourist;\\nexports.deleteAllTourists = deleteAllTourists; // **********************************************************************************\\n// \\n// Tourist Operations Specified by ID\\n// \\n// **********************************************************************************\\n\\nconst getTouristDetailsById = (req, res, next) => {\\n var touristId = req.params.touristId;\\n Tourists.findById(touristId).then(tourist => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n tourist: tourist\\n });\\n }, err => {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Could not find tourist with given ID'\\n });\\n }).catch(err => next(err));\\n};\\n\\nconst updateTouristDetailsById = (req, res, next) => {\\n Tourists.findByIdAndUpdate(req.params.touristId, {\\n $set: req.body\\n }, {\\n new: true\\n }).then(tourist => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n tourist: tourist\\n });\\n }, err => {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Could not find tourist with given ID'\\n });\\n }).catch(err => next(err));\\n};\\n\\nconst deleteATouristById = (req, res, next) => {\\n Tourists.findByIdAndRemove(req.params.touristId).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n response: resp\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nexports.getTouristDetailsById = getTouristDetailsById;\\nexports.updateTouristDetailsById = updateTouristDetailsById;\\nexports.deleteATouristById = deleteATouristById;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRvdXJpc3RDb250cm9sbGVyLmpzIl0sIm5hbWVzIjpbIlRvdXJpc3RzIiwicmVxdWlyZSIsInV0aWxzIiwiZ2V0QWxsVG91cmlzdHMiLCJyZXEiLCJyZXMiLCJuZXh0IiwicXVlcnkiLCJmaW5kIiwidGhlbiIsInRvdXJpc3RzIiwic3RhdHVzQ29kZSIsInNldEhlYWRlciIsImpzb24iLCJzdWNjZXNzIiwiZXJyIiwiY2F0Y2giLCJnZXRBbGxUb3VyaXN0c0J5TmFtZSIsImJvZHkiLCJzaW1pbGFyVG8iLCJzZWFyY2hCeSIsIiR0ZXh0IiwiJHNlYXJjaCIsInNvcnRieSIsInNvcnRCeSIsInNvcnQiLCJhZGRUb3VyaXN0IiwicmFuZG9tUGFzc3dvcmQiLCJwYXNzd29yZF9nZW5lcmF0b3IiLCJ0b3VyaXN0IiwidXNlcm5hbWUiLCJlbWFpbCIsImZpcnN0bmFtZSIsImxhc3RuYW1lIiwibW9iaWxlIiwicm9sZSIsInJlZ2lzdGVyIiwibWVzc2FnZSIsInNhdmUiLCJwYXNzd29yZCIsImVycm9yIiwiZGVsZXRlQWxsVG91cmlzdHMiLCJyZW1vdmUiLCJyZXNwIiwicmVzcG9uc2UiLCJleHBvcnRzIiwiZ2V0VG91cmlzdERldGFpbHNCeUlkIiwidG91cmlzdElkIiwicGFyYW1zIiwiZmluZEJ5SWQiLCJ1cGRhdGVUb3VyaXN0RGV0YWlsc0J5SWQiLCJmaW5kQnlJZEFuZFVwZGF0ZSIsIiRzZXQiLCJuZXciLCJkZWxldGVBVG91cmlzdEJ5SWQiLCJmaW5kQnlJZEFuZFJlbW92ZSJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsUUFBUSxHQUFHQyxPQUFPLENBQUMsaUJBQUQsQ0FBeEI7O0FBQ0EsTUFBTUMsS0FBSyxHQUFHRCxPQUFPLENBQUMsZ0JBQUQsQ0FBckIsQyxDQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBLE1BQU1FLGNBQWMsR0FBRyxDQUFDQyxHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUN2QyxNQUFJQyxLQUFLLEdBQUc7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RUFBRTtBQUEzQixLQUFUO0FBQ0gsR0FYTCxFQVlLckIsS0FaTCxDQVlZRCxHQUFELElBQVNULElBQUksQ0FBQ1MsR0FBRCxDQVp4QjtBQWFILENBZkQ7O0FBaUJBLE1BQU11QyxrQkFBa0IsR0FBRyxDQUFDbEQsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDM0NOLEVBQUFBLFFBQVEsQ0FBQ3VELGlCQUFULENBQTJCbkQsR0FBRyxDQUFDNEMsTUFBSixDQUFXRCxTQUF0QyxFQUNLdEMsSUFETCxDQUNXa0MsSUFBRCxJQUFVO0FBQ1p0QyxJQUFBQSxHQUFHLENBQUNNLFVBQUosR0FBaUIsR0FBakI7QUFDQU4sSUFBQUEsR0FBRyxDQUFDTyxTQUFKLENBQWMsY0FBZCxFQUE4QixrQkFBOUI7QUFDQVAsSUFBQUEsR0FBRyxDQUFDUSxJQUFKLENBQVM7QUFBRUMsTUFBQUEsT0FBTyxFQUFFLElBQVg7QUFBaUI4QixNQUFBQSxRQUFRLEVBQUVEO0FBQTNCLEtBQVQ7QUFDSCxHQUxMLEVBS1E1QixHQUFELElBQVNULElBQUksQ0FBQ1MsR0FBRCxDQUxwQixFQU1LQyxLQU5MLENBTVlELEdBQUQsSUFBU1QsSUFBSSxDQUFDUyxHQUFELENBTnhCO0FBT0gsQ0FSRDs7QUFVQThCLE9BQU8sQ0FBQ0MscUJBQVIsR0FBZ0NBLHFCQUFoQztBQUNBRCxPQUFPLENBQUNLLHdCQUFSLEdBQW1DQSx3QkFBbkM7QUFDQUwsT0FBTyxDQUFDUyxrQkFBUixHQUE2QkEsa0JBQTdCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgVG91cmlzdHMgPSByZXF1aXJlKCcuLi9tb2RlbHMvdXNlcnMnKTtcclxuY29uc3QgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscy91dGlscycpO1xyXG5cclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyBcclxuLy8gICAgICAgICAgICAgIFRvdXJpc3QgT3BlcmF0aW9ucyBcclxuLy8gXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbmNvbnN0IGdldEFsbFRvdXJpc3RzID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICB2YXIgcXVlcnkgPSB7IFwicm9sZVwiOiBcInVzZXJcIiB9O1xyXG4gICAgLy8gdmFyIG9iaiA9IE9iamVjdC5hc3NpZ24ocXVlcnksIHsgJHRleHQ6IHsgJHNlYXJjaDogc2VhcmNoQnkgfSB9KTtcclxuICAgICBUb3VyaXN0cy5maW5kKHF1ZXJ5KVxyXG4gICAgICAgIC50aGVuKCh0b3VyaXN0cykgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCB0b3VyaXN0czogdG91cmlzdHMgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpO1xyXG59XHJcblxyXG5jb25zdCBnZXRBbGxUb3VyaXN0c0J5TmFtZSA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgdmFyIHF1ZXJ5ID0geyBcInJvbGVcIjogXCJ1c2VyXCIgfTtcclxuICAgIGlmIChyZXEuYm9keS5zaW1pbGFyVG8pIHtcclxuICAgICAgICB2YXIgc2VhcmNoQnkgPSByZXEuYm9keS5zaW1pbGFyVG8gfHwge31cclxuICAgICAgICBxdWVyeSA9IHsgXCJyb2xlXCI6IFwidXNlclwiLCAkdGV4dDogeyAkc2VhcmNoOiBzZWFyY2hCeSB9IH1cclxuICAgIH1cclxuXHJcbiAgICB2YXIgc29ydGJ5ID0gcmVxLmJvZHkuc29ydEJ5IHx8IHt9O1xyXG4gICAgVG91cmlzdHMuZmluZChxdWVyeSkuc29ydChzb3J0YnkpXHJcbiAgICAgICAgLnRoZW4oKHRvdXJpc3RzKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHRvdXJpc3RzOiB0b3VyaXN0cyB9KTtcclxuICAgICAgICB9LCAoZXJyKSA9PiBuZXh0KGVycikpXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IG5leHQoZXJyKSk7XHJcbn1cclxuXHJcbmNvbnN0IGFkZFRvdXJpc3QgPSBhc3luYyAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIGNvbnN0IHJhbmRvbVBhc3N3b3JkID0gdXRpbHMucGFzc3dvcmRfZ2VuZXJhdG9yKDEwKTtcclxuICAgIHZhciB0b3VyaXN0ID0ge1xyXG4gICAgICAgIHVzZXJuYW1lOiByZXEuYm9keS5lbWFpbCxcclxuICAgICAgICBmaXJzdG5hbWU6IHJlcS5ib2R5LmZpcnN0bmFtZSxcclxuICAgICAgICBsYXN0bmFtZTogcmVxLmJvZHkubGFzdG5hbWUsXHJcbiAgICAgICAgZW1haWw6IHJlcS5ib2R5LmVtYWlsLFxyXG4gICAgICAgIG1vYmlsZTogcmVxLmJvZHkubW9iaWxlLFxyXG4gICAgICAgIHJvbGU6ICd1c2VyJ1xyXG4gICAgfVxyXG4gICAgdHJ5IHtcclxuICAgICAgICBUb3VyaXN0cy5yZWdpc3RlcihuZXcgVG91cmlzdHModG91cmlzdCksXHJcbiAgICAgICAgICAgIHJhbmRvbVBhc3N3b3JkLCAoZXJyLCB0b3VyaXN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IGZhbHNlLCBtZXNzYWdlOiBlcnIubWVzc2FnZSB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRvdXJpc3Quc2F2ZSgoZXJyLCB0b3VyaXN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNTAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IGZhbHNlLCBtZXNzYWdlOiAnRXJyb3Igd2hpbGUgU2F2aW5nIG5ldyB1c2VyLicgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgZW1haWw6IHRvdXJpc3QuZW1haWwsIHBhc3N3b3JkOiByYW5kb21QYXNzd29yZCB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgbmV4dChlcnIpO1xyXG4gICAgfVxyXG59XHJcblxyXG5jb25zdCBkZWxldGVBbGxUb3VyaXN0cyA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgVG91cmlzdHMucmVtb3ZlKHsgXCJyb2xlXCI6IFwidXNlclwiIH0pXHJcbiAgICAgICAgLnRoZW4oKHJlc3ApID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgcmVzcG9uc2U6IHJlc3AgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpO1xyXG59XHJcblxyXG5leHBvcnRzLmdldEFsbFRvdXJpc3RzID0gZ2V0QWxsVG91cmlzdHM7XHJcbmV4cG9ydHMuZ2V0QWxsVG91cmlzdHNCeU5hbWUgPSBnZXRBbGxUb3VyaXN0c0J5TmFtZTtcclxuZXhwb3J0cy5hZGRUb3VyaXN0ID0gYWRkVG91cmlzdDtcclxuZXhwb3J0cy5kZWxldGVBbGxUb3VyaXN0cyA9IGRlbGV0ZUFsbFRvdXJpc3RzO1xyXG5cclxuXHJcblxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbi8vIFxyXG4vLyAgICAgICAgICAgICAgVG91cmlzdCBPcGVyYXRpb25zIFNwZWNpZmllZCBieSBJRFxyXG4vLyBcclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuY29uc3QgZ2V0VG91cmlzdERldGFpbHNCeUlkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICB2YXIgdG91cmlzdElkID0gcmVxLnBhcmFtcy50b3VyaXN0SWQ7XHJcbiAgICBUb3VyaXN0cy5maW5kQnlJZCh0b3VyaXN0SWQpXHJcbiAgICAgICAgLnRoZW4oKHRvdXJpc3QpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgdG91cmlzdDogdG91cmlzdCB9KTtcclxuICAgICAgICB9LCAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNDA0O1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IGZhbHNlLCBtZXNzYWdlOiAnQ291bGQgbm90IGZpbmQgdG91cmlzdCB3aXRoIGdpdmVuIElEJyB9KTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpOyBcclxufVxyXG5cclxuY29uc3QgdXBkYXRlVG91cmlzdERldGFpbHNCeUlkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICBcclxuICAgIFRvdXJpc3RzLmZpbmRCeUlkQW5kVXBkYXRlKHJlcS5wYXJhbXMudG91cmlzdElkLCB7XHJcbiAgICAgICAgJHNldDogcmVxLmJvZHlcclxuICAgIH0sIHsgbmV3OiB0cnVlIH0pXHJcbiAgICAgICAgLnRoZW4oKHRvdXJpc3QpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgdG91cmlzdDogdG91cmlzdCB9KTtcclxuICAgICAgICB9LCAoZXJyKSA9PiAge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwNDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogJ0NvdWxkIG5vdCBmaW5kIHRvdXJpc3Qgd2l0aCBnaXZlbiBJRCcgfSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuY29uc3QgZGVsZXRlQVRvdXJpc3RCeUlkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICBUb3VyaXN0cy5maW5kQnlJZEFuZFJlbW92ZShyZXEucGFyYW1zLnRvdXJpc3RJZClcclxuICAgICAgICAudGhlbigocmVzcCkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCByZXNwb25zZTogcmVzcCB9KTtcclxuICAgICAgICB9LCAoZXJyKSA9PiBuZXh0KGVycikpXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IG5leHQoZXJyKSk7XHJcbn1cclxuXHJcbmV4cG9ydHMuZ2V0VG91cmlzdERldGFpbHNCeUlkID0gZ2V0VG91cmlzdERldGFpbHNCeUlkO1xyXG5leHBvcnRzLnVwZGF0ZVRvdXJpc3REZXRhaWxzQnlJZCA9IHVwZGF0ZVRvdXJpc3REZXRhaWxzQnlJZDtcclxuZXhwb3J0cy5kZWxldGVBVG91cmlzdEJ5SWQgPSBkZWxldGVBVG91cmlzdEJ5SWQ7XHJcblxyXG5cclxuIl19\",\"originalCode\":\"const Tourists = require('../models/users');\\r\\nconst utils = require('../utils/utils');\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Tourist Operations \\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nconst getAllTourists = (req, res, next) => {\\r\\n var query = { \\\"role\\\": \\\"user\\\" };\\r\\n // var obj = Object.assign(query, { $text: { $search: searchBy } });\\r\\n Tourists.find(query)\\r\\n .then((tourists) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, tourists: tourists });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst getAllTouristsByName = (req, res, next) => {\\r\\n var query = { \\\"role\\\": \\\"user\\\" };\\r\\n if (req.body.similarTo) {\\r\\n var searchBy = req.body.similarTo || {}\\r\\n query = { \\\"role\\\": \\\"user\\\", $text: { $search: searchBy } }\\r\\n }\\r\\n\\r\\n var sortby = req.body.sortBy || {};\\r\\n Tourists.find(query).sort(sortby)\\r\\n .then((tourists) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, tourists: tourists });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst addTourist = async (req, res, next) => {\\r\\n const randomPassword = utils.password_generator(10);\\r\\n var tourist = {\\r\\n username: req.body.email,\\r\\n firstname: req.body.firstname,\\r\\n lastname: req.body.lastname,\\r\\n email: req.body.email,\\r\\n mobile: req.body.mobile,\\r\\n role: 'user'\\r\\n }\\r\\n try {\\r\\n Tourists.register(new Tourists(tourist),\\r\\n randomPassword, (err, tourist) => {\\r\\n if (err) {\\r\\n res.statusCode = 403;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: err.message });\\r\\n }\\r\\n else {\\r\\n tourist.save((err, tourist) => {\\r\\n if (err) {\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Error while Saving new user.' });\\r\\n }\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, email: tourist.email, password: randomPassword });\\r\\n });\\r\\n }\\r\\n });\\r\\n } catch (error) {\\r\\n next(err);\\r\\n }\\r\\n}\\r\\n\\r\\nconst deleteAllTourists = (req, res, next) => {\\r\\n Tourists.remove({ \\\"role\\\": \\\"user\\\" })\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, response: resp });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nexports.getAllTourists = getAllTourists;\\r\\nexports.getAllTouristsByName = getAllTouristsByName;\\r\\nexports.addTourist = addTourist;\\r\\nexports.deleteAllTourists = deleteAllTourists;\\r\\n\\r\\n\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Tourist Operations Specified by ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nconst getTouristDetailsById = (req, res, next) => {\\r\\n var touristId = req.params.touristId;\\r\\n Tourists.findById(touristId)\\r\\n .then((tourist) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, tourist: tourist });\\r\\n }, (err) => {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Could not find tourist with given ID' });\\r\\n })\\r\\n .catch((err) => next(err)); \\r\\n}\\r\\n\\r\\nconst updateTouristDetailsById = (req, res, next) => {\\r\\n \\r\\n Tourists.findByIdAndUpdate(req.params.touristId, {\\r\\n $set: req.body\\r\\n }, { new: true })\\r\\n .then((tourist) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, tourist: tourist });\\r\\n }, (err) => {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Could not find tourist with given ID' });\\r\\n })\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst deleteATouristById = (req, res, next) => {\\r\\n Tourists.findByIdAndRemove(req.params.touristId)\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, response: resp });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nexports.getTouristDetailsById = getTouristDetailsById;\\r\\nexports.updateTouristDetailsById = updateTouristDetailsById;\\r\\nexports.deleteATouristById = deleteATouristById;\\r\\n\\r\\n\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/ff/touristController_ff3455758448d6e0c4e2be11f313067b.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2546\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\touristController.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":20391,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":20388,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"getAllTourists\",\"ranges\":[{\"startOffset\":417,\"endOffset\":790,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getAllTouristsByName\",\"ranges\":[{\"startOffset\":822,\"endOffset\":1347,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"addTourist\",\"ranges\":[{\"startOffset\":1369,\"endOffset\":2534,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"deleteAllTourists\",\"ranges\":[{\"startOffset\":2563,\"endOffset\":2839,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getTouristDetailsById\",\"ranges\":[{\"startOffset\":3278,\"endOffset\":3762,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"updateTouristDetailsById\",\"ranges\":[{\"startOffset\":3798,\"endOffset\":4309,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"deleteATouristById\",\"ranges\":[{\"startOffset\":4339,\"endOffset\":4622,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const express = require('express');\\n\\nconst bodyParser = require('body-parser');\\n\\nconst cors = require('./cors');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nconst dashboardController = require('../controllers/dashboardController');\\n\\nconst dashboardRouter = express.Router();\\ndashboardRouter.use(bodyParser.json());\\ndashboardRouter.route('/admin').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, authenticate.verifyAdmin, dashboardController.getDashboard);\\nmodule.exports = dashboardRouter;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRhc2hib2FyZFJvdXRlci5qcyJdLCJuYW1lcyI6WyJleHByZXNzIiwicmVxdWlyZSIsImJvZHlQYXJzZXIiLCJjb3JzIiwiYXV0aGVudGljYXRlIiwiZGFzaGJvYXJkQ29udHJvbGxlciIsImRhc2hib2FyZFJvdXRlciIsIlJvdXRlciIsInVzZSIsImpzb24iLCJyb3V0ZSIsIm9wdGlvbnMiLCJjb3JzV2l0aE9wdGlvbnMiLCJyZXEiLCJyZXMiLCJzZW5kU3RhdHVzIiwiZ2V0IiwidmVyaWZ5VXNlciIsInZlcmlmeUFkbWluIiwiZ2V0RGFzaGJvYXJkIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsT0FBTyxHQUFHQyxPQUFPLENBQUMsU0FBRCxDQUF2Qjs7QUFDQSxNQUFNQyxVQUFVLEdBQUdELE9BQU8sQ0FBQyxhQUFELENBQTFCOztBQUVBLE1BQU1FLElBQUksR0FBR0YsT0FBTyxDQUFDLFFBQUQsQ0FBcEI7O0FBQ0EsSUFBSUcsWUFBWSxHQUFHSCxPQUFPLENBQUMsNEJBQUQsQ0FBMUI7O0FBQ0EsTUFBTUksbUJBQW1CLEdBQUdKLE9BQU8sQ0FBQyxvQ0FBRCxDQUFuQzs7QUFFQSxNQUFNSyxlQUFlLEdBQUdOLE9BQU8sQ0FBQ08sTUFBUixFQUF4QjtBQUVBRCxlQUFlLENBQUNFLEdBQWhCLENBQW9CTixVQUFVLENBQUNPLElBQVgsRUFBcEI7QUFFQUgsZUFBZSxDQUFDSSxLQUFoQixDQUFzQixRQUF0QixFQUNLQyxPQURMLENBQ2FSLElBQUksQ0FBQ1MsZUFEbEIsRUFDbUMsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEtBQWM7QUFBRUEsRUFBQUEsR0FBRyxDQUFDQyxVQUFKLENBQWUsR0FBZjtBQUFzQixDQUR6RSxFQUVLQyxHQUZMLENBRVNiLElBQUksQ0FBQ0EsSUFGZCxFQUVtQkMsWUFBWSxDQUFDYSxVQUZoQyxFQUU0Q2IsWUFBWSxDQUFDYyxXQUZ6RCxFQUVzRWIsbUJBQW1CLENBQUNjLFlBRjFGO0FBSUFDLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQmYsZUFBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBleHByZXNzID0gcmVxdWlyZSgnZXhwcmVzcycpO1xyXG5jb25zdCBib2R5UGFyc2VyID0gcmVxdWlyZSgnYm9keS1wYXJzZXInKTtcclxuXHJcbmNvbnN0IGNvcnMgPSByZXF1aXJlKCcuL2NvcnMnKTtcclxudmFyIGF1dGhlbnRpY2F0ZSA9IHJlcXVpcmUoJy4uL21pZGRsZXdhcmUvYXV0aGVudGljYXRlJyk7XHJcbmNvbnN0IGRhc2hib2FyZENvbnRyb2xsZXIgPSByZXF1aXJlKCcuLi9jb250cm9sbGVycy9kYXNoYm9hcmRDb250cm9sbGVyJyk7XHJcblxyXG5jb25zdCBkYXNoYm9hcmRSb3V0ZXIgPSBleHByZXNzLlJvdXRlcigpO1xyXG5cclxuZGFzaGJvYXJkUm91dGVyLnVzZShib2R5UGFyc2VyLmpzb24oKSk7XHJcblxyXG5kYXNoYm9hcmRSb3V0ZXIucm91dGUoJy9hZG1pbicpXHJcbiAgICAub3B0aW9ucyhjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcbiAgICAuZ2V0KGNvcnMuY29ycyxhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeUFkbWluLCBkYXNoYm9hcmRDb250cm9sbGVyLmdldERhc2hib2FyZCk7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IGRhc2hib2FyZFJvdXRlcjsiXX0=\",\"originalCode\":\"const express = require('express');\\r\\nconst bodyParser = require('body-parser');\\r\\n\\r\\nconst cors = require('./cors');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\nconst dashboardController = require('../controllers/dashboardController');\\r\\n\\r\\nconst dashboardRouter = express.Router();\\r\\n\\r\\ndashboardRouter.use(bodyParser.json());\\r\\n\\r\\ndashboardRouter.route('/admin')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors,authenticate.verifyUser, authenticate.verifyAdmin, dashboardController.getDashboard);\\r\\n\\r\\nmodule.exports = dashboardRouter;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/07/dashboardRouter_0791a49f2f45fc0f57ade98f27175c5c.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2547\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\dashboardRouter.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":2824,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":2821,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":482,\"endOffset\":522,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const Place = require('../models/visitingPlaces');\\n\\nconst User = require('../models/users');\\n\\nconst Schedule = require('../models/schedules');\\n\\nexports.getDashboard = async (req, res, next) => {\\n try {\\n const users_count = (await User.find().countDocuments()) - 1;\\n const tourist_count_total = await User.find({\\n \\\"role\\\": \\\"user\\\"\\n }).countDocuments();\\n const assistant_count_total = await User.find({\\n \\\"role\\\": \\\"moderater\\\"\\n }).countDocuments();\\n const tourist_count_in = await User.find({\\n \\\"role\\\": \\\"user\\\",\\n \\\"userstate\\\": \\\"in\\\"\\n }).countDocuments();\\n const place_count = await Place.find().countDocuments();\\n const place_names = await Place.find({}, {\\n _id: 0,\\n name: 1\\n });\\n const place_locations = await Place.find({}, {\\n _id: 0,\\n \\\"location.coordinates\\\": 1\\n });\\n var locations = [];\\n place_locations.forEach(element => {\\n var longitude = element.location.coordinates[0];\\n var latitude = element.location.coordinates[1];\\n locations.push({\\n longitude,\\n latitude\\n });\\n });\\n const schedules_count_total = await Schedule.find().countDocuments();\\n const schedules_count_new = await Schedule.find({\\n \\\"state\\\": \\\"new\\\"\\n }).countDocuments();\\n const schedules_count_canceled = await Schedule.find({\\n \\\"state\\\": \\\"cancled\\\"\\n }).countDocuments();\\n const schedules_count_notcompleted = await Schedule.find({\\n \\\"state\\\": \\\"notcompleted\\\"\\n }).countDocuments();\\n const schedules_count_completed = await Schedule.find({\\n \\\"state\\\": \\\"completed\\\"\\n }).countDocuments();\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n dashboardValues: {\\n users_count: users_count,\\n tourist_count_total: tourist_count_total,\\n assistant_count_total: assistant_count_total,\\n tourist_count_in: tourist_count_in,\\n place_count: place_count,\\n place_names: place_names,\\n place_locations: locations,\\n schedules_count_total: schedules_count_total,\\n schedules_count_new: schedules_count_new,\\n schedules_count_canceled: schedules_count_canceled,\\n schedules_count_notcompleted: schedules_count_notcompleted,\\n schedules_count_completed: schedules_count_completed\\n }\\n });\\n } catch (err) {\\n next(err);\\n }\\n};\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRhc2hib2FyZENvbnRyb2xsZXIuanMiXSwibmFtZXMiOlsiUGxhY2UiLCJyZXF1aXJlIiwiVXNlciIsIlNjaGVkdWxlIiwiZXhwb3J0cyIsImdldERhc2hib2FyZCIsInJlcSIsInJlcyIsIm5leHQiLCJ1c2Vyc19jb3VudCIsImZpbmQiLCJjb3VudERvY3VtZW50cyIsInRvdXJpc3RfY291bnRfdG90YWwiLCJhc3Npc3RhbnRfY291bnRfdG90YWwiLCJ0b3VyaXN0X2NvdW50X2luIiwicGxhY2VfY291bnQiLCJwbGFjZV9uYW1lcyIsIl9pZCIsIm5hbWUiLCJwbGFjZV9sb2NhdGlvbnMiLCJsb2NhdGlvbnMiLCJmb3JFYWNoIiwiZWxlbWVudCIsImxvbmdpdHVkZSIsImxvY2F0aW9uIiwiY29vcmRpbmF0ZXMiLCJsYXRpdHVkZSIsInB1c2giLCJzY2hlZHVsZXNfY291bnRfdG90YWwiLCJzY2hlZHVsZXNfY291bnRfbmV3Iiwic2NoZWR1bGVzX2NvdW50X2NhbmNlbGVkIiwic2NoZWR1bGVzX2NvdW50X25vdGNvbXBsZXRlZCIsInNjaGVkdWxlc19jb3VudF9jb21wbGV0ZWQiLCJzdGF0dXNDb2RlIiwic2V0SGVhZGVyIiwianNvbiIsInN1Y2Nlc3MiLCJkYXNoYm9hcmRWYWx1ZXMiLCJlcnIiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLEtBQUssR0FBR0MsT0FBTyxDQUFDLDBCQUFELENBQXJCOztBQUNBLE1BQU1DLElBQUksR0FBR0QsT0FBTyxDQUFDLGlCQUFELENBQXBCOztBQUNBLE1BQU1FLFFBQVEsR0FBR0YsT0FBTyxDQUFDLHFCQUFELENBQXhCOztBQUVBRyxPQUFPLENBQUNDLFlBQVIsR0FBdUIsT0FBT0MsR0FBUCxFQUFZQyxHQUFaLEVBQWlCQyxJQUFqQixLQUEwQjtBQUM3QyxNQUFJO0FBQ0EsVUFBTUMsV0FBVyxHQUFHLE9BQU1QLElBQUksQ0FBQ1EsSUFBTCxHQUFZQyxjQUFaLEVBQU4sSUFBcUMsQ0FBekQ7QUFDQSxVQUFNQyxtQkFB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QUFFQSw0QkFYRjtBQVk1QkMsUUFBQUEseUJBQXlCLEVBQUVBO0FBWkM7QUFEM0IsS0FBVDtBQWdCSCxHQXRDRCxDQXNDRSxPQUFPTSxHQUFQLEVBQVk7QUFDVjlCLElBQUFBLElBQUksQ0FBQzhCLEdBQUQsQ0FBSjtBQUNIO0FBQ0osQ0ExQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBQbGFjZSA9IHJlcXVpcmUoJy4uL21vZGVscy92aXNpdGluZ1BsYWNlcycpO1xyXG5jb25zdCBVc2VyID0gcmVxdWlyZSgnLi4vbW9kZWxzL3VzZXJzJyk7XHJcbmNvbnN0IFNjaGVkdWxlID0gcmVxdWlyZSgnLi4vbW9kZWxzL3NjaGVkdWxlcycpO1xyXG5cclxuZXhwb3J0cy5nZXREYXNoYm9hcmQgPSBhc3luYyAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgICAgY29uc3QgdXNlcnNfY291bnQgPSBhd2FpdCBVc2VyLmZpbmQoKS5jb3VudERvY3VtZW50cygpIC0gMTtcclxuICAgICAgICBjb25zdCB0b3VyaXN0X2NvdW50X3RvdGFsID0gYXdhaXQgVXNlci5maW5kKHsgXCJyb2xlXCI6IFwidXNlclwiIH0pLmNvdW50RG9jdW1lbnRzKCk7XHJcbiAgICAgICAgY29uc3QgYXNzaXN0YW50X2NvdW50X3RvdGFsID0gYXdhaXQgVXNlci5maW5kKHsgXCJyb2xlXCI6IFwibW9kZXJhdGVyXCIgfSkuY291bnREb2N1bWVudHMoKTtcclxuICAgICAgICBjb25zdCB0b3VyaXN0X2NvdW50X2luID0gYXdhaXQgVXNlci5maW5kKHsgXCJyb2xlXCI6IFwidXNlclwiLCBcInVzZXJzdGF0ZVwiOiBcImluXCIgfSkuY291bnREb2N1bWVudHMoKTtcclxuICAgICAgICBjb25zdCBwbGFjZV9jb3VudCA9IGF3YWl0IFBsYWNlLmZpbmQoKS5jb3VudERvY3VtZW50cygpO1xyXG4gICAgICAgIGNvbnN0IHBsYWNlX25hbWVzID0gYXdhaXQgUGxhY2UuZmluZCh7fSwgeyBfaWQ6IDAsIG5hbWU6IDEgfSk7XHJcbiAgICAgICAgY29uc3QgcGxhY2VfbG9jYXRpb25zID0gYXdhaXQgUGxhY2UuZmluZCh7fSwgeyBfaWQ6IDAsIFwibG9jYXRpb24uY29vcmRpbmF0ZXNcIjogMSB9KTtcclxuICAgICAgICB2YXIgbG9jYXRpb25zID0gW107XHJcbiAgICAgICAgcGxhY2VfbG9jYXRpb25zLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICAgIHZhciBsb25naXR1ZGUgPSBlbGVtZW50LmxvY2F0aW9uLmNvb3JkaW5hdGVzWzBdO1xyXG4gICAgICAgICAgICB2YXIgbGF0aXR1ZGUgPSBlbGVtZW50LmxvY2F0aW9uLmNvb3JkaW5hdGVzWzFdO1xyXG4gICAgICAgICAgICBsb2NhdGlvbnMucHVzaCh7IGxvbmdpdHVkZSwgbGF0aXR1ZGUgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgY29uc3Qgc2NoZWR1bGVzX2NvdW50X3RvdGFsID0gYXdhaXQgU2NoZWR1bGUuZmluZCgpLmNvdW50RG9jdW1lbnRzKCk7XHJcbiAgICAgICAgY29uc3Qgc2NoZWR1bGVzX2NvdW50X25ldyA9IGF3YWl0IFNjaGVkdWxlLmZpbmQoeyBcInN0YXRlXCI6IFwibmV3XCIgfSkuY291bnREb2N1bWVudHMoKTtcclxuICAgICAgICBjb25zdCBzY2hlZHVsZXNfY291bnRfY2FuY2VsZWQgPSBhd2FpdCBTY2hlZHVsZS5maW5kKHsgXCJzdGF0ZVwiOiBcImNhbmNsZWRcIiB9KS5jb3VudERvY3VtZW50cygpO1xyXG4gICAgICAgIGNvbnN0IHNjaGVkdWxlc19jb3VudF9ub3Rjb21wbGV0ZWQgPSBhd2FpdCBTY2hlZHVsZS5maW5kKHsgXCJzdGF0ZVwiOiBcIm5vdGNvbXBsZXRlZFwiIH0pLmNvdW50RG9jdW1lbnRzKCk7XHJcbiAgICAgICAgY29uc3Qgc2NoZWR1bGVzX2NvdW50X2NvbXBsZXRlZCA9IGF3YWl0IFNjaGVkdWxlLmZpbmQoeyBcInN0YXRlXCI6IFwiY29tcGxldGVkXCIgfSkuY291bnREb2N1bWVudHMoKTtcclxuXHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICByZXMuanNvbih7XHJcbiAgICAgICAgICAgIHN1Y2Nlc3M6IHRydWUsIGRhc2hib2FyZFZhbHVlczoge1xyXG4gICAgICAgICAgICAgICAgdXNlcnNfY291bnQ6IHVzZXJzX2NvdW50LFxyXG4gICAgICAgICAgICAgICAgdG91cmlzdF9jb3VudF90b3RhbDogdG91cmlzdF9jb3VudF90b3RhbCxcclxuICAgICAgICAgICAgICAgIGFzc2lzdGFudF9jb3VudF90b3RhbDogYXNzaXN0YW50X2NvdW50X3RvdGFsLFxyXG4gICAgICAgICAgICAgICAgdG91cmlzdF9jb3VudF9pbjogdG91cmlzdF9jb3VudF9pbixcclxuICAgICAgICAgICAgICAgIHBsYWNlX2NvdW50OiBwbGFjZV9jb3VudCxcclxuICAgICAgICAgICAgICAgIHBsYWNlX25hbWVzOiBwbGFjZV9uYW1lcyxcclxuICAgICAgICAgICAgICAgIHBsYWNlX2xvY2F0aW9uczogbG9jYXRpb25zLFxyXG4gICAgICAgICAgICAgICAgc2NoZWR1bGVzX2NvdW50X3RvdGFsOiBzY2hlZHVsZXNfY291bnRfdG90YWwsXHJcbiAgICAgICAgICAgICAgICBzY2hlZHVsZXNfY291bnRfbmV3OiBzY2hlZHVsZXNfY291bnRfbmV3LFxyXG4gICAgICAgICAgICAgICAgc2NoZWR1bGVzX2NvdW50X2NhbmNlbGVkOiBzY2hlZHVsZXNfY291bnRfY2FuY2VsZWQsXHJcbiAgICAgICAgICAgICAgICBzY2hlZHVsZXNfY291bnRfbm90Y29tcGxldGVkOiBzY2hlZHVsZXNfY291bnRfbm90Y29tcGxldGVkLFxyXG4gICAgICAgICAgICAgICAgc2NoZWR1bGVzX2NvdW50X2NvbXBsZXRlZDogc2NoZWR1bGVzX2NvdW50X2NvbXBsZXRlZFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICBuZXh0KGVycik7XHJcbiAgICB9XHJcbn1cclxuXHJcbiJdfQ==\",\"originalCode\":\"const Place = require('../models/visitingPlaces');\\r\\nconst User = require('../models/users');\\r\\nconst Schedule = require('../models/schedules');\\r\\n\\r\\nexports.getDashboard = async (req, res, next) => {\\r\\n try {\\r\\n const users_count = await User.find().countDocuments() - 1;\\r\\n const tourist_count_total = await User.find({ \\\"role\\\": \\\"user\\\" }).countDocuments();\\r\\n const assistant_count_total = await User.find({ \\\"role\\\": \\\"moderater\\\" }).countDocuments();\\r\\n const tourist_count_in = await User.find({ \\\"role\\\": \\\"user\\\", \\\"userstate\\\": \\\"in\\\" }).countDocuments();\\r\\n const place_count = await Place.find().countDocuments();\\r\\n const place_names = await Place.find({}, { _id: 0, name: 1 });\\r\\n const place_locations = await Place.find({}, { _id: 0, \\\"location.coordinates\\\": 1 });\\r\\n var locations = [];\\r\\n place_locations.forEach(element => {\\r\\n var longitude = element.location.coordinates[0];\\r\\n var latitude = element.location.coordinates[1];\\r\\n locations.push({ longitude, latitude });\\r\\n });\\r\\n const schedules_count_total = await Schedule.find().countDocuments();\\r\\n const schedules_count_new = await Schedule.find({ \\\"state\\\": \\\"new\\\" }).countDocuments();\\r\\n const schedules_count_canceled = await Schedule.find({ \\\"state\\\": \\\"cancled\\\" }).countDocuments();\\r\\n const schedules_count_notcompleted = await Schedule.find({ \\\"state\\\": \\\"notcompleted\\\" }).countDocuments();\\r\\n const schedules_count_completed = await Schedule.find({ \\\"state\\\": \\\"completed\\\" }).countDocuments();\\r\\n\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({\\r\\n success: true, dashboardValues: {\\r\\n users_count: users_count,\\r\\n tourist_count_total: tourist_count_total,\\r\\n assistant_count_total: assistant_count_total,\\r\\n tourist_count_in: tourist_count_in,\\r\\n place_count: place_count,\\r\\n place_names: place_names,\\r\\n place_locations: locations,\\r\\n schedules_count_total: schedules_count_total,\\r\\n schedules_count_new: schedules_count_new,\\r\\n schedules_count_canceled: schedules_count_canceled,\\r\\n schedules_count_notcompleted: schedules_count_notcompleted,\\r\\n schedules_count_completed: schedules_count_completed\\r\\n }\\r\\n });\\r\\n } catch (err) {\\r\\n next(err);\\r\\n }\\r\\n}\\r\\n\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/34/dashboardController_34872bbac017cfae6fcc33926d204118.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2548\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\dashboardController.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":9854,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":9851,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
.exports.getDashboard\",\"ranges\":[{\"startOffset\":256,\"endOffset\":2463,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const app = require('../../app');\\n\\nconst server = require(\\\"supertest\\\")(app);\\n\\nconst jwt_decode = require('jwt-decode');\\n\\nconst Users = require('../../models/users');\\n\\nvar userToken;\\nvar assistantToken;\\nvar adminToken;\\nvar passwordAssistant;\\nvar passwordUser;\\nconst admin = {\\n \\\"firstname\\\": \\\"Admin\\\",\\n \\\"lastname\\\": \\\"Admin\\\",\\n \\\"email\\\": \\\"admin@gmail.com\\\",\\n \\\"password\\\": \\\"admin-password\\\"\\n};\\nconst assistant = {\\n \\\"firstname\\\": \\\"Pasan\\\",\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\n \\\"email\\\": \\\"pasanFernamdo@gmail.com\\\"\\n};\\nconst tourist = {\\n \\\"firstname\\\": \\\"Sunil\\\",\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\n \\\"email\\\": \\\"sunilFernamdo@gmail.com\\\"\\n};\\n\\nconst signupAdmin = async () => {\\n await Users.deleteMany({});\\n await server.post(\\\"/users/signup/admin\\\").send(admin);\\n};\\n\\nconst getAdminToken = async () => {\\n if (adminToken) {\\n return adminToken;\\n }\\n\\n await signupAdmin();\\n var creds = {\\n username: admin.email,\\n password: admin.password\\n };\\n const response = await server.post(\\\"/users/login\\\").send(creds);\\n adminToken = response.body.token;\\n return adminToken;\\n};\\n\\nconst addAssistant = async () => {\\n if (!adminToken) {\\n await getAdminToken();\\n }\\n\\n const response = await server.post(\\\"/employees\\\").set(\\\"Authorization\\\", `Bearer ${adminToken}`).send(assistant).expect(200);\\n passwordAssistant = response.body.password;\\n};\\n\\nconst getAssistantToken = async () => {\\n if (assistantToken) {\\n return assistantToken;\\n }\\n\\n if (passwordAssistant == null) {\\n await addAssistant();\\n }\\n\\n var creds = {\\n username: assistant.email,\\n password: passwordAssistant\\n };\\n const response = await server.post(\\\"/users/login\\\").send(creds);\\n assistantToken = response.body.token;\\n return assistantToken;\\n};\\n\\nconst addTourist = async () => {\\n if (!assistantToken) {\\n await getAssistantToken();\\n }\\n\\n const response = await server.post(\\\"/tourists\\\").set(\\\"Authorization\\\", `Bearer ${assistantToken}`).send(tourist).expect(200);\\n passwordUser = response.body.password;\\n};\\n\\nconst getTouristToken = async () => {\\n if (userToken) {\\n return userToken;\\n }\\n\\n if (passwordUser == null) {\\n await addTourist();\\n }\\n\\n var creds = {\\n username: tourist.email,\\n password: passwordUser\\n };\\n const response = await server.post(\\\"/users/login\\\").send(creds);\\n userToken = response.body.token;\\n return userToken;\\n};\\n\\nconst getExistingId = async () => {\\n const newTourist = {\\n \\\"firstname\\\": \\\"Namal\\\",\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\n \\\"email\\\": \\\"namalfernamdo@gmail.com\\\",\\n \\\"mobile\\\": \\\"981114844\\\",\\n \\\"rommnumber\\\": \\\"41\\\"\\n };\\n const tourist = new Users(newTourist);\\n await tourist.save();\\n return tourist._id.toString();\\n};\\n\\nconst getNonExistingId = async () => {\\n const newTourist = {\\n \\\"firstname\\\": \\\"Kamal\\\",\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\n \\\"email\\\": \\\"kamalfernamdo@gmail.com\\\",\\n \\\"username\\\": \\\"kamalfernamdo@gmail.com\\\"\\n };\\n const tourist = new Users(newTourist);\\n await tourist.save();\\n await tourist.remove();\\n return tourist._id.toString();\\n};\\n\\nconst getExistingIdAssistanct = async () => {\\n const newAssistant = {\\n \\\"firstname\\\": \\\"Kasun\\\",\\n \\\"lastname\\\": \\\"Perera\\\",\\n \\\"email\\\": \\\"kasun@gmail.com\\\"\\n };\\n const assistant = new Users(newAssistant);\\n await assistant.save();\\n return assistant._id.toString();\\n};\\n\\nconst getNonExistingIdAssistant = async () => {\\n const newAssistant = {\\n \\\"firstname\\\": \\\"Kamal\\\",\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\n \\\"email\\\": \\\"kamalfernamdo@gmail.com\\\"\\n };\\n const assistant = new Users(newAssistant);\\n await assistant.save();\\n await assistant.remove();\\n return assistant._id.toString();\\n};\\n\\nconst decodeToken = token => {\\n var decoded = jwt_decode(token);\\n return decoded;\\n};\\n\\nmodule.exports = {\\n getAdminToken,\\n getAssistantToken,\\n getTouristToken,\\n decodeToken,\\n addTourist,\\n getTouristToken,\\n getExistingId,\\n getNonExistingId,\\n getExistingIdAssistanct,\\n getNonExistingIdAssistant,\\n addAssistant\\n};\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVzZXJfaGVscGVyLmpzIl0sIm5hbWVzIjpbImFwcCIsInJlcXVpcmUiLCJzZXJ2ZXIiLCJqd3RfZGVjb2RlIiwiVXNlcnMiLCJ1c2VyVG9rZW4iLCJhc3Npc3RhbnRUb2tlbiIsImFkbWluVG9rZW4iLCJwYXNzd29yZEFzc2lzdGFudCIsInBhc3N3b3JkVXNlciIsImFkbWluIiwiYXNzaXN0YW50IiwidG91cmlzdCIsInNpZ251cEFkbWluIiwiZGVsZXRlTWFueSIsInBvc3QiLCJzZW5kIiwiZ2V0QWRtaW5Ub2tlbiIsImNyZWRzIiwidXNlcm5hbWUiLCJlbWFpbCIsInBhc3N3b3JkIiwicmVzcG9uc2UiLCJib2R5IiwidG9rZW4iLCJhZGRBc3Npc3RhbnQiLCJzZXQiLCJleHBlY3QiLCJnZXRBc3Npc3RhbnRUb2tlbiIsImFkZFRvdXJpc3QiLCJnZXRUb3VyaXN0VG9rZW4iLCJnZXRFeGlzdGluZ0lkIiwibmV3VG91cmlzdCIsInNhdmUiLCJfaWQiLCJ0b1N0cmluZyIsImdldE5vbkV4aXN0aW5nSWQiLCJyZW1vdmUiLCJnZXRFeGlzdGluZ0lkQXNzaXN0YW5jdCIsIm5ld0Fzc2lzdGFudCIsImdldE5vbkV4aXN0aW5nSWRBc3Npc3RhbnQiLCJkZWNvZGVUb2tlbiIsImRlY29kZWQiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxHQUFHLEdBQUdDLE9BQU8sQ0FBQyxXQUFELENBQW5COztBQUNBLE1BQU1DLE1BQU0sR0FBR0QsT0FBTyxDQUFDLFdBQUQsQ0FBUCxDQUFxQkQsR0FBckIsQ0FBZjs7QUFDQSxNQUFNRyxVQUFVLEdBQUdGLE9BQU8sQ0FBQyxZQUFELENBQTFCOztBQUNBLE1BQU1HLEtBQUssR0FBR0gsT0FBTyxDQUFDLG9CQUFELENBQXJCOztBQUVBLElBQUlJLFNBQUo7QUFDQSxJQUFJQyxjQUFKO0FBQ0EsSUFBSUMsVUFBSjtBQUNBLElBQUlDLGlCQUFKO0FBQ0EsSUFBSUMsWUFBSjtBQUVBLE1BQU1DLEtB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dGVudCI6WyJjb25zdCBhcHAgPSByZXF1aXJlKCcuLi8uLi9hcHAnKTtcclxuY29uc3Qgc2VydmVyID0gcmVxdWlyZShcInN1cGVydGVzdFwiKShhcHApO1xyXG5jb25zdCBqd3RfZGVjb2RlID0gcmVxdWlyZSgnand0LWRlY29kZScpO1xyXG5jb25zdCBVc2VycyA9IHJlcXVpcmUoJy4uLy4uL21vZGVscy91c2VycycpO1xyXG5cclxudmFyIHVzZXJUb2tlbjtcclxudmFyIGFzc2lzdGFudFRva2VuO1xyXG52YXIgYWRtaW5Ub2tlbjtcclxudmFyIHBhc3N3b3JkQXNzaXN0YW50O1xyXG52YXIgcGFzc3dvcmRVc2VyO1xyXG5cclxuY29uc3QgYWRtaW4gPSB7XHJcbiAgICBcImZpcnN0bmFtZVwiOiBcIkFkbWluXCIsXHJcbiAgICBcImxhc3RuYW1lXCI6IFwiQWRtaW5cIixcclxuICAgIFwiZW1haWxcIjogXCJhZG1pbkBnbWFpbC5jb21cIixcclxuICAgIFwicGFzc3dvcmRcIjogXCJhZG1pbi1wYXNzd29yZFwiXHJcbn07XHJcbmNvbnN0IGFzc2lzdGFudCA9IHtcclxuICAgIFwiZmlyc3RuYW1lXCI6IFwiUGFzYW5cIixcclxuICAgIFwibGFzdG5hbWVcIjogXCJGZXJuYW1kb1wiLFxyXG4gICAgXCJlbWFpbFwiOiBcInBhc2FuRmVybmFtZG9AZ21haWwuY29tXCJcclxufTtcclxuY29uc3QgdG91cmlzdCA9IHtcclxuICAgIFwiZmlyc3RuYW1lXCI6IFwiU3VuaWxcIixcclxuICAgIFwibGFzdG5hbWVcIjogXCJGZXJuYW1kb1wiLFxyXG4gICAgXCJlbWFpbFwiOiBcInN1bmlsRmVybmFtZG9AZ21haWwuY29tXCJcclxufTtcclxuXHJcbmNvbnN0IHNpZ251cEFkbWluID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgYXdhaXQgVXNlcnMuZGVsZXRlTWFueSh7fSk7XHJcbiAgICBhd2FpdCBzZXJ2ZXJcclxuICAgICAgICAucG9zdChcIi91c2Vycy9zaWdudXAvYWRtaW5cIilcclxuICAgICAgICAuc2VuZChhZG1pbik7XHJcbn07XHJcblxyXG5jb25zdCBnZXRBZG1pblRva2VuID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgaWYgKGFkbWluVG9rZW4pIHtcclxuICAgICAgICByZXR1cm4gYWRtaW5Ub2tlbjtcclxuICAgIH1cclxuICAgIGF3YWl0IHNpZ251cEFkbWluKCk7XHJcbiAgICB2YXIgY3JlZHMgPSB7XHJcbiAgICAgICAgdXNlcm5hbWU6IGFkbWluLmVtYWlsLFxyXG4gICAgICAgIHBhc3N3b3JkOiBhZG1pbi5wYXNzd29yZCxcclxuICAgIH07XHJcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHNlcnZlclxyXG4gICAgICAgIC5wb3N0KFwiL3VzZXJzL2xvZ2luXCIpXHJcbiAgICAgICAgLnNlbmQoY3JlZHMpO1xyXG4gICAgYWRtaW5Ub2tlbiA9IHJlc3BvbnNlLmJvZHkudG9rZW47XHJcbiAgICByZXR1cm4gYWRtaW5Ub2tlbjtcclxufVxyXG5cclxuY29uc3QgYWRkQXNzaXN0YW50ID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgaWYgKCFhZG1pblRva2VuKSB7XHJcbiAgICAgICAgYXdhaXQgZ2V0QWRtaW5Ub2tlbigpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBzZXJ2ZXJcclxuICAgICAgICAucG9zdChcIi9lbXBsb3llZXNcIilcclxuICAgICAgICAuc2V0KFwiQXV0aG9yaXphdGlvblwiLCBgQmVhcmVyICR7YWRtaW5Ub2tlbn1gKVxyXG4gICAgICAgIC5zZW5kKGFzc2lzdGFudClcclxuICAgICAgICAuZXhwZWN0KDIwMCk7XHJcbiAgICAgICAgICAgXHJcbiAgICBwYXNzd29yZEFzc2lzdGFudCA9ICByZXNwb25zZS5ib2R5LnBhc3N3b3JkO1xyXG59O1xyXG5cclxuY29uc3QgZ2V0QXNzaXN0YW50VG9rZW4gPSBhc3luYyAoKSA9PiB7XHJcbiAgICBpZiAoYXNzaXN0YW50VG9rZW4pIHtcclxuICAgICAgICByZXR1cm4gYXNzaXN0YW50VG9rZW47XHJcbiAgICB9XHJcbiAgICBpZihwYXNzd29yZEFzc2lzdGFudD09bnVsbCl7YXdhaXQgYWRkQXNzaXN0YW50KCk7fVxyXG4gICAgdmFyIGNyZWRzID0ge1xyXG4gICAgICAgIHVzZXJuYW1lOiBhc3Npc3RhbnQuZW1haWwsXHJcbiAgICAgICAgcGFzc3dvcmQ6IHBhc3N3b3JkQXNzaXN0YW50LFxyXG4gICAgfTtcclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgc2VydmVyXHJcbiAgICAgICAgLnBvc3QoXCIvdXNlcnMvbG9naW5cIilcclxuICAgICAgICAuc2VuZChjcmVkcyk7XHJcbiAgICBhc3Npc3RhbnRUb2tlbiA9IHJlc3BvbnNlLmJvZHkudG9rZW47XHJcbiAgICByZXR1cm4gYXNzaXN0YW50VG9rZW47XHJcbn1cclxuXHJcbmNvbnN0IGFkZFRvdXJpc3QgPSBhc3luYyAoKSA9PiB7XHJcbiAgICBpZiAoIWFzc2lzdGFudFRva2VuKSB7XHJcbiAgICAgICAgYXdhaXQgZ2V0QXNzaXN0YW50VG9rZW4oKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgc2VydmVyXHJcbiAgICAgICAgLnBvc3QoXCIvdG91cmlzdHNcIilcclxuICAgICAgICAuc2V0KFwiQXV0aG9yaXphdGlvblwiLCBgQmVhcmVyICR7YXNzaXN0YW50VG9rZW59YClcclxuICAgICAgICAuc2VuZCh0b3VyaXN0KVxyXG4gICAgICAgIC5leHBlY3QoMjAwKTtcclxuICAgIHBhc3N3b3JkVXNlcj0gIHJlc3BvbnNlLmJvZHkucGFzc3dvcmQ7XHJcbn07XHJcbiBcclxuXHJcbmNvbnN0IGdldFRvdXJpc3RUb2tlbiA9IGFzeW5jICgpID0+IHtcclxuICAgIGlmICh1c2VyVG9rZW4pIHtcclxuICAgICAgICByZXR1cm4gdXNlclRva2VuO1xyXG4gICAgfVxyXG4gICAgaWYocGFzc3dvcmRVc2VyID09IG51bGwpIHsgYXdhaXQgYWRkVG91cmlzdCgpO31cclxuICAgIHZhciBjcmVkcyA9IHtcclxuICAgICAgICB1c2VybmFtZTogdG91cmlzdC5lbWFpbCxcclxuICAgICAgICBwYXNzd29yZDogcGFzc3dvcmRVc2VyLFxyXG4gICAgfTtcclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgc2VydmVyXHJcbiAgICAgICAgLnBvc3QoXCIvdXNlcnMvbG9naW5cIilcclxuICAgICAgICAuc2VuZChjcmVkcyk7XHJcbiAgICB1c2VyVG9rZW4gPSByZXNwb25zZS5ib2R5LnRva2VuO1xyXG4gICAgcmV0dXJuIHVzZXJUb2tlbjtcclxufVxyXG5cclxuY29uc3QgZ2V0RXhpc3RpbmdJZCA9IGFzeW5jICgpID0+IHtcclxuICAgIGNvbnN0IG5ld1RvdXJpc3QgPSB7XHJcbiAgICAgICAgXCJmaXJzdG5hbWVcIjogXCJOYW1hbFwiLFxyXG4gICAgICAgIFwibGFzdG5hbWVcIjogXCJGZXJuYW1kb1wiLFxyXG4gICAgICAgIFwiZW1haWxcIjogXCJuYW1hbGZlcm5hbWRvQGdtYWlsLmNvbVwiLFxyXG4gICAgICAgIFwibW9iaWxlXCI6IFwiOTgxMTE0ODQ0XCIsXHJcbiAgICAgICAgXCJyb21tbnVtYmVyXCIgOiBcIjQxXCIsXHJcblxyXG4gICAgfVxyXG4gICAgY29uc3QgdG91cmlzdCA9IG5ldyBVc2VycyhuZXdUb3VyaXN0KTtcclxuICAgIGF3YWl0IHRvdXJpc3Quc2F2ZSgpO1xyXG5cclxuICAgIHJldHVybiB0b3VyaXN0Ll9pZC50b1N0cmluZygpO1xyXG5cclxuICAgIFxyXG59XHJcblxyXG5jb25zdCBnZXROb25FeGlzdGluZ0lkID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgY29uc3QgbmV3VG91cmlzdCA9IHtcclxuICAgICAgICBcImZpcnN0bmFtZVwiOiBcIkthbWFsXCIsXHJcbiAgICAgICAgXCJsYXN0bmFtZVwiOiBcIkZlcm5hbWRvXCIsXHJcbiAgICAgICAgXCJlbWFpbFwiOiBcImthbWFsZmVybmFtZG9AZ21haWwuY29tXCIsXHJcbiAgICAgICAgXCJ1c2VybmFtZVwiOiBcImthbWFsZmVybmFtZG9AZ21haWwuY29tXCJcclxuICAgIH1cclxuICAgIGNvbnN0IHRvdXJpc3QgPSBuZXcgVXNlcnMobmV3VG91cmlzdCk7XHJcbiAgICBhd2FpdCB0b3VyaXN0LnNhdmUoKTtcclxuICAgIGF3YWl0IHRvdXJpc3QucmVtb3ZlKCk7XHJcblxyXG4gICAgcmV0dXJuIHRvdXJpc3QuX2lkLnRvU3RyaW5nKCk7XHJcbn1cclxuXHJcbmNvbnN0IGdldEV4aXN0aW5nSWRBc3Npc3RhbmN0ID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgY29uc3QgbmV3QXNzaXN0YW50ID0ge1xyXG4gICAgICAgIFwiZmlyc3RuYW1lXCI6IFwiS2FzdW5cIixcclxuICAgICAgICBcImxhc3RuYW1lXCI6IFwiUGVyZXJhXCIsXHJcbiAgICAgICAgXCJlbWFpbFwiOiBcImthc3VuQGdtYWlsLmNvbVwiLFxyXG4gICAgfVxyXG4gICAgY29uc3QgYXNzaXN0YW50ID0gbmV3IFVzZXJzKG5ld0Fzc2lzdGFudCk7XHJcbiAgICBhd2FpdCBhc3Npc3RhbnQuc2F2ZSgpO1xyXG5cclxuICAgIHJldHVybiBhc3Npc3RhbnQuX2lkLnRvU3RyaW5nKCk7XHJcblxyXG4gICAgXHJcbn1cclxuXHJcbmNvbnN0IGdldE5vbkV4aXN0aW5nSWRBc3Npc3RhbnQgPSBhc3luYyAoKSA9PiB7XHJcbiAgICBjb25zdCBuZXdBc3Npc3RhbnQgPSB7XHJcbiAgICAgICAgXCJmaXJzdG5hbWVcIjogXCJLYW1hbFwiLFxyXG4gICAgICAgIFwibGFzdG5hbWVcIjogXCJGZXJuYW1kb1wiLFxyXG4gICAgICAgIFwiZW1haWxcIjogXCJrYW1hbGZlcm5hbWRvQGdtYWlsLmNvbVwiXHJcbiAgICB9XHJcbiAgICBjb25zdCBhc3Npc3RhbnQgPSBuZXcgVXNlcnMobmV3QXNzaXN0YW50KTtcclxuICAgIGF3YWl0IGFzc2lzdGFudC5zYXZlKCk7XHJcbiAgICBhd2FpdCBhc3Npc3RhbnQucmVtb3ZlKCk7XHJcblxyXG4gICAgcmV0dXJuIGFzc2lzdGFudC5faWQudG9TdHJpbmcoKTtcclxufVxyXG5cclxuY29uc3QgZGVjb2RlVG9rZW4gPSAodG9rZW4pID0+IHtcclxuICAgIHZhciBkZWNvZGVkID0gand0X2RlY29kZSh0b2tlbik7XHJcbiAgICByZXR1cm4gZGVjb2RlZDtcclxufVxyXG5cclxubW9kdWxlLmV4cG9ydHMgPSB7XHJcbiAgICBnZXRBZG1pblRva2VuLCBnZXRBc3Npc3RhbnRUb2tlbiwgZ2V0VG91cmlzdFRva2VuLCBkZWNvZGVUb2tlbiwgYWRkVG91cmlzdCwgZ2V0VG91cmlzdFRva2VuICxnZXRFeGlzdGluZ0lkICxnZXROb25FeGlzdGluZ0lkLCBnZXRFeGlzdGluZ0lkQXNzaXN0YW5jdCwgZ2V0Tm9uRXhpc3RpbmdJZEFzc2lzdGFudCwgYWRkQXNzaXN0YW50XHJcbn1cclxuIl19\",\"originalCode\":\"const app = require('../../app');\\r\\nconst server = require(\\\"supertest\\\")(app);\\r\\nconst jwt_decode = require('jwt-decode');\\r\\nconst Users = require('../../models/users');\\r\\n\\r\\nvar userToken;\\r\\nvar assistantToken;\\r\\nvar adminToken;\\r\\nvar passwordAssistant;\\r\\nvar passwordUser;\\r\\n\\r\\nconst admin = {\\r\\n \\\"firstname\\\": \\\"Admin\\\",\\r\\n \\\"lastname\\\": \\\"Admin\\\",\\r\\n \\\"email\\\": \\\"admin@gmail.com\\\",\\r\\n \\\"password\\\": \\\"admin-password\\\"\\r\\n};\\r\\nconst assistant = {\\r\\n \\\"firstname\\\": \\\"Pasan\\\",\\r\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\r\\n \\\"email\\\": \\\"pasanFernamdo@gmail.com\\\"\\r\\n};\\r\\nconst tourist = {\\r\\n \\\"firstname\\\": \\\"Sunil\\\",\\r\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\r\\n \\\"email\\\": \\\"sunilFernamdo@gmail.com\\\"\\r\\n};\\r\\n\\r\\nconst signupAdmin = async () => {\\r\\n await Users.deleteMany({});\\r\\n await server\\r\\n .post(\\\"/users/signup/admin\\\")\\r\\n .send(admin);\\r\\n};\\r\\n\\r\\nconst getAdminToken = async () => {\\r\\n if (adminToken) {\\r\\n return adminToken;\\r\\n }\\r\\n await signupAdmin();\\r\\n var creds = {\\r\\n username: admin.email,\\r\\n password: admin.password,\\r\\n };\\r\\n const response = await server\\r\\n .post(\\\"/users/login\\\")\\r\\n .send(creds);\\r\\n adminToken = response.body.token;\\r\\n return adminToken;\\r\\n}\\r\\n\\r\\nconst addAssistant = async () => {\\r\\n if (!adminToken) {\\r\\n await getAdminToken();\\r\\n }\\r\\n const response = await server\\r\\n .post(\\\"/employees\\\")\\r\\n .set(\\\"Authorization\\\", `Bearer ${adminToken}`)\\r\\n .send(assistant)\\r\\n .expect(200);\\r\\n \\r\\n passwordAssistant = response.body.password;\\r\\n};\\r\\n\\r\\nconst getAssistantToken = async () => {\\r\\n if (assistantToken) {\\r\\n return assistantToken;\\r\\n }\\r\\n if(passwordAssistant==null){await addAssistant();}\\r\\n var creds = {\\r\\n username: assistant.email,\\r\\n password: passwordAssistant,\\r\\n };\\r\\n const response = await server\\r\\n .post(\\\"/users/login\\\")\\r\\n .send(creds);\\r\\n assistantToken = response.body.token;\\r\\n return assistantToken;\\r\\n}\\r\\n\\r\\nconst addTourist = async () => {\\r\\n if (!assistantToken) {\\r\\n await getAssistantToken();\\r\\n }\\r\\n const response = await server\\r\\n .post(\\\"/tourists\\\")\\r\\n .set(\\\"Authorization\\\", `Bearer ${assistantToken}`)\\r\\n .send(tourist)\\r\\n .expect(200);\\r\\n passwordUser= response.body.password;\\r\\n};\\r\\n \\r\\n\\r\\nconst getTouristToken = async () => {\\r\\n if (userToken) {\\r\\n return userToken;\\r\\n }\\r\\n if(passwordUser == null) { await addTourist();}\\r\\n var creds = {\\r\\n username: tourist.email,\\r\\n password: passwordUser,\\r\\n };\\r\\n const response = await server\\r\\n .post(\\\"/users/login\\\")\\r\\n .send(creds);\\r\\n userToken = response.body.token;\\r\\n return userToken;\\r\\n}\\r\\n\\r\\nconst getExistingId = async () => {\\r\\n const newTourist = {\\r\\n \\\"firstname\\\": \\\"Namal\\\",\\r\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\r\\n \\\"email\\\": \\\"namalfernamdo@gmail.com\\\",\\r\\n \\\"mobile\\\": \\\"981114844\\\",\\r\\n \\\"rommnumber\\\" : \\\"41\\\",\\r\\n\\r\\n }\\r\\n const tourist = new Users(newTourist);\\r\\n await tourist.save();\\r\\n\\r\\n return tourist._id.toString();\\r\\n\\r\\n \\r\\n}\\r\\n\\r\\nconst getNonExistingId = async () => {\\r\\n const newTourist = {\\r\\n \\\"firstname\\\": \\\"Kamal\\\",\\r\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\r\\n \\\"email\\\": \\\"kamalfernamdo@gmail.com\\\",\\r\\n \\\"username\\\": \\\"kamalfernamdo@gmail.com\\\"\\r\\n }\\r\\n const tourist = new Users(newTourist);\\r\\n await tourist.save();\\r\\n await tourist.remove();\\r\\n\\r\\n return tourist._id.toString();\\r\\n}\\r\\n\\r\\nconst getExistingIdAssistanct = async () => {\\r\\n const newAssistant = {\\r\\n \\\"firstname\\\": \\\"Kasun\\\",\\r\\n \\\"lastname\\\": \\\"Perera\\\",\\r\\n \\\"email\\\": \\\"kasun@gmail.com\\\",\\r\\n }\\r\\n const assistant = new Users(newAssistant);\\r\\n await assistant.save();\\r\\n\\r\\n return assistant._id.toString();\\r\\n\\r\\n \\r\\n}\\r\\n\\r\\nconst getNonExistingIdAssistant = async () => {\\r\\n const newAssistant = {\\r\\n \\\"firstname\\\": \\\"Kamal\\\",\\r\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\r\\n \\\"email\\\": \\\"kamalfernamdo@gmail.com\\\"\\r\\n }\\r\\n const assistant = new Users(newAssistant);\\r\\n await assistant.save();\\r\\n await assistant.remove();\\r\\n\\r\\n return assistant._id.toString();\\r\\n}\\r\\n\\r\\nconst decodeToken = (token) => {\\r\\n var decoded = jwt_decode(token);\\r\\n return decoded;\\r\\n}\\r\\n\\r\\nmodule.exports = {\\r\\n getAdminToken, getAssistantToken, getTouristToken, decodeToken, addTourist, getTouristToken ,getExistingId ,getNonExistingId, getExistingIdAssistanct, getNonExistingIdAssistant, addAssistant\\r\\n}\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/79/user_helper_79166e334a8b342d542dc0574b645dc7.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2692\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\tests\\\\helpers\\\\user_helper.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":16466,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":16463,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"signupAdmin\",\"ranges\":[{\"startOffset\":714,\"endOffset\":815,\"count\":3}],\"isBlockCoverage\":false},{\"functionName\":\"getAdminToken\",\"ranges\":[{\"startOffset\":840,\"endOffset\":1126,\"count\":4}],\"isBlockCoverage\":false},{\"functionName\":\"addAssistant\",\"ranges\":[{\"startOffset\":1150,\"endOffset\":1389,\"count\":3}],\"isBlockCoverage\":false},{\"functionName\":\"getAssistantToken\",\"ranges\":[{\"startOffset\":1418,\"endOffset\":1770,\"count\":2}],\"isBlockCoverage\":false},{\"functionName\":\"addTourist\",\"ranges\":[{\"startOffset\":1792,\"endOffset\":2035,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getTouristToken\",\"ranges\":[{\"startOffset\":2062,\"endOffset\":2380,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getExistingId\",\"ranges\":[{\"startOffset\":2405,\"endOffset\":2690,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getNonExistingId\",\"ranges\":[{\"startOffset\":2718,\"endOffset\":3021,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getExistingIdAssistanct\",\"ranges\":[{\"startOffset\":3056,\"endOffset\":3290,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getNonExistingIdAssistant\",\"ranges\":[{\"startOffset\":3327,\"endOffset\":3599,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"decodeToken\",\"ranges\":[{\"startOffset\":3622,\"endOffset\":3687,\"count\":0}],\"isBlockCoverage\":false}]}}]},{\"leaks\":false,\"numFailingTests\":0,\"numPassingTests\":2,\"numPendingTests\":0,\"numTodoTests\":0,\"openHandles\":[],\"perfStats\":{\"end\":1615204321758,\"runtime\":2011,\"slow\":false,\"start\":1615204319747},\"skipped\":false,\"snapshot\":{\"added\":0,\"fileDeleted\":false,\"matched\":0,\"unchecked\":0,\"unmatched\":0,\"updated\":0,\"uncheckedKeys\":[]},\"testFilePath\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\tests\\\\dashboard.test.js\",\"testResults\":[{\"ancestorTitles\":[\"GET /dashboard\"],\"duration\":82,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"GET /dashboard requires Authorization - 403\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"requires Authorization - 403\"},{\"ancestorTitles\":[\"GET /dashboard\"],\"duration\":54,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"GET /dashboard with Authorization - 200\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"with Authorization - 200\"}],\"failureMessage\":null,\"v8Coverage\":[{\"codeTransformResult\":{\"code\":\"var createError = require('http-errors');\\n\\nvar express = require('express');\\n\\nconst cors = require('cors');\\n\\nvar path = require('path');\\n\\nconst bodyParser = require('body-parser');\\n\\nconst expressValidator = require('express-validator');\\n\\nvar session = require('express-session');\\n\\nvar FileStore = require('session-file-store')(session);\\n\\nvar cookieParser = require('cookie-parser');\\n\\nvar logger = require('morgan');\\n\\nvar passport = require('passport');\\n\\nconst mongoose = require('mongoose');\\n\\nrequire('dotenv').config();\\n\\nvar userRouter = require('./routes/userRouter');\\n\\nvar employeeRouter = require('./routes/employeeRouter');\\n\\nvar placeRouter = require('./routes/placeRouter');\\n\\nvar scheduleRouter = require('./routes/scheduleRouter');\\n\\nvar touristRouter = require('./routes/touristRouter');\\n\\nvar dashboardRouter = require('./routes/dashboardRouter');\\n\\nvar app = express(); // view engine setup\\n\\napp.set('views', path.join(__dirname, 'views'));\\napp.set('view engine', 'jade');\\napp.use(cors());\\napp.use(passport.initialize());\\napp.use(bodyParser.json());\\napp.use(cookieParser('the-immortal-coils')); // app.use(logger('dev'));\\n\\napp.use(express.json());\\napp.use(express.urlencoded({\\n extended: false\\n}));\\napp.use(cookieParser()); // app.use(express.static('build'));\\n\\napp.use(express.static(path.join(__dirname, 'build')));\\nvar url = process.env.mongoUrl;\\n\\nif (process.env.NODE_ENV === 'test') {\\n url = process.env.testMongoUrl;\\n}\\n\\nmongoose.connect(url, {\\n useNewUrlParser: true,\\n useCreateIndex: true,\\n useUnifiedTopology: true\\n}).then(db => {}, err => {\\n if (err) {\\n console.log('👺 Error connecting to MongoDB');\\n } else {\\n console.log('✅ Connected to MongoDB');\\n }\\n});\\napp.use('/users', userRouter);\\napp.use('/employees', employeeRouter);\\napp.use('/places', placeRouter);\\napp.use('/schedules', scheduleRouter);\\napp.use('/tourists', touristRouter);\\napp.use('/dashboard', dashboardRouter); // catch 404 and forward to error handler\\n\\napp.use(function (req, res, next) {\\n next(createError(404));\\n}); // error handler\\n\\napp.use(function (err, req, res, next) {\\n // set locals, only providing error in development\\n res.locals.message = err.message;\\n res.locals.error = req.app.get('env') === 'development' ? err : {}; // render the error page\\n\\n res.status(err.status || 500);\\n res.render('error');\\n});\\nmodule.exports = app;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC5qcyJdLCJuYW1lcyI6WyJjcmVhdGVFcnJvciIsInJlcXVpcmUiLCJleHByZXNzIiwiY29ycyIsInBhdGgiLCJib2R5UGFyc2VyIiwiZXhwcmVzc1ZhbGlkYXRvciIsInNlc3Npb24iLCJGaWxlU3RvcmUiLCJjb29raWVQYXJzZXIiLCJsb2dnZXIiLCJwYXNzcG9ydCIsIm1vbmdvb3NlIiwiY29uZmlnIiwidXNlclJvdXRlciIsImVtcGxveWVlUm91dGVyIiwicGxhY2VSb3V0ZXIiLCJzY2hlZHVsZVJvdXRlciIsInRvdXJpc3RSb3V0ZXIiLCJkYXNoYm9hcmRSb3V0ZXIiLCJhcHAiLCJzZXQiLCJqb2luIiwiX19kaXJuYW1lIiwidXNlIiwiaW5pdGlhbGl6ZSIsImpzb24iLCJ1cmxlbmNvZGVkIiwiZXh0ZW5kZWQiLCJzdGF0aWMiLCJ1cmwiLCJwcm9jZXNzIiwiZW52IiwibW9uZ29VcmwiLCJOT0RFX0VOViIsInRlc3RNb25nb1VybCIsImNvbm5lY3QiLCJ1c2VOZXdVcmxQYXJzZXIiLCJ1c2VDcmVhdGVJbmRleCIsInVzZVVuaWZpZWRUb3BvbG9neSIsInRoZW4iLCJkYiIsImVyciIsImNvbnNvbGUiLCJsb2ciLCJyZXEiLCJyZXMiLCJuZXh0IiwibG9jYWxzIiwibWVzc2FnZSIsImVycm9yIiwiZ2V0Iiwic3RhdHVzIiwicmVuZGVyIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsSUFBSUEsV0FBVyxHQUFHQyxPQUFPLENBQUMsYUFBRCxDQUF6Qjs7QUFDQSxJQUFJQyxPQUFPLEdBQUdELE9BQU8sQ0FBQyxTQUFELENBQXJCOztBQUNBLE1BQU1FLElBQUksR0FBR0YsT0FBTyxDQUFDLE1BQUQsQ0FBcEI7O0FBQ0EsSUFBSUcsSUFBSSxHQUFHSCxPQUFPLENBQUMsTUFBRCxDQUFsQjs7QUFDQSxNQUFNSSxVQUFVLEdBQUdKLE9BQU8sQ0FBQyxhQUFELENBQTFCOztBQUNBLE1BQU1LLGdCQUFnQixHQUFHTCxPQUFPLENBQUMsbUJBQUQsQ0FBaEM7O0FBQ0EsSUFBSU0sT0FBTyxHQUFHTixPQUFPLENBQUMsaUJBQUQsQ0FBckI7O0FBQ0EsSUFBSU8sU0FBUyxHQUFHUCxPQUFPLENBQUMsb0JBQUQsQ0FBUCxDQUE4Qk0sT0FBOUIsQ0FBaEI7O0FBQ0EsSUFBSUUsWUFBWSxHQUFHUixPQUFPLENBQUMsZUFBRCxDQUExQjs7QUFDQSxJQUFJUyxNQUFNLEdBQUdULE9BQU8sQ0FBQyxRQUFELENBQXBCOztBQUNBLElBQUlVLFFBQVEsR0FBR1YsT0FBTyxDQUFDLFVBQUQsQ0FBdEI7O0FBQ0EsTUFBTVcsUUFBUSxHQUFHWCxPQUFPLENBQUMsVUFBRCxDQUF4Qjs7QUFDQUEsT0FBTyxDQUFDLFFBQUQsQ0FBUCxDQUFrQlksTUFBbEI7O0FBRUEsSUFBSUMsVUFBVSxHQUFHYixPQUFPLENBQUMscUJBQUQsQ0FBeEI7O0FBQ0EsSUFBSWMsY0FBYyxHQUFHZCxPQUFPLENBQUMseUJBQUQsQ0FBNUI7O0FBQ0EsSUFBSWUsV0FBVyxHQUFHZixPQUFPLENBQUMsc0JBQUQsQ0FBekI7O0FBQ0EsSUFBSWdCLGNBQWMsR0FBR2hCLE9BQU8sQ0FBQyx5QkFBRCxDQUE1Qjs7QUFDQSxJQUFJaUIsYUFBYSxHQUFHakIsT0FBTyxDQUFDLHdCQUFELENBQTNCOztBQUNBLElBQUlrQixlQUFlLEdBQUdsQixPQUFPLENBQUMsMEJBQUQsQ0FBN0I7O0FBRUEsSUFBSW1CLEdBQUcsR0FBR2xCLE9BQU8sRUFBakIsQyxDQUVBOztBQUNBa0IsR0FBRyxDQUFDQyxHQUFKLENBQVEsT0FBUixFQUFpQmpCLElBQUksQ0FBQ2tCLElBQUwsQ0FBVUMsU0FBVixFQUFxQixPQUFyQixDQUFqQjtBQUNBSCxHQUFHLENBQUNDLEdBQUosQ0FBUSxhQUFSLEVBQXVCLE1BQXZCO0FBQ0FELEdBQUcsQ0FBQ0ksR0FBSixDQUFRckIsSUFBSSxFQUFaO0FBQ0FpQixHQUFHLENBQUNJLEdBQUosQ0FBUWIsUUFBUSxDQUFDYyxVQUFULEVBQVI7QUFFQUwsR0FBRyxDQUFDSSxHQUFKLENBQVFuQixVQUFVLENBQUNxQixJQUFYLEVBQVI7QUFFQU4sR0FBRyxDQUFDSSxHQUFKLENBQVFmLFlBQVksQ0FBQyxvQkFBRCxDQUFwQixFLENBQ0E7O0FBQ0FXLEdBQUcsQ0FBQ0ksR0FBSixDQUFRdEIsT0FBTyxDQUFDd0IsSUFBUixFQUFSO0FBQ0FOLEdBQUcsQ0FBQ0ksR0FBSixDQUFRdEIsT0FBTyxDQUFDeUIsVUFBUixDQUFtQjtBQUFFQyxFQUFBQSxRQUFRLEVBQUU7QUFBWixDQUFuQixDQUFSO0FBQ0FSLEdBQUcsQ0FBQ0ksR0FBSixDQUFRZixZQUFZLEVBQXBCLEUsQ0FDQTs7QUFDQVcsR0FBRyxDQUFDSSxHQUFKLENBQVF0QixPQUFPLENBQUMyQixNQUFSLENBQWV6QixJQUFJLENBQUNrQixJQUFMLENBQVVDLFNBQVYsRUFBcUIsT0FBckIsQ0FBZixDQUFSO0FBRUEsSUFBSU8sR0FBRyxHQUFHQyxPQUFPLENBQUNDLEdBQVIsQ0FBWUMsUUFBdEI7O0FBQ0EsSUFBSUYsT0FBTyxDQUFDQyxHQUFSLENBQVlFLFFBQVosS0FBeUIsTUFBN0IsRUFBcUM7QUFDbkNKLEVBQUFBLEdBQUcsR0FBR0MsT0FBTyxDQUFDQyxHQUFSLENBQVlHLFlBQWxCO0FBQ0Q7O0FBQ0R2QixRQUFRLENBQUN3QixPQUFULENBQWlCTixHQUFqQixFQUFzQjtBQUFFTyxFQUFBQSxlQUFlLEVBQUUsSUFBbkI7QUFBeUJDLEVBQUFBLGNBQWMsRUFBRSxJQUF6QztBQUErQ0MsRUFBQUEsa0JBQWtCLEVBQUU7QUFBbkUsQ0FBdEIsRUFBaUdDLElBQWpHLENBQXVHQyxFQUFELElBQVEsQ0FDN0csQ0FERCxFQUNJQyxHQUFELElBQVM7QUFDVixNQUFJQSxHQUFKLEVBQVM7QUFDUEMsSUFBQUEsT0FBTyxDQUFDQyxHQUFSLENBQVksaUNBQVo7QUFDRCxHQUZELE1BRU87QUFDTEQsSUFBQUEsT0FBTyxDQUFDQyxHQUFSLENBQVkseUJBQVo7QUFDRDtBQUNGLENBUEQ7QUFTQXhCLEdBQUcsQ0FBQ0ksR0FBSixDQUFRLFFBQVIsRUFBa0JWLFVBQWxCO0FBQ0FNLEdBQUcsQ0FBQ0ksR0FBSixDQUFRLFlBQVIsRUFBc0JULGNBQXRCO0FBQ0FLLEdBQUcsQ0FBQ0ksR0FBSixDQUFRLFNBQVIsRUFBbUJSLFdBQW5CO0FBQ0FJLEdBQUcsQ0FBQ0ksR0FBSixDQUFRLFlBQVIsRUFBc0JQLGNBQXRCO0FBQ0FHLEdBQUcsQ0FBQ0ksR0FBSixDQUFRLFdBQVIsRUFBcUJOLGFBQXJCO0FBQ0FFLEdBQUcsQ0FBQ0ksR0FBSixDQUFRLFlBQVIsRUFBc0JMLGVBQXRCLEUsQ0FFQTs7QUFDQUMsR0FBRyxDQUFDSSxHQUFKLENBQVEsVUFBVXFCLEdBQVYsRUFBZUMsR0FBZixFQUFvQkMsSUFBcEIsRUFBMEI7QUFDaENBLEVBQUFBLElBQUksQ0FBQy9DLFdBQVcsQ0FBQyxHQUFELENBQVosQ0FBSjtBQUNELENBRkQsRSxDQUlBOztBQUNBb0IsR0FBRyxDQUFDSSxHQUFKLENBQVEsVUFBVWtCLEdBQVYsRUFBZUcsR0FBZixFQUFvQkMsR0FBcEIsRUFBeUJDLElBQXpCLEVBQStCO0FBQ3JDO0FBQ0FELEVBQUFBLEdBQUcsQ0FBQ0UsTUFBSixDQUFXQyxPQUFYLEdBQXFCUCxHQUFHLENBQUNPLE9BQXpCO0FBQ0FILEVBQUFBLEdBQUcsQ0FBQ0UsTUFBSixDQUFXRSxLQUFYLEdBQW1CTCxHQUFHLENBQUN6QixHQUFKLENBQVErQixHQUFSLENBQVksS0FBWixNQUF1QixhQUF2QixHQUF1Q1QsR0FBdkMsR0FBNkMsRUFBaEUsQ0FIcUMsQ0FLckM7O0FBQ0FJLEVBQUFBLEdBQUcsQ0FBQ00sTUFBSixDQUFXVixHQUFHLENBQUNVLE1BQUosSUFBYyxHQUF6QjtBQUNBTixFQUFBQSxHQUFHLENBQUNPLE1BQUosQ0FBVyxPQUFYO0FBQ0QsQ0FSRDtBQVVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUJuQyxHQUFqQiIsInNvdXJjZXNDb250ZW50IjpbInZhciBjcmVhdGVFcnJvciA9IHJlcXVpcmUoJ2h0dHAtZXJyb3JzJyk7XHJcbnZhciBleHByZXNzID0gcmVxdWlyZSgnZXhwcmVzcycpO1xyXG5jb25zdCBjb3JzID0gcmVxdWlyZSgnY29ycycpO1xyXG52YXIgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcclxuY29uc3QgYm9keVBhcnNlciA9IHJlcXVpcmUoJ2JvZHktcGFyc2VyJylcclxuY29uc3QgZXhwcmVzc1ZhbGlkYXRvciA9IHJlcXVpcmUoJ2V4cHJlc3MtdmFsaWRhdG9yJylcclxudmFyIHNlc3Npb24gPSByZXF1aXJlKCdleHByZXNzLXNlc3Npb24nKTtcclxudmFyIEZpbGVTdG9yZSA9IHJlcXVpcmUoJ3Nlc3Npb24tZmlsZS1zdG9yZScpKHNlc3Npb24pO1xyXG52YXIgY29va2llUGFyc2VyID0gcmVxdWlyZSgnY29va2llLXBhcnNlcicpO1xyXG52YXIgbG9nZ2VyID0gcmVxdWlyZSgnbW9yZ2FuJyk7XHJcbnZhciBwYXNzcG9ydCA9IHJlcXVpcmUoJ3Bhc3Nwb3J0Jyk7XHJcbmNvbnN0IG1vbmdvb3NlID0gcmVxdWlyZSgnbW9uZ29vc2UnKTtcclxucmVxdWlyZSgnZG90ZW52JykuY29uZmlnKClcclxuXHJcbnZhciB1c2VyUm91dGVyID0gcmVxdWlyZSgnLi9yb3V0ZXMvdXNlclJvdXRlcicpO1xyXG52YXIgZW1wbG95ZWVSb3V0ZXIgPSByZXF1aXJlKCcuL3JvdXRlcy9lbXBsb3llZVJvdXRlcicpO1xyXG52YXIgcGxhY2VSb3V0ZXIgPSByZXF1aXJlKCcuL3JvdXRlcy9wbGFjZVJvdXRlcicpO1xyXG52YXIgc2NoZWR1bGVSb3V0ZXIgPSByZXF1aXJlKCcuL3JvdXRlcy9zY2hlZHVsZVJvdXRlcicpO1xyXG52YXIgdG91cmlzdFJvdXRlciA9IHJlcXVpcmUoJy4vcm91dGVzL3RvdXJpc3RSb3V0ZXInKTtcclxudmFyIGRhc2hib2FyZFJvdXRlciA9IHJlcXVpcmUoJy4vcm91dGVzL2Rhc2hib2FyZFJvdXRlcicpO1xyXG5cclxudmFyIGFwcCA9IGV4cHJlc3MoKTtcclxuXHJcbi8vIHZpZXcgZW5naW5lIHNldHVwXHJcbmFwcC5zZXQoJ3ZpZXdzJywgcGF0aC5qb2luKF9fZGlybmFtZSwgJ3ZpZXdzJykpO1xyXG5hcHAuc2V0KCd2aWV3IGVuZ2luZScsICdqYWRlJyk7XHJcbmFwcC51c2UoY29ycygpKTtcclxuYXBwLnVzZShwYXNzcG9ydC5pbml0aWFsaXplKCkpO1xyXG5cclxuYXBwLnVzZShib2R5UGFyc2VyLmpzb24oKSk7XHJcblxyXG5hcHAudXNlKGNvb2tpZVBhcnNlcigndGhlLWltbW9ydGFsLWNvaWxzJykpO1xyXG4vLyBhcHAudXNlKGxvZ2dlcignZGV2JykpO1xyXG5hcHAudXNlKGV4cHJlc3MuanNvbigpKTtcclxuYXBwLnVzZShleHByZXNzLnVybGVuY29kZWQoeyBleHRlbmRlZDogZmFsc2UgfSkpO1xyXG5hcHAudXNlKGNvb2tpZVBhcnNlcigpKTtcclxuLy8gYXBwLnVzZShleHByZXNzLnN0YXRpYygnYnVpbGQnKSk7XHJcbmFwcC51c2UoZXhwcmVzcy5zdGF0aWMocGF0aC5qb2luKF9fZGlybmFtZSwgJ2J1aWxkJykpKTtcclxuXHJcbnZhciB1cmwgPSBwcm9jZXNzLmVudi5tb25nb1VybDtcclxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAndGVzdCcpIHtcclxuICB1cmwgPSBwcm9jZXNzLmVudi50ZXN0TW9uZ29Vcmw7XHJcbn1cclxubW9uZ29vc2UuY29ubmVjdCh1cmwsIHsgdXNlTmV3VXJsUGFyc2VyOiB0cnVlLCB1c2VDcmVhdGVJbmRleDogdHJ1ZSwgdXNlVW5pZmllZFRvcG9sb2d5OiB0cnVlIH0pLnRoZW4oKGRiKSA9PiB7XHJcbn0sIChlcnIpID0+IHtcclxuICBpZiAoZXJyKSB7XHJcbiAgICBjb25zb2xlLmxvZygn8J+RuiAgRXJyb3IgY29ubmVjdGluZyB0byBNb25nb0RCJyk7XHJcbiAgfSBlbHNlIHtcclxuICAgIGNvbnNvbGUubG9nKCfinIUgIENvbm5lY3RlZCB0byBNb25nb0RCJyk7XHJcbiAgfVxyXG59KTtcclxuXHJcbmFwcC51c2UoJy91c2VycycsIHVzZXJSb3V0ZXIpO1xyXG5hcHAudXNlKCcvZW1wbG95ZWVzJywgZW1wbG95ZWVSb3V0ZXIpO1xyXG5hcHAudXNlKCcvcGxhY2VzJywgcGxhY2VSb3V0ZXIpO1xyXG5hcHAudXNlKCcvc2NoZWR1bGVzJywgc2NoZWR1bGVSb3V0ZXIpO1xyXG5hcHAudXNlKCcvdG91cmlzdHMnLCB0b3VyaXN0Um91dGVyKTtcclxuYXBwLnVzZSgnL2Rhc2hib2FyZCcsIGRhc2hib2FyZFJvdXRlcik7XHJcblxyXG4vLyBjYXRjaCA0MDQgYW5kIGZvcndhcmQgdG8gZXJyb3IgaGFuZGxlclxyXG5hcHAudXNlKGZ1bmN0aW9uIChyZXEsIHJlcywgbmV4dCkge1xyXG4gIG5leHQoY3JlYXRlRXJyb3IoNDA0KSk7XHJcbn0pO1xyXG5cclxuLy8gZXJyb3IgaGFuZGxlclxyXG5hcHAudXNlKGZ1bmN0aW9uIChlcnIsIHJlcSwgcmVzLCBuZXh0KSB7XHJcbiAgLy8gc2V0IGxvY2Fscywgb25seSBwcm92aWRpbmcgZXJyb3IgaW4gZGV2ZWxvcG1lbnRcclxuICByZXMubG9jYWxzLm1lc3NhZ2UgPSBlcnIubWVzc2FnZTtcclxuICByZXMubG9jYWxzLmVycm9yID0gcmVxLmFwcC5nZXQoJ2VudicpID09PSAnZGV2ZWxvcG1lbnQnID8gZXJyIDoge307XHJcblxyXG4gIC8vIHJlbmRlciB0aGUgZXJyb3IgcGFnZVxyXG4gIHJlcy5zdGF0dXMoZXJyLnN0YXR1cyB8fCA1MDApO1xyXG4gIHJlcy5yZW5kZXIoJ2Vycm9yJyk7XHJcbn0pO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBhcHA7XHJcbiJdfQ==\",\"originalCode\":\"var createError = require('http-errors');\\r\\nvar express = require('express');\\r\\nconst cors = require('cors');\\r\\nvar path = require('path');\\r\\nconst bodyParser = require('body-parser')\\r\\nconst expressValidator = require('express-validator')\\r\\nvar session = require('express-session');\\r\\nvar FileStore = require('session-file-store')(session);\\r\\nvar cookieParser = require('cookie-parser');\\r\\nvar logger = require('morgan');\\r\\nvar passport = require('passport');\\r\\nconst mongoose = require('mongoose');\\r\\nrequire('dotenv').config()\\r\\n\\r\\nvar userRouter = require('./routes/userRouter');\\r\\nvar employeeRouter = require('./routes/employeeRouter');\\r\\nvar placeRouter = require('./routes/placeRouter');\\r\\nvar scheduleRouter = require('./routes/scheduleRouter');\\r\\nvar touristRouter = require('./routes/touristRouter');\\r\\nvar dashboardRouter = require('./routes/dashboardRouter');\\r\\n\\r\\nvar app = express();\\r\\n\\r\\n// view engine setup\\r\\napp.set('views', path.join(__dirname, 'views'));\\r\\napp.set('view engine', 'jade');\\r\\napp.use(cors());\\r\\napp.use(passport.initialize());\\r\\n\\r\\napp.use(bodyParser.json());\\r\\n\\r\\napp.use(cookieParser('the-immortal-coils'));\\r\\n// app.use(logger('dev'));\\r\\napp.use(express.json());\\r\\napp.use(express.urlencoded({ extended: false }));\\r\\napp.use(cookieParser());\\r\\n// app.use(express.static('build'));\\r\\napp.use(express.static(path.join(__dirname, 'build')));\\r\\n\\r\\nvar url = process.env.mongoUrl;\\r\\nif (process.env.NODE_ENV === 'test') {\\r\\n url = process.env.testMongoUrl;\\r\\n}\\r\\nmongoose.connect(url, { useNewUrlParser: true, useCreateIndex: true, useUnifiedTopology: true }).then((db) => {\\r\\n}, (err) => {\\r\\n if (err) {\\r\\n console.log('👺 Error connecting to MongoDB');\\r\\n } else {\\r\\n console.log('✅ Connected to MongoDB');\\r\\n }\\r\\n});\\r\\n\\r\\napp.use('/users', userRouter);\\r\\napp.use('/employees', employeeRouter);\\r\\napp.use('/places', placeRouter);\\r\\napp.use('/schedules', scheduleRouter);\\r\\napp.use('/tourists', touristRouter);\\r\\napp.use('/dashboard', dashboardRouter);\\r\\n\\r\\n// catch 404 and forward to error handler\\r\\napp.use(function (req, res, next) {\\r\\n next(createError(404));\\r\\n});\\r\\n\\r\\n// error handler\\r\\napp.use(function (err, req, res, next) {\\r\\n // set locals, only providing error in development\\r\\n res.locals.message = err.message;\\r\\n res.locals.error = req.app.get('env') === 'development' ? err : {};\\r\\n\\r\\n // render the error page\\r\\n res.status(err.status || 500);\\r\\n res.render('error');\\r\\n});\\r\\n\\r\\nmodule.exports = app;\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/01/app_010e21b7416079df77678cc6cb70a530.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"1596\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\app.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":10626,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":10623,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1632,\"endOffset\":1640,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1642,\"endOffset\":1776,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":2049,\"endOffset\":2104,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":2133,\"endOffset\":2408,\"count\":1}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"var express = require('express');\\n\\nvar userRouter = express.Router();\\n\\nconst bodyParser = require('body-parser');\\n\\nvar upload = require('../controllers/upload');\\n\\nconst {\\n checkSchema\\n} = require('express-validator');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nvar validationRules = require('../middleware/validation');\\n\\nvar userController = require('../controllers/userController');\\n\\nconst cors = require('./cors');\\n\\nuserRouter.use(bodyParser.json());\\nuserRouter.options('*', cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n});\\nuserRouter.post('/signup/admin', cors.corsWithOptions, userController.signupAdmin);\\nuserRouter.post('/login', cors.corsWithOptions, userController.login);\\nuserRouter.post('/changepassoword/:id', authenticate.verifyUser, userController.changePassoword);\\nuserRouter.post(\\\"/updateprofilepicture/:id\\\", authenticate.verifyUser, upload.UploadUserImage);\\nuserRouter.get('/logout', authenticate.verifyUser, userController.logout);\\nmodule.exports = userRouter;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVzZXJSb3V0ZXIuanMiXSwibmFtZXMiOlsiZXhwcmVzcyIsInJlcXVpcmUiLCJ1c2VyUm91dGVyIiwiUm91dGVyIiwiYm9keVBhcnNlciIsInVwbG9hZCIsImNoZWNrU2NoZW1hIiwiYXV0aGVudGljYXRlIiwidmFsaWRhdGlvblJ1bGVzIiwidXNlckNvbnRyb2xsZXIiLCJjb3JzIiwidXNlIiwianNvbiIsIm9wdGlvbnMiLCJjb3JzV2l0aE9wdGlvbnMiLCJyZXEiLCJyZXMiLCJzZW5kU3RhdHVzIiwicG9zdCIsInNpZ251cEFkbWluIiwibG9naW4iLCJ2ZXJpZnlVc2VyIiwiY2hhbmdlUGFzc293b3JkIiwiVXBsb2FkVXNlckltYWdlIiwiZ2V0IiwibG9nb3V0IiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsSUFBSUEsT0FBTyxHQUFHQyxPQUFPLENBQUMsU0FBRCxDQUFyQjs7QUFDQSxJQUFJQyxVQUFVLEdBQUdGLE9BQU8sQ0FBQ0csTUFBUixFQUFqQjs7QUFFQSxNQUFNQyxVQUFVLEdBQUdILE9BQU8sQ0FBQyxhQUFELENBQTFCOztBQUNBLElBQUlJLE1BQU0sR0FBR0osT0FBTyxDQUFDLHVCQUFELENBQXBCOztBQUNBLE1BQU07QUFBRUssRUFBQUE7QUFBRixJQUFrQkwsT0FBTyxDQUFDLG1CQUFELENBQS9COztBQUNBLElBQUlNLFlBQVksR0FBR04sT0FBTyxDQUFDLDRCQUFELENBQTFCOztBQUNBLElBQUlPLGVBQWUsR0FBR1AsT0FBTyxDQUFDLDBCQUFELENBQTdCOztBQUNBLElBQUlRLGNBQWMsR0FBR1IsT0FBTyxDQUFDLCtCQUFELENBQTVCOztBQUNBLE1BQU1TLElBQUksR0FBR1QsT0FBTyxDQUFDLFFBQUQsQ0FBcEI7O0FBRUFDLFVBQVUsQ0FBQ1MsR0FBWCxDQUFlUCxVQUFVLENBQUNRLElBQVgsRUFBZjtBQUVBVixVQUFVLENBQUNXLE9BQVgsQ0FBbUIsR0FBbkIsRUFBd0JILElBQUksQ0FBQ0ksZUFBN0IsRUFBOEMsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEtBQWM7QUFBRUEsRUFBQUEsR0FBRyxDQUFDQyxVQUFKLENBQWUsR0FBZjtBQUFzQixDQUFwRjtBQUVBZixVQUFVLENBQUNnQixJQUFYLENBQWdCLGVBQWhCLEVBQWlDUixJQUFJLENBQUNJLGVBQXRDLEVBQXVETCxjQUFjLENBQUNVLFdBQXRFO0FBRUFqQixVQUFVLENBQUNnQixJQUFYLENBQWdCLFFBQWhCLEVBQTBCUixJQUFJLENBQUNJLGVBQS9CLEVBQWdETCxjQUFjLENBQUNXLEtBQS9EO0FBRUFsQixVQUFVLENBQUNnQixJQUFYLENBQWdCLHNCQUFoQixFQUF1Q1gsWUFBWSxDQUFDYyxVQUFwRCxFQUFnRVosY0FBYyxDQUFDYSxlQUEvRTtBQUVBcEIsVUFBVSxDQUFDZ0IsSUFBWCxDQUFnQiwyQkFBaEIsRUFBNENYLFlBQVksQ0FBQ2MsVUFBekQsRUFBcUVoQixNQUFNLENBQUNrQixlQUE1RTtBQUVBckIsVUFBVSxDQUFDc0IsR0FBWCxDQUFlLFNBQWYsRUFBeUJqQixZQUFZLENBQUNjLFVBQXRDLEVBQWtEWixjQUFjLENBQUNnQixNQUFqRTtBQUVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUJ6QixVQUFqQiIsInNvdXJjZXNDb250ZW50IjpbInZhciBleHByZXNzID0gcmVxdWlyZSgnZXhwcmVzcycpO1xyXG52YXIgdXNlclJvdXRlciA9IGV4cHJlc3MuUm91dGVyKCk7XHJcblxyXG5jb25zdCBib2R5UGFyc2VyID0gcmVxdWlyZSgnYm9keS1wYXJzZXInKTtcclxudmFyIHVwbG9hZCA9IHJlcXVpcmUoJy4uL2NvbnRyb2xsZXJzL3VwbG9hZCcpO1xyXG5jb25zdCB7IGNoZWNrU2NoZW1hIH0gPSByZXF1aXJlKCdleHByZXNzLXZhbGlkYXRvcicpO1xyXG52YXIgYXV0aGVudGljYXRlID0gcmVxdWlyZSgnLi4vbWlkZGxld2FyZS9hdXRoZW50aWNhdGUnKTtcclxudmFyIHZhbGlkYXRpb25SdWxlcyA9IHJlcXVpcmUoJy4uL21pZGRsZXdhcmUvdmFsaWRhdGlvbicpO1xyXG52YXIgdXNlckNvbnRyb2xsZXIgPSByZXF1aXJlKCcuLi9jb250cm9sbGVycy91c2VyQ29udHJvbGxlcicpO1xyXG5jb25zdCBjb3JzID0gcmVxdWlyZSgnLi9jb3JzJyk7XHJcblxyXG51c2VyUm91dGVyLnVzZShib2R5UGFyc2VyLmpzb24oKSk7XHJcblxyXG51c2VyUm91dGVyLm9wdGlvbnMoJyonLCBjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcblxyXG51c2VyUm91dGVyLnBvc3QoJy9zaWdudXAvYWRtaW4nLCBjb3JzLmNvcnNXaXRoT3B0aW9ucywgdXNlckNvbnRyb2xsZXIuc2lnbnVwQWRtaW4pO1xyXG5cclxudXNlclJvdXRlci5wb3N0KCcvbG9naW4nLCBjb3JzLmNvcnNXaXRoT3B0aW9ucywgdXNlckNvbnRyb2xsZXIubG9naW4pO1xyXG5cclxudXNlclJvdXRlci5wb3N0KCcvY2hhbmdlcGFzc293b3JkLzppZCcsYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIHVzZXJDb250cm9sbGVyLmNoYW5nZVBhc3Nvd29yZCk7XHJcblxyXG51c2VyUm91dGVyLnBvc3QoXCIvdXBkYXRlcHJvZmlsZXBpY3R1cmUvOmlkXCIsYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIHVwbG9hZC5VcGxvYWRVc2VySW1hZ2UpO1xyXG5cclxudXNlclJvdXRlci5nZXQoJy9sb2dvdXQnLGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCB1c2VyQ29udHJvbGxlci5sb2dvdXQpO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSB1c2VyUm91dGVyO1xyXG4iXX0=\",\"originalCode\":\"var express = require('express');\\r\\nvar userRouter = express.Router();\\r\\n\\r\\nconst bodyParser = require('body-parser');\\r\\nvar upload = require('../controllers/upload');\\r\\nconst { checkSchema } = require('express-validator');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\nvar validationRules = require('../middleware/validation');\\r\\nvar userController = require('../controllers/userController');\\r\\nconst cors = require('./cors');\\r\\n\\r\\nuserRouter.use(bodyParser.json());\\r\\n\\r\\nuserRouter.options('*', cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n\\r\\nuserRouter.post('/signup/admin', cors.corsWithOptions, userController.signupAdmin);\\r\\n\\r\\nuserRouter.post('/login', cors.corsWithOptions, userController.login);\\r\\n\\r\\nuserRouter.post('/changepassoword/:id',authenticate.verifyUser, userController.changePassoword);\\r\\n\\r\\nuserRouter.post(\\\"/updateprofilepicture/:id\\\",authenticate.verifyUser, upload.UploadUserImage);\\r\\n\\r\\nuserRouter.get('/logout',authenticate.verifyUser, userController.logout);\\r\\n\\r\\nmodule.exports = userRouter;\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/a6/userRouter_a6221ff3be20743fe1c0fd1dc9fd8435.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2377\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\userRouter.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":4566,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":4563,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":606,\"endOffset\":646,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const sharp = require('sharp');\\n\\nconst uid = require('uid');\\n\\nconst fs = require('fs');\\n\\nconst Users = require('../models/users');\\n\\nconst Places = require('../models/visitingPlaces');\\n\\nconst uploadFile = async (req, res) => {\\n try {\\n await upload(req, res);\\n\\n if (req.file == undefined) {\\n return res.send(`You must select a file.`);\\n }\\n\\n return res.send(`File has been uploaded.`);\\n } catch (error) {\\n return res.send(`Error when trying upload image: ${error}`);\\n }\\n};\\n\\nconst UploadUserImage = async (req, res, next) => {\\n try {\\n const user_id = req.params._id;\\n const user = await Users.findById(user_id);\\n console.log(req);\\n let imageUrl;\\n\\n if (req.file) {\\n imageUrl = `${uid()}__${req.file.originalname}`;\\n let filename = `images/userImages/${imageUrl}`;\\n let previousImagePath = `images/userImages/${user.image}`;\\n const imageExist = fs.existsSync(previousImagePath);\\n\\n if (imageExist) {\\n deleteImage(previousImagePath);\\n }\\n\\n await sharp(req.file.path).rotate().resize(500, 500).toFile(filename);\\n fs.unlink(req.file.path, err => {\\n if (err) {}\\n });\\n } else {\\n imageUrl = 'profile.png';\\n }\\n\\n user.image = imageUrl;\\n await user.save();\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n message: 'Successfully updated profile picture'\\n });\\n } catch (err) {\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Error while updating profile picture'\\n });\\n }\\n};\\n\\nconst uploadPlaceImage = async (req, res, next) => {\\n try {\\n const place_id = req.params._id;\\n const place = await Places.findById(place_id);\\n let imageUrl;\\n\\n if (req.file) {\\n imageUrl = `${uid()}__${req.file.originalname}`;\\n let filename = `images/placeImages/${imageUrl}`;\\n let previousImagePath = `images/placeImages/${place.image}`;\\n const imageExist = fs.existsSync(previousImagePath);\\n\\n if (imageExist) {\\n deleteImage(previousImagePath);\\n }\\n\\n await sharp(req.file.path).rotate().resize(500, 500).toFile(filename);\\n fs.unlink(req.file.path, err => {\\n if (err) {}\\n });\\n } else {\\n imageUrl = 'image.png';\\n }\\n\\n place.image = imageUrl;\\n await place.save();\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n message: 'Successfully updated profile picture'\\n });\\n } catch (err) {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Error while updating profile picture'\\n });\\n }\\n};\\n\\nexports.UploadUserImage = UploadUserImage;\\nexports.uploadFile = uploadFile;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVwbG9hZC5qcyJdLCJuYW1lcyI6WyJzaGFycCIsInJlcXVpcmUiLCJ1aWQiLCJmcyIsIlVzZXJzIiwiUGxhY2VzIiwidXBsb2FkRmlsZSIsInJlcSIsInJlcyIsInVwbG9hZCIsImZpbGUiLCJ1bmRlZmluZWQiLCJzZW5kIiwiZXJyb3IiLCJVcGxvYWRVc2VySW1hZ2UiLCJuZXh0IiwidXNlcl9pZCIsInBhcmFtcyIsIl9pZCIsInVzZXIiLCJmaW5kQnlJZCIsImNvbnNvbGUiLCJsb2ciLCJpbWFnZVVybCIsIm9yaWdpbmFsbmFtZSIsImZpbGVuYW1lIiwicHJldmlvdXNJbWFnZVBhdGgiLCJpbWFnZSIsImltYWdlRXhpc3QiLCJleGlzdHNTeW5jIiwiZGVsZXRlSW1hZ2UiLCJwYXRoIiwicm90YXRlIiwicmVzaXplIiwidG9GaWxlIiwidW5saW5rIiwiZXJyIiwic2F2ZSIsInN0YXR1c0NvZGUiLCJzZXRIZWFkZXIiLCJqc29uIiwic3VjY2VzcyIsIm1lc3NhZ2UiLCJ1cGxvYWRQbGFjZUltYWdlIiwicGxhY2VfaWQiLCJwbGFjZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLEtBQUssR0FBR0MsT0FBTyxDQUFDLE9BQUQsQ0FBckI7O0FBQ0EsTUFBTUMsR0FBRyxHQUFHRCxPQUFPLENBQUMsS0FBRCxDQUFuQjs7QUFDQSxNQUFNRSxFQUFFLEdBQUdGLE9BQU8sQ0FBQyxJQUFELENBQWxCOztBQUNBLE1BQU1HLEtBQUssR0FBR0gsT0FBTyxDQUFDLGlCQUFELENBQXJCOztBQUNBLE1BQU1JLE1BQU0sR0FBR0osT0FBTyxDQUFDLDBCQUFELENBQXRCOztBQUVBLE1BQU1LLFVBQVUsR0FBRyxPQUFPQyxHQUFQLEVBQVlDLEdBQVosS0FBb0I7QUFDbkMsTUFBSTtBQUNBLFVBQU1DLE1BQU0sQ0FBQ0YsR0FBRCxFQUFNQyxHQUFOLENBQVo7O0FBRUEsUUFBSUQsR0FBRyxDQUFDRyxJQUFKLElBQVlDLFNBQWhCLEVBQTJCO0FBQ3ZCLGFBQU9I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Q0FBQzhCLFVBQUosR0FBaUIsR0FBakI7QUFDQTlCLElBQUFBLEdBQUcsQ0FBQytCLFNBQUosQ0FBYyxjQUFkLEVBQThCLGtCQUE5QjtBQUNBL0IsSUFBQUEsR0FBRyxDQUFDZ0MsSUFBSixDQUFTO0FBQUVDLE1BQUFBLE9BQU8sRUFBRSxLQUFYO0FBQWtCQyxNQUFBQSxPQUFPLEVBQUU7QUFBM0IsS0FBVDtBQUNIO0FBQ0osQ0F6Q0Q7O0FBMkNBSSxPQUFPLENBQUNoQyxlQUFSLEdBQTBCQSxlQUExQjtBQUNBZ0MsT0FBTyxDQUFDeEMsVUFBUixHQUFxQkEsVUFBckIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBzaGFycCA9IHJlcXVpcmUoJ3NoYXJwJyk7XHJcbmNvbnN0IHVpZCA9IHJlcXVpcmUoJ3VpZCcpO1xyXG5jb25zdCBmcyA9IHJlcXVpcmUoJ2ZzJyk7XHJcbmNvbnN0IFVzZXJzID0gcmVxdWlyZSgnLi4vbW9kZWxzL3VzZXJzJyk7XHJcbmNvbnN0IFBsYWNlcyA9IHJlcXVpcmUoJy4uL21vZGVscy92aXNpdGluZ1BsYWNlcycpXHJcblxyXG5jb25zdCB1cGxvYWRGaWxlID0gYXN5bmMgKHJlcSwgcmVzKSA9PiB7XHJcbiAgICB0cnkge1xyXG4gICAgICAgIGF3YWl0IHVwbG9hZChyZXEsIHJlcyk7XHJcblxyXG4gICAgICAgIGlmIChyZXEuZmlsZSA9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlcy5zZW5kKGBZb3UgbXVzdCBzZWxlY3QgYSBmaWxlLmApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHJlcy5zZW5kKGBGaWxlIGhhcyBiZWVuIHVwbG9hZGVkLmApO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICByZXR1cm4gcmVzLnNlbmQoYEVycm9yIHdoZW4gdHJ5aW5nIHVwbG9hZCBpbWFnZTogJHtlcnJvcn1gKTtcclxuICAgIH1cclxufTtcclxuXHJcbmNvbnN0IFVwbG9hZFVzZXJJbWFnZSA9IGFzeW5jIChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgICBjb25zdCB1c2VyX2lkID0gcmVxLnBhcmFtcy5faWQ7XHJcbiAgICAgICAgY29uc3QgdXNlciA9IGF3YWl0IFVzZXJzLmZpbmRCeUlkKHVzZXJfaWQpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKHJlcSk7XHJcblxyXG4gICAgICAgIGxldCBpbWFnZVVybDtcclxuICAgICAgICBpZiAocmVxLmZpbGUpIHtcclxuICAgICAgICAgICAgaW1hZ2VVcmwgPSBgJHt1aWQoKX1fXyR7cmVxLmZpbGUub3JpZ2luYWxuYW1lfWA7XHJcbiAgICAgICAgICAgIGxldCBmaWxlbmFtZSA9IGBpbWFnZXMvdXNlckltYWdlcy8ke2ltYWdlVXJsfWA7XHJcbiAgICAgICAgICAgIGxldCBwcmV2aW91c0ltYWdlUGF0aCA9IGBpbWFnZXMvdXNlckltYWdlcy8ke3VzZXIuaW1hZ2V9YDtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGltYWdlRXhpc3QgPSBmcy5leGlzdHNTeW5jKHByZXZpb3VzSW1hZ2VQYXRoKTtcclxuICAgICAgICAgICAgaWYgKGltYWdlRXhpc3QpIHtcclxuICAgICAgICAgICAgICAgIGRlbGV0ZUltYWdlKHByZXZpb3VzSW1hZ2VQYXRoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBhd2FpdCBzaGFycChyZXEuZmlsZS5wYXRoKVxyXG4gICAgICAgICAgICAgICAgLnJvdGF0ZSgpXHJcbiAgICAgICAgICAgICAgICAucmVzaXplKDUwMCwgNTAwKVxyXG4gICAgICAgICAgICAgICAgLnRvRmlsZShmaWxlbmFtZSk7XHJcblxyXG4gICAgICAgICAgICBmcy51bmxpbmsocmVxLmZpbGUucGF0aCwgKGVycikgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGltYWdlVXJsID0gJ3Byb2ZpbGUucG5nJztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHVzZXIuaW1hZ2UgPSBpbWFnZVVybDtcclxuICAgICAgICBhd2FpdCB1c2VyLnNhdmUoKTtcclxuXHJcblxyXG4gICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCBtZXNzYWdlOiAnU3VjY2Vzc2Z1bGx5IHVwZGF0ZWQgcHJvZmlsZSBwaWN0dXJlJyB9KTtcclxuXHJcbiAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDUwMDtcclxuICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogZmFsc2UsIG1lc3NhZ2U6ICdFcnJvciB3aGlsZSB1cGRhdGluZyBwcm9maWxlIHBpY3R1cmUnIH0pO1xyXG4gICAgfVxyXG59O1xyXG5cclxuY29uc3QgdXBsb2FkUGxhY2VJbWFnZSA9IGFzeW5jIChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgICBjb25zdCBwbGFjZV9pZCA9IHJlcS5wYXJhbXMuX2lkO1xyXG4gICAgICAgIGNvbnN0IHBsYWNlID0gYXdhaXQgUGxhY2VzLmZpbmRCeUlkKHBsYWNlX2lkKTtcclxuXHJcbiAgICAgICAgbGV0IGltYWdlVXJsO1xyXG4gICAgICAgIGlmIChyZXEuZmlsZSkge1xyXG4gICAgICAgICAgICBpbWFnZVVybCA9IGAke3VpZCgpfV9fJHtyZXEuZmlsZS5vcmlnaW5hbG5hbWV9YDtcclxuICAgICAgICAgICAgbGV0IGZpbGVuYW1lID0gYGltYWdlcy9wbGFjZUltYWdlcy8ke2ltYWdlVXJsfWA7XHJcbiAgICAgICAgICAgIGxldCBwcmV2aW91c0ltYWdlUGF0aCA9IGBpbWFnZXMvcGxhY2VJbWFnZXMvJHtwbGFjZS5pbWFnZX1gO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgaW1hZ2VFeGlzdCA9IGZzLmV4aXN0c1N5bmMocHJldmlvdXNJbWFnZVBhdGgpO1xyXG4gICAgICAgICAgICBpZiAoaW1hZ2VFeGlzdCkge1xyXG4gICAgICAgICAgICAgICAgZGVsZXRlSW1hZ2UocHJldmlvdXNJbWFnZVBhdGgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGF3YWl0IHNoYXJwKHJlcS5maWxlLnBhdGgpXHJcbiAgICAgICAgICAgICAgICAucm90YXRlKClcclxuICAgICAgICAgICAgICAgIC5yZXNpemUoNTAwLCA1MDApXHJcbiAgICAgICAgICAgICAgICAudG9GaWxlKGZpbGVuYW1lKTtcclxuXHJcbiAgICAgICAgICAgIGZzLnVubGluayhyZXEuZmlsZS5wYXRoLCAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaW1hZ2VVcmwgPSAnaW1hZ2UucG5nJztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHBsYWNlLmltYWdlID0gaW1hZ2VVcmw7XHJcbiAgICAgICAgYXdhaXQgcGxhY2Uuc2F2ZSgpO1xyXG5cclxuXHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA1MDA7XHJcbiAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIG1lc3NhZ2U6ICdTdWNjZXNzZnVsbHkgdXBkYXRlZCBwcm9maWxlIHBpY3R1cmUnIH0pO1xyXG5cclxuICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogJ0Vycm9yIHdoaWxlIHVwZGF0aW5nIHByb2ZpbGUgcGljdHVyZScgfSk7XHJcbiAgICB9XHJcbn07XHJcblxyXG5leHBvcnRzLlVwbG9hZFVzZXJJbWFnZSA9IFVwbG9hZFVzZXJJbWFnZTtcclxuZXhwb3J0cy51cGxvYWRGaWxlID0gdXBsb2FkRmlsZTsiXX0=\",\"originalCode\":\"const sharp = require('sharp');\\r\\nconst uid = require('uid');\\r\\nconst fs = require('fs');\\r\\nconst Users = require('../models/users');\\r\\nconst Places = require('../models/visitingPlaces')\\r\\n\\r\\nconst uploadFile = async (req, res) => {\\r\\n try {\\r\\n await upload(req, res);\\r\\n\\r\\n if (req.file == undefined) {\\r\\n return res.send(`You must select a file.`);\\r\\n }\\r\\n\\r\\n return res.send(`File has been uploaded.`);\\r\\n } catch (error) {\\r\\n return res.send(`Error when trying upload image: ${error}`);\\r\\n }\\r\\n};\\r\\n\\r\\nconst UploadUserImage = async (req, res, next) => {\\r\\n try {\\r\\n const user_id = req.params._id;\\r\\n const user = await Users.findById(user_id);\\r\\n console.log(req);\\r\\n\\r\\n let imageUrl;\\r\\n if (req.file) {\\r\\n imageUrl = `${uid()}__${req.file.originalname}`;\\r\\n let filename = `images/userImages/${imageUrl}`;\\r\\n let previousImagePath = `images/userImages/${user.image}`;\\r\\n\\r\\n const imageExist = fs.existsSync(previousImagePath);\\r\\n if (imageExist) {\\r\\n deleteImage(previousImagePath);\\r\\n }\\r\\n await sharp(req.file.path)\\r\\n .rotate()\\r\\n .resize(500, 500)\\r\\n .toFile(filename);\\r\\n\\r\\n fs.unlink(req.file.path, (err) => {\\r\\n if (err) {\\r\\n }\\r\\n })\\r\\n } else {\\r\\n imageUrl = 'profile.png';\\r\\n }\\r\\n\\r\\n user.image = imageUrl;\\r\\n await user.save();\\r\\n\\r\\n\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, message: 'Successfully updated profile picture' });\\r\\n\\r\\n } catch (err) {\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Error while updating profile picture' });\\r\\n }\\r\\n};\\r\\n\\r\\nconst uploadPlaceImage = async (req, res, next) => {\\r\\n try {\\r\\n const place_id = req.params._id;\\r\\n const place = await Places.findById(place_id);\\r\\n\\r\\n let imageUrl;\\r\\n if (req.file) {\\r\\n imageUrl = `${uid()}__${req.file.originalname}`;\\r\\n let filename = `images/placeImages/${imageUrl}`;\\r\\n let previousImagePath = `images/placeImages/${place.image}`;\\r\\n\\r\\n const imageExist = fs.existsSync(previousImagePath);\\r\\n if (imageExist) {\\r\\n deleteImage(previousImagePath);\\r\\n }\\r\\n await sharp(req.file.path)\\r\\n .rotate()\\r\\n .resize(500, 500)\\r\\n .toFile(filename);\\r\\n\\r\\n fs.unlink(req.file.path, (err) => {\\r\\n if (err) {\\r\\n }\\r\\n })\\r\\n } else {\\r\\n imageUrl = 'image.png';\\r\\n }\\r\\n\\r\\n place.image = imageUrl;\\r\\n await place.save();\\r\\n\\r\\n\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, message: 'Successfully updated profile picture' });\\r\\n\\r\\n } catch (err) {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Error while updating profile picture' });\\r\\n }\\r\\n};\\r\\n\\r\\nexports.UploadUserImage = UploadUserImage;\\r\\nexports.uploadFile = uploadFile;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/7c/upload_7c4638f764653e4bdd79a0ce3f99ff41.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2378\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\upload.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":12934,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":12931,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"uploadFile\",\"ranges\":[{\"startOffset\":293,\"endOffset\":580,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"UploadUserImage\",\"ranges\":[{\"startOffset\":607,\"endOffset\":1726,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"uploadPlaceImage\",\"ranges\":[{\"startOffset\":1754,\"endOffset\":2858,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"var mongoose = require('mongoose');\\n\\nvar Schema = mongoose.Schema;\\n\\nvar passportLocalMongoose = require('passport-local-mongoose');\\n\\nvar User = new Schema({\\n firstname: {\\n type: String,\\n required: true\\n },\\n lastname: {\\n type: String,\\n required: true\\n },\\n email: {\\n type: String,\\n required: true,\\n unique: true\\n },\\n mobile: {\\n type: String\\n },\\n role: {\\n type: String,\\n default: \\\"user\\\",\\n enum: ['user', 'moderater', 'admin']\\n },\\n image: {\\n type: String\\n },\\n suite: {\\n type: String,\\n enum: ['gold', 'luxury', 'platinum']\\n },\\n rommnumber: {\\n type: String\\n },\\n userstate: {\\n type: String,\\n default: \\\"in\\\",\\n enum: ['in', 'out']\\n }\\n}, {\\n timestamps: true\\n});\\nUser.plugin(passportLocalMongoose);\\nUser.index({\\n '$**': 'text'\\n});\\nvar Users = mongoose.model('User', User);\\nmodule.exports = Users;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVzZXJzLmpzIl0sIm5hbWVzIjpbIm1vbmdvb3NlIiwicmVxdWlyZSIsIlNjaGVtYSIsInBhc3Nwb3J0TG9jYWxNb25nb29zZSIsIlVzZXIiLCJmaXJzdG5hbWUiLCJ0eXBlIiwiU3RyaW5nIiwicmVxdWlyZWQiLCJsYXN0bmFtZSIsImVtYWlsIiwidW5pcXVlIiwibW9iaWxlIiwicm9sZSIsImRlZmF1bHQiLCJlbnVtIiwiaW1hZ2UiLCJzdWl0ZSIsInJvbW1udW1iZXIiLCJ1c2Vyc3RhdGUiLCJ0aW1lc3RhbXBzIiwicGx1Z2luIiwiaW5kZXgiLCJVc2VycyIsIm1vZGVsIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsSUFBSUEsUUFBUSxHQUFHQyxPQUFPLENBQUMsVUFBRCxDQUF0Qjs7QUFDQSxJQUFJQyxNQUFNLEdBQUdGLFFBQVEsQ0FBQ0UsTUFBdEI7O0FBRUEsSUFBSUMscUJBQXFCLEdBQUdGLE9BQU8sQ0FBQyx5QkFBRCxDQUFuQzs7QUFFQSxJQUFJRyxJQUFJLEdBQUcsSUFBSUYsTUFBSixDQUFXO0FBQ2xCRyxFQUFBQSxTQUFTLEVBQUU7QUFDUEMsSUFBQUEsSUFBSSxFQUFFQyxNQURDO0FBRVBDLElBQUFBLFFBQVEsRUFBRTtBQUZILEdBRE87QUFLbEJDLEVBQUFBLFFBQVEsRUFBRTtBQUNOSCxJQUFBQSxJQUFJLEVBQUVDLE1BREE7QUFFTkMsSUFBQUEsUUFBUSxFQUFFO0FBRkosR0FMUTtBQVNsQkUsRUFBQUEsS0FBSyxFQUFFO0FBQ0hKLElBQUFBLElBQUksRUFBRUMsTUFESDtBQUVIQyxJQUFBQSxRQUFRLEVBQUUsSUFGUDtBQUdIRyxJQUFBQSxNQUFNLEVBQUU7QUFITCxHQVRXO0FBY2xCQyxFQUFBQSxNQUFNLEVBQUM7QUFDSE4sSUFBQUEsSUFBSSxFQUFFQztBQURILEdBZFc7QUFpQmxCTSxFQUFBQSxJQUFJLEVBQ0o7QUFDSVAsSUFBQUEsSUFBSSxFQUFFQyxNQURWO0FBRUlPLElBQUFBLE9BQU8sRUFBRSxNQUZiO0FBR0lDLElBQUFBLElBQUksRUFBQyxDQUFDLE1BQUQsRUFBUSxXQUFSLEVBQW9CLE9BQXBCO0FBSFQsR0FsQmtCO0FBdUJsQkMsRUFBQUEsS0FBSyxFQUFFO0FBQ0hWLElBQUFBLElBQUksRUFBRUM7QUFESCxHQXZCVztBQTBCbEJVLEVBQUFBLEtBQUssRUFBQztBQUNGWCxJQUFBQSxJQUFJLEVBQUVDLE1BREo7QUFFRlEsSUFBQUEsSUFBSSxFQUFDLENBQUMsTUFBRCxFQUFRLFFBQVIsRUFBaUIsVUFBakI7QUFGSCxHQTFCWTtBQThCbEJHLEVBQUFBLFVBQVUsRUFBQztBQUNQWixJQUFBQSxJQUFJLEVBQUVDO0FBREMsR0E5Qk87QUFpQ2xCWSxFQUFBQSxTQUFTLEVBQUM7QUFDTmIsSUFBQUEsSUFBSSxFQUFFQyxNQURBO0FBRU5PLElBQUFBLE9BQU8sRUFBRSxJQUZIO0FBR05DLElBQUFBLElBQUksRUFBQyxDQUFDLElBQUQsRUFBTSxLQUFOO0FBSEM7QUFqQ1EsQ0FBWCxFQXNDUjtBQUNDSyxFQUFBQSxVQUFVLEVBQUU7QUFEYixDQXRDUSxDQUFYO0FBMENBaEIsSUFBSSxDQUFDaUIsTUFBTCxDQUFZbEIscUJBQVo7QUFDQUMsSUFBSSxDQUFDa0IsS0FBTCxDQUFXO0FBQUMsU0FBTTtBQUFQLENBQVg7QUFDQSxJQUFJQyxLQUFLLEdBQUd2QixRQUFRLENBQUN3QixLQUFULENBQWUsTUFBZixFQUF1QnBCLElBQXZCLENBQVo7QUFFQXFCLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQkgsS0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgbW9uZ29vc2UgPSByZXF1aXJlKCdtb25nb29zZScpO1xyXG52YXIgU2NoZW1hID0gbW9uZ29vc2UuU2NoZW1hO1xyXG5cclxudmFyIHBhc3Nwb3J0TG9jYWxNb25nb29zZSA9IHJlcXVpcmUoJ3Bhc3Nwb3J0LWxvY2FsLW1vbmdvb3NlJyk7XHJcblxyXG52YXIgVXNlciA9IG5ldyBTY2hlbWEoe1xyXG4gICAgZmlyc3RuYW1lOiB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlXHJcbiAgICB9LFxyXG4gICAgbGFzdG5hbWU6IHtcclxuICAgICAgICB0eXBlOiBTdHJpbmcsXHJcbiAgICAgICAgcmVxdWlyZWQ6IHRydWVcclxuICAgIH0sXHJcbiAgICBlbWFpbDoge1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgICB1bmlxdWU6IHRydWVcclxuICAgIH0sXHJcbiAgICBtb2JpbGU6e1xyXG4gICAgICAgIHR5cGU6IFN0cmluZ1xyXG4gICAgfSxcclxuICAgIHJvbGU6XHJcbiAgICB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICAgIGRlZmF1bHQ6IFwidXNlclwiLFxyXG4gICAgICAgIGVudW06Wyd1c2VyJywnbW9kZXJhdGVyJywnYWRtaW4nXVxyXG4gICAgfSxcclxuICAgIGltYWdlOiB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nXHJcbiAgICB9LFxyXG4gICAgc3VpdGU6e1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICBlbnVtOlsnZ29sZCcsJ2x1eHVyeScsJ3BsYXRpbnVtJ11cclxuICAgIH0sXHJcbiAgICByb21tbnVtYmVyOntcclxuICAgICAgICB0eXBlOiBTdHJpbmdcclxuICAgIH0sXHJcbiAgICB1c2Vyc3RhdGU6e1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICBkZWZhdWx0OiBcImluXCIsXHJcbiAgICAgICAgZW51bTpbJ2luJywnb3V0J11cclxuICAgIH1cclxufSwge1xyXG4gICAgdGltZXN0YW1wczogdHJ1ZVxyXG59KTtcclxuXHJcblVzZXIucGx1Z2luKHBhc3Nwb3J0TG9jYWxNb25nb29zZSk7XHJcblVzZXIuaW5kZXgoeyckKionOid0ZXh0J30pO1xyXG52YXIgVXNlcnMgPSBtb25nb29zZS5tb2RlbCgnVXNlcicsIFVzZXIpO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBVc2VyczsiXX0=\",\"originalCode\":\"var mongoose = require('mongoose');\\r\\nvar Schema = mongoose.Schema;\\r\\n\\r\\nvar passportLocalMongoose = require('passport-local-mongoose');\\r\\n\\r\\nvar User = new Schema({\\r\\n firstname: {\\r\\n type: String,\\r\\n required: true\\r\\n },\\r\\n lastname: {\\r\\n type: String,\\r\\n required: true\\r\\n },\\r\\n email: {\\r\\n type: String,\\r\\n required: true,\\r\\n unique: true\\r\\n },\\r\\n mobile:{\\r\\n type: String\\r\\n },\\r\\n role:\\r\\n {\\r\\n type: String,\\r\\n default: \\\"user\\\",\\r\\n enum:['user','moderater','admin']\\r\\n },\\r\\n image: {\\r\\n type: String\\r\\n },\\r\\n suite:{\\r\\n type: String,\\r\\n enum:['gold','luxury','platinum']\\r\\n },\\r\\n rommnumber:{\\r\\n type: String\\r\\n },\\r\\n userstate:{\\r\\n type: String,\\r\\n default: \\\"in\\\",\\r\\n enum:['in','out']\\r\\n }\\r\\n}, {\\r\\n timestamps: true\\r\\n});\\r\\n\\r\\nUser.plugin(passportLocalMongoose);\\r\\nUser.index({'$**':'text'});\\r\\nvar Users = mongoose.model('User', User);\\r\\n\\r\\nmodule.exports = Users;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/fa/users_fa250a82bd410ffb1909f920e93eed19.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2448\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\models\\\\users.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":4633,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":4630,\"count\":1}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const mongoose = require('mongoose');\\n\\nconst Schema = mongoose.Schema;\\nconst pointSchema = new Schema({\\n type: {\\n type: String,\\n enum: ['Point'],\\n required: true,\\n default: 'Point'\\n },\\n coordinates: {\\n type: [Number],\\n required: true\\n }\\n});\\nconst placeSchema = new Schema({\\n name: {\\n type: String,\\n required: true,\\n unique: true\\n },\\n description: {\\n type: String,\\n required: true\\n },\\n location: {\\n type: pointSchema,\\n index: '2dsphere',\\n required: true\\n },\\n distance: {\\n type: String,\\n required: true\\n },\\n timeToReach: {\\n type: String,\\n required: true\\n },\\n image: {\\n type: String\\n },\\n travellingMethods: [{\\n type: String,\\n enum: ['Bus', 'Car', 'Train', 'Threewheeler', 'Foot']\\n }]\\n}, {\\n timestamps: true\\n});\\nplaceSchema.index({\\n '$**': 'text'\\n});\\nvar Places = mongoose.model('Place', placeSchema);\\nmodule.exports = Places;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInZpc2l0aW5nUGxhY2VzLmpzIl0sIm5hbWVzIjpbIm1vbmdvb3NlIiwicmVxdWlyZSIsIlNjaGVtYSIsInBvaW50U2NoZW1hIiwidHlwZSIsIlN0cmluZyIsImVudW0iLCJyZXF1aXJlZCIsImRlZmF1bHQiLCJjb29yZGluYXRlcyIsIk51bWJlciIsInBsYWNlU2NoZW1hIiwibmFtZSIsInVuaXF1ZSIsImRlc2NyaXB0aW9uIiwibG9jYXRpb24iLCJpbmRleCIsImRpc3RhbmNlIiwidGltZVRvUmVhY2giLCJpbWFnZSIsInRyYXZlbGxpbmdNZXRob2RzIiwidGltZXN0YW1wcyIsIlBsYWNlcyIsIm1vZGVsIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsUUFBUSxHQUFHQyxPQUFPLENBQUMsVUFBRCxDQUF4Qjs7QUFDQSxNQUFNQyxNQUFNLEdBQUdGLFFBQVEsQ0FBQ0UsTUFBeEI7QUFFQSxNQUFNQyxXQUFXLEdBQUcsSUFBSUQsTUFBSixDQUFXO0FBQzNCRSxFQUFBQSxJQUFJLEVBQUU7QUFDRkEsSUFBQUEsSUFBSSxFQUFFQyxNQURKO0FBRUZDLElBQUFBLElBQUksRUFBRSxDQUFDLE9BQUQsQ0FGSjtBQUdGQyxJQUFBQSxRQUFRLEVBQUUsSUFIUjtBQUlGQyxJQUFBQSxPQUFPLEVBQUU7QUFKUCxHQURxQjtBQU8zQkMsRUFBQUEsV0FBVyxFQUFFO0FBQ1RMLElBQUFBLElBQUksRUFBRSxDQUFDTSxNQUFELENBREc7QUFFVEgsSUFBQUEsUUFBUSxFQUFFO0FBRkQ7QUFQYyxDQUFYLENBQXBCO0FBYUEsTUFBTUksV0FBVyxHQUFHLElBQUlULE1BQUosQ0FBVztBQUMzQlUsRUFBQUEsSUFBSSxFQUFFO0FBQ0ZSLElBQUFBLElBQUksRUFBRUMsTUFESjtBQUVGRSxJQUFBQSxRQUFRLEVBQUUsSUFGUjtBQUdGTSxJQUFBQSxNQUFNLEVBQUU7QUFITixHQURxQjtBQU0zQkMsRUFBQUEsV0FBVyxFQUFFO0FBQ1RWLElBQUFBLElBQUksRUFBRUMsTUFERztBQUVURSxJQUFBQSxRQUFRLEVBQUU7QUFGRCxHQU5jO0FBVTNCUSxFQUFBQSxRQUFRLEVBQUU7QUFDTlgsSUFBQUEsSUFBSSxFQUFFRCxXQURBO0FBRU5hLElBQUFBLEtBQUssRUFBRSxVQUZEO0FBR05ULElBQUFBLFFBQVEsRUFBRTtBQUhKLEdBVmlCO0FBZTNCVSxFQUFBQSxRQUFRLEVBQUU7QUFDTmIsSUFBQUEsSUFBSSxFQUFFQyxNQURBO0FBRU5FLElBQUFBLFFBQVEsRUFBRTtBQUZKLEdBZmlCO0FBbUIzQlcsRUFBQUEsV0FBVyxFQUFFO0FBQ1RkLElBQUFBLElBQUksRUFBRUMsTUFERztBQUVURSxJQUFBQSxRQUFRLEVBQUU7QUFGRCxHQW5CYztBQXVCM0JZLEVBQUFBLEtBQUssRUFDTDtBQUNJZixJQUFBQSxJQUFJLEVBQUVDO0FBRFYsR0F4QjJCO0FBMkIzQmUsRUFBQUEsaUJBQWlCLEVBQUUsQ0FDZjtBQUNJaEIsSUFBQUEsSUFBSSxFQUFFQyxNQURWO0FBRUlDLElBQUFBLElBQUksRUFBRSxDQUFDLEtBQUQsRUFBUSxLQUFSLEVBQWUsT0FBZixFQUF3QixjQUF4QixFQUF3QyxNQUF4QztBQUZWLEdBRGU7QUEzQlEsQ0FBWCxFQWlDakI7QUFDQ2UsRUFBQUEsVUFBVSxFQUFFO0FBRGIsQ0FqQ2lCLENBQXBCO0FBcUNBVixXQUFXLENBQUNLLEtBQVosQ0FBa0I7QUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJTSxNQUFNLEdBQUd0QixRQUFRLENBQUN1QixLQUFULENBQWUsT0FBZixFQUF3QlosV0FBeEIsQ0FBYjtBQUVBYSxNQUFNLENBQUNDLE9BQVAsR0FBaUJILE1BQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgbW9uZ29vc2UgPSByZXF1aXJlKCdtb25nb29zZScpO1xyXG5jb25zdCBTY2hlbWEgPSBtb25nb29zZS5TY2hlbWE7XHJcblxyXG5jb25zdCBwb2ludFNjaGVtYSA9IG5ldyBTY2hlbWEoe1xyXG4gICAgdHlwZToge1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICBlbnVtOiBbJ1BvaW50J10sXHJcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXHJcbiAgICAgICAgZGVmYXVsdDogJ1BvaW50J1xyXG4gICAgfSxcclxuICAgIGNvb3JkaW5hdGVzOiB7XHJcbiAgICAgICAgdHlwZTogW051bWJlcl0sXHJcbiAgICAgICAgcmVxdWlyZWQ6IHRydWVcclxuICAgIH1cclxufSk7XHJcblxyXG5jb25zdCBwbGFjZVNjaGVtYSA9IG5ldyBTY2hlbWEoe1xyXG4gICAgbmFtZToge1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgICB1bmlxdWU6IHRydWVcclxuICAgIH0sXHJcbiAgICBkZXNjcmlwdGlvbjoge1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICByZXF1aXJlZDogdHJ1ZVxyXG4gICAgfSxcclxuICAgIGxvY2F0aW9uOiB7XHJcbiAgICAgICAgdHlwZTogcG9pbnRTY2hlbWEsXHJcbiAgICAgICAgaW5kZXg6ICcyZHNwaGVyZScsXHJcbiAgICAgICAgcmVxdWlyZWQ6IHRydWVcclxuICAgIH0sXHJcbiAgICBkaXN0YW5jZToge1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICByZXF1aXJlZDogdHJ1ZVxyXG4gICAgfSxcclxuICAgIHRpbWVUb1JlYWNoOiB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlXHJcbiAgICB9LFxyXG4gICAgaW1hZ2U6XHJcbiAgICB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgfSxcclxuICAgIHRyYXZlbGxpbmdNZXRob2RzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXHJcbiAgICAgICAgICAgIGVudW06IFsnQnVzJywgJ0NhcicsICdUcmFpbicsICdUaHJlZXdoZWVsZXInLCAnRm9vdCddXHJcbiAgICAgICAgfVxyXG4gICAgXVxyXG59LCB7XHJcbiAgICB0aW1lc3RhbXBzOiB0cnVlXHJcbn0pO1xyXG5cclxucGxhY2VTY2hlbWEuaW5kZXgoeyAnJCoqJzogJ3RleHQnIH0pO1xyXG52YXIgUGxhY2VzID0gbW9uZ29vc2UubW9kZWwoJ1BsYWNlJywgcGxhY2VTY2hlbWEpO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBQbGFjZXM7Il19\",\"originalCode\":\"const mongoose = require('mongoose');\\r\\nconst Schema = mongoose.Schema;\\r\\n\\r\\nconst pointSchema = new Schema({\\r\\n type: {\\r\\n type: String,\\r\\n enum: ['Point'],\\r\\n required: true,\\r\\n default: 'Point'\\r\\n },\\r\\n coordinates: {\\r\\n type: [Number],\\r\\n required: true\\r\\n }\\r\\n});\\r\\n\\r\\nconst placeSchema = new Schema({\\r\\n name: {\\r\\n type: String,\\r\\n required: true,\\r\\n unique: true\\r\\n },\\r\\n description: {\\r\\n type: String,\\r\\n required: true\\r\\n },\\r\\n location: {\\r\\n type: pointSchema,\\r\\n index: '2dsphere',\\r\\n required: true\\r\\n },\\r\\n distance: {\\r\\n type: String,\\r\\n required: true\\r\\n },\\r\\n timeToReach: {\\r\\n type: String,\\r\\n required: true\\r\\n },\\r\\n image:\\r\\n {\\r\\n type: String,\\r\\n },\\r\\n travellingMethods: [\\r\\n {\\r\\n type: String,\\r\\n enum: ['Bus', 'Car', 'Train', 'Threewheeler', 'Foot']\\r\\n }\\r\\n ]\\r\\n}, {\\r\\n timestamps: true\\r\\n});\\r\\n\\r\\nplaceSchema.index({ '$**': 'text' });\\r\\nvar Places = mongoose.model('Place', placeSchema);\\r\\n\\r\\nmodule.exports = Places;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/c4/visitingPlaces_c4ccc91c117df8c4aeada72a82534688.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2459\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\models\\\\visitingPlaces.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":4920,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":4917,\"count\":1}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"var passport = require('passport');\\n\\nvar LocalStrategy = require('passport-local').Strategy;\\n\\nvar User = require('../models/users');\\n\\nvar JwtStrategy = require('passport-jwt').Strategy;\\n\\nvar ExtractJwt = require('passport-jwt').ExtractJwt;\\n\\nvar jwt = require('jsonwebtoken');\\n\\npassport.use(new LocalStrategy(User.authenticate()));\\npassport.serializeUser(User.serializeUser());\\npassport.deserializeUser(User.deserializeUser());\\n\\nexports.getToken = user => {\\n return jwt.sign(user, process.env.secretKey, {\\n expiresIn: 3600\\n });\\n};\\n\\nvar opts = {};\\nopts.jwtFromRequest = ExtractJwt.fromAuthHeaderAsBearerToken();\\nopts.secretOrKey = process.env.secretKey;\\nexports.jwtPassport = passport.use(new JwtStrategy(opts, (jwt_payload, done) => {\\n User.findOne({\\n _id: jwt_payload._id\\n }, (err, user) => {\\n if (err) {\\n return done(err, false);\\n } else if (user) {\\n return done(null, user);\\n } else {\\n return done(null, false);\\n }\\n });\\n}));\\nexports.verifyUser = passport.authenticate('jwt', {\\n session: false\\n});\\n\\nexports.verifyAdmin = (req, res, next) => {\\n if (req.user.role == 'admin') {\\n return next();\\n } else if (req.user.role != 'admin') {\\n err = new Error('You are not authorized to perform this operation!');\\n err.status = 403;\\n return next(err);\\n } else {\\n err = new Error('Admin Verification Failed!');\\n err.status = 500;\\n return next(err);\\n }\\n};\\n\\nexports.verifyModerater = (req, res, next) => {\\n if (req.user.role != 'user') {\\n return next();\\n } else if (req.user.role == 'user') {\\n err = new Error('You are not authorized to perform this operation!');\\n err.status = 403;\\n return next(err);\\n }\\n};\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF1dGhlbnRpY2F0ZS5qcyJdLCJuYW1lcyI6WyJwYXNzcG9ydCIsInJlcXVpcmUiLCJMb2NhbFN0cmF0ZWd5IiwiU3RyYXRlZ3kiLCJVc2VyIiwiSnd0U3RyYXRlZ3kiLCJFeHRyYWN0Snd0Iiwiand0IiwidXNlIiwiYXV0aGVudGljYXRlIiwic2VyaWFsaXplVXNlciIsImRlc2VyaWFsaXplVXNlciIsImV4cG9ydHMiLCJnZXRUb2tlbiIsInVzZXIiLCJzaWduIiwicHJvY2VzcyIsImVudiIsInNlY3JldEtleSIsImV4cGlyZXNJbiIsIm9wdHMiLCJqd3RGcm9tUmVxdWVzdCIsImZyb21BdXRoSGVhZGVyQXNCZWFyZXJUb2tlbiIsInNlY3JldE9yS2V5Iiwiand0UGFzc3BvcnQiLCJqd3RfcGF5bG9hZCIsImRvbmUiLCJmaW5kT25lIiwiX2lkIiwiZXJyIiwidmVyaWZ5VXNlciIsInNlc3Npb24iLCJ2ZXJpZnlBZG1pbiIsInJlcSIsInJlcyIsIm5leHQiLCJyb2xlIiwiRXJyb3IiLCJzdGF0dXMiLCJ2ZXJpZnlNb2RlcmF0ZXIiXSwibWFwcGluZ3MiOiJBQUFBLElBQUlBLFFBQVEsR0FBR0MsT0FBTyxDQUFDLFVBQUQsQ0FBdEI7O0FBQ0EsSUFBSUMsYUFBYSxHQUFHRCxPQUFPLENBQUMsZ0JBQUQsQ0FBUCxDQUEwQkUsUUFBOUM7O0FBQ0EsSUFBSUMsSUFBSSxHQUFHSCxPQUFPLENBQUMsaUJBQUQsQ0FBbEI7O0FBRUEsSUFBSUksV0FBVyxHQUFHSixPQUFPLENBQUMsY0FBRCxDQUFQLENBQXdCRSxRQUExQzs7QUFDQSxJQUFJRyxVQUFVLEdBQUdMLE9BQU8sQ0FBQyxjQUFELENBQVAsQ0FBd0JLLFVBQXpDOztBQUNBLElBQUlDLEdBQUcsR0FBR04sT0FBTyxDQUFDLGNBQUQsQ0FBakI7O0FBR0FELFFBQVEsQ0FBQ1EsR0FBVCxDQUFhLElBQUlOLGFBQUosQ0FBa0JFLElBQUksQ0FBQ0ssWUFBTCxFQUFsQixDQUFiO0FBQ0FULFFBQVEsQ0FBQ1UsYUFB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dCI6WyJ2YXIgcGFzc3BvcnQgPSByZXF1aXJlKCdwYXNzcG9ydCcpO1xyXG52YXIgTG9jYWxTdHJhdGVneSA9IHJlcXVpcmUoJ3Bhc3Nwb3J0LWxvY2FsJykuU3RyYXRlZ3k7XHJcbnZhciBVc2VyID0gcmVxdWlyZSgnLi4vbW9kZWxzL3VzZXJzJyk7XHJcblxyXG52YXIgSnd0U3RyYXRlZ3kgPSByZXF1aXJlKCdwYXNzcG9ydC1qd3QnKS5TdHJhdGVneTtcclxudmFyIEV4dHJhY3RKd3QgPSByZXF1aXJlKCdwYXNzcG9ydC1qd3QnKS5FeHRyYWN0Snd0O1xyXG52YXIgand0ID0gcmVxdWlyZSgnanNvbndlYnRva2VuJyk7XHJcblxyXG5cclxucGFzc3BvcnQudXNlKG5ldyBMb2NhbFN0cmF0ZWd5KFVzZXIuYXV0aGVudGljYXRlKCkpKTtcclxucGFzc3BvcnQuc2VyaWFsaXplVXNlcihVc2VyLnNlcmlhbGl6ZVVzZXIoKSk7XHJcbnBhc3Nwb3J0LmRlc2VyaWFsaXplVXNlcihVc2VyLmRlc2VyaWFsaXplVXNlcigpKTtcclxuXHJcbmV4cG9ydHMuZ2V0VG9rZW4gPSAodXNlcikgPT4ge1xyXG4gICAgcmV0dXJuIGp3dC5zaWduKHVzZXIsIHByb2Nlc3MuZW52LnNlY3JldEtleSxcclxuICAgICAgICB7IGV4cGlyZXNJbjogMzYwMCB9KTtcclxufTtcclxuXHJcbnZhciBvcHRzID0ge307XHJcbm9wdHMuand0RnJvbVJlcXVlc3QgPSBFeHRyYWN0Snd0LmZyb21BdXRoSGVhZGVyQXNCZWFyZXJUb2tlbigpO1xyXG5vcHRzLnNlY3JldE9yS2V5ID0gcHJvY2Vzcy5lbnYuc2VjcmV0S2V5O1xyXG5cclxuZXhwb3J0cy5qd3RQYXNzcG9ydCA9IHBhc3Nwb3J0LnVzZShuZXcgSnd0U3RyYXRlZ3kob3B0cyxcclxuICAgIChqd3RfcGF5bG9hZCwgZG9uZSkgPT4ge1xyXG4gICAgICAgIFVzZXIuZmluZE9uZSh7IF9pZDogand0X3BheWxvYWQuX2lkIH0sIChlcnIsIHVzZXIpID0+IHtcclxuICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRvbmUoZXJyLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAodXNlcikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRvbmUobnVsbCwgdXNlcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZG9uZShudWxsLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH0pKTtcclxuXHJcbmV4cG9ydHMudmVyaWZ5VXNlciA9IHBhc3Nwb3J0LmF1dGhlbnRpY2F0ZSgnand0JywgeyBzZXNzaW9uOiBmYWxzZSB9KTtcclxuXHJcbmV4cG9ydHMudmVyaWZ5QWRtaW4gPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIGlmIChyZXEudXNlci5yb2xlID09ICdhZG1pbicpIHtcclxuICAgICAgICByZXR1cm4gbmV4dCgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAocmVxLnVzZXIucm9sZSAhPSAnYWRtaW4nKSB7XHJcbiAgICAgICAgZXJyID0gbmV3IEVycm9yKCdZb3UgYXJlIG5vdCBhdXRob3JpemVkIHRvIHBlcmZvcm0gdGhpcyBvcGVyYXRpb24hJyk7XHJcbiAgICAgICAgZXJyLnN0YXR1cyA9IDQwMztcclxuICAgICAgICByZXR1cm4gbmV4dChlcnIpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgZXJyID0gbmV3IEVycm9yKCdBZG1pbiBWZXJpZmljYXRpb24gRmFpbGVkIScpO1xyXG4gICAgICAgIGVyci5zdGF0dXMgPSA1MDA7XHJcbiAgICAgICAgcmV0dXJuIG5leHQoZXJyKTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0cy52ZXJpZnlNb2RlcmF0ZXIgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIGlmIChyZXEudXNlci5yb2xlICE9ICd1c2VyJykge1xyXG4gICAgICAgIHJldHVybiBuZXh0KCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChyZXEudXNlci5yb2xlID09ICd1c2VyJykge1xyXG4gICAgICAgIGVyciA9IG5ldyBFcnJvcignWW91IGFyZSBub3QgYXV0aG9yaXplZCB0byBwZXJmb3JtIHRoaXMgb3BlcmF0aW9uIScpO1xyXG4gICAgICAgIGVyci5zdGF0dXMgPSA0MDM7XHJcbiAgICAgICAgcmV0dXJuIG5leHQoZXJyKTtcclxuICAgIH1cclxufVxyXG4iXX0=\",\"originalCode\":\"var passport = require('passport');\\r\\nvar LocalStrategy = require('passport-local').Strategy;\\r\\nvar User = require('../models/users');\\r\\n\\r\\nvar JwtStrategy = require('passport-jwt').Strategy;\\r\\nvar ExtractJwt = require('passport-jwt').ExtractJwt;\\r\\nvar jwt = require('jsonwebtoken');\\r\\n\\r\\n\\r\\npassport.use(new LocalStrategy(User.authenticate()));\\r\\npassport.serializeUser(User.serializeUser());\\r\\npassport.deserializeUser(User.deserializeUser());\\r\\n\\r\\nexports.getToken = (user) => {\\r\\n return jwt.sign(user, process.env.secretKey,\\r\\n { expiresIn: 3600 });\\r\\n};\\r\\n\\r\\nvar opts = {};\\r\\nopts.jwtFromRequest = ExtractJwt.fromAuthHeaderAsBearerToken();\\r\\nopts.secretOrKey = process.env.secretKey;\\r\\n\\r\\nexports.jwtPassport = passport.use(new JwtStrategy(opts,\\r\\n (jwt_payload, done) => {\\r\\n User.findOne({ _id: jwt_payload._id }, (err, user) => {\\r\\n if (err) {\\r\\n return done(err, false);\\r\\n }\\r\\n else if (user) {\\r\\n return done(null, user);\\r\\n }\\r\\n else {\\r\\n return done(null, false);\\r\\n }\\r\\n });\\r\\n }));\\r\\n\\r\\nexports.verifyUser = passport.authenticate('jwt', { session: false });\\r\\n\\r\\nexports.verifyAdmin = (req, res, next) => {\\r\\n if (req.user.role == 'admin') {\\r\\n return next();\\r\\n }\\r\\n else if (req.user.role != 'admin') {\\r\\n err = new Error('You are not authorized to perform this operation!');\\r\\n err.status = 403;\\r\\n return next(err);\\r\\n }\\r\\n else {\\r\\n err = new Error('Admin Verification Failed!');\\r\\n err.status = 500;\\r\\n return next(err);\\r\\n }\\r\\n}\\r\\n\\r\\nexports.verifyModerater = (req, res, next) => {\\r\\n if (req.user.role != 'user') {\\r\\n return next();\\r\\n }\\r\\n else if (req.user.role == 'user') {\\r\\n err = new Error('You are not authorized to perform this operation!');\\r\\n err.status = 403;\\r\\n return next(err);\\r\\n }\\r\\n}\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/17/authenticate_1749ed24acd3b9174e3e8d9c003de68d.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2460\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\middleware\\\\authenticate.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":8164,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":8161,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
.exports.getToken\",\"ranges\":[{\"startOffset\":536,\"endOffset\":622,\"count\":2}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":803,\"endOffset\":1050,\"count\":3}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":875,\"endOffset\":1046,\"count\":3}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
.exports.verifyAdmin\",\"ranges\":[{\"startOffset\":1150,\"endOffset\":1495,\"count\":3}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
.exports.verifyModerater\",\"ranges\":[{\"startOffset\":1524,\"endOffset\":1761,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"var validationRules = {\\n id: {\\n in: ['params', 'query'],\\n errorMessage: 'ID is wrong',\\n isInt: true,\\n toInt: true\\n },\\n name: {\\n errorMessage: 'Name should be at least 2 chars long and maximum of 50 chars',\\n isLength: {\\n options: {\\n min: 2,\\n max: 50\\n }\\n },\\n trim: true\\n },\\n description: {\\n errorMessage: 'Description should be at least 2 chars long and maximum of 200 chars',\\n isLength: {\\n options: {\\n min: 2,\\n max: 200\\n }\\n },\\n trim: true\\n },\\n distance: {\\n errorMessage: 'Distance should be at least 1 chars long and maximum of 200 chars',\\n isLength: {\\n options: {\\n min: 1,\\n max: 200\\n }\\n },\\n trim: true\\n },\\n timeToReach: {\\n errorMessage: 'Time To Reach should be at least 2 chars long and maximum of 200 chars',\\n isLength: {\\n options: {\\n min: 2,\\n max: 200\\n }\\n },\\n trim: true\\n },\\n firstname: {\\n errorMessage: 'First Name should be at least 3 chars long and maximum of 50 chars',\\n isLength: {\\n options: {\\n min: 3,\\n max: 50\\n }\\n },\\n trim: true\\n },\\n lastname: {\\n errorMessage: 'Last Name should be at least 3 chars long and maximum of 50 chars',\\n isLength: {\\n options: {\\n min: 3,\\n max: 50\\n }\\n },\\n trim: true\\n },\\n email: {\\n errorMessage: 'Please enter a valid email address',\\n isEmail: true,\\n trim: true\\n },\\n mobile: {\\n errorMessage: 'Please enter Phone Number in 10 digits',\\n isLength: {\\n options: {\\n min: 10,\\n max: 10\\n }\\n },\\n matches: {\\n options: [/^\\\\d{10}$/],\\n errorMessage: \\\"Please enter digits\\\"\\n },\\n trim: true\\n },\\n password: {\\n isLength: {\\n errorMessage: 'Password should be at least 6 chars long',\\n options: {\\n min: 6\\n }\\n }\\n },\\n confirm_password: {\\n errorMessage: 'Must have the same value as the password field',\\n custom: {\\n options: (value, {\\n req\\n }) => value === req.body.password\\n }\\n },\\n suite: {\\n errorMessage: 'Please select suite type',\\n isIn: {\\n options: [['gold', 'luxury', 'platinum']]\\n }\\n },\\n roomnumber: {\\n errorMessage: 'Room Number should be at least 3 chars long and maximum of 50 chars',\\n isLength: {\\n options: {\\n min: 3,\\n max: 50\\n }\\n },\\n trim: true\\n },\\n state: {\\n errorMessage: 'Please select correct state',\\n isIn: {\\n options: [[\\\"new\\\", \\\"not-completed\\\", \\\"canceled\\\", \\\"completed\\\"]]\\n }\\n },\\n method: {\\n errorMessage: 'Please select correct travelling method',\\n isIn: {\\n options: [['Bus', 'Car', 'Train', 'Threewheeler', 'Foot']]\\n }\\n }\\n};\\nexports.validationRules = validationRules;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInZhbGlkYXRpb24uanMiXSwibmFtZXMiOlsidmFsaWRhdGlvblJ1bGVzIiwiaWQiLCJpbiIsImVycm9yTWVzc2FnZSIsImlzSW50IiwidG9JbnQiLCJuYW1lIiwiaXNMZW5ndGgiLCJvcHRpb25zIiwibWluIiwibWF4IiwidHJpbSIsImRlc2NyaXB0aW9uIiwiZGlzdGFuY2UiLCJ0aW1lVG9SZWFjaCIsImZpcnN0bmFtZSIsImxhc3RuYW1lIiwiZW1haWwiLCJpc0VtYWlsIiwibW9iaWxlIiwibWF0Y2hlcyIsInBhc3N3b3JkIiwiY29uZmlybV9wYXNzd29yZCIsImN1c3RvbSIsInZhbHVlIiwicmVxIiwiYm9keSIsInN1aXRlIiwiaXNJbiIsInJvb21udW1iZXIiLCJzdGF0ZSIsIm1ldGhvZCIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLElBQUlBLGVBQWUsR0FBRztBQUNsQkMsRUFBQUEsRUFBRSxFQUFFO0FBQ0FDLElBQUFBLEVBQUUsRUFBRSxDQUFDLFFBQUQsRUFBVyxPQUFYLENBREo7QUFFQUMsSUFBQUEsWUFBWSxFQUFFLGFBRmQ7QUFHQUMsSUFBQUEsS0FBSyxFQUFFLElBSFA7QUFJQUMsSUFBQUEsS0FBSyxFQUFFO0FBSlAsR0FEYztBQU9sQkMsRUFBQUEsSUFBSSxFQUFFO0FBQ0ZILElBQUFBLFlBQVksRUFBRSw4REFEWjtBQUVGSSxJQUFBQSxRQUFRLEVBQUU7QUFDTkMsTUFBQUEsT0FBTyxFQUFFO0FBQUVDLFFBQUFBLEdBQUcsRUFBRSxDQUFQO0FBQVVDLFFBQUFBLEdBQUcsRUFBRTtBQUFmO0FBREgsS0FGUjtBQUtGQyxJQUFBQSxJQUFJLEVBQUU7QUFMSixHQVBZO0FBY2xCQyxFQUFBQSxXQUFXLEVBQUU7QUFDVFQsSUFBQUEsWUFBWSxFQUFFLHNFQURMO0FBRVRJLElBQUFBLFFBQVEsRUFBRTtBQUNOQyxNQUFBQSxPQUFPLEVBQUU7QUFBRUMsUUFBQUEsR0FBRyxFQUFFLENBQVA7QUFBVUMsUUFBQUEsR0FBRyxFQUFFO0FBQWY7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RTtBQUFFQyxRQUFBQSxHQUFHLEVBQUUsQ0FBUDtBQUFVQyxRQUFBQSxHQUFHLEVBQUU7QUFBZjtBQURILEtBRkY7QUFLUkMsSUFBQUEsSUFBSSxFQUFFO0FBTEUsR0FuRk07QUEwRmxCbUIsRUFBQUEsS0FBSyxFQUFFO0FBQ0gzQixJQUFBQSxZQUFZLEVBQUUsNkJBRFg7QUFFSHlCLElBQUFBLElBQUksRUFBRTtBQUNGcEIsTUFBQUEsT0FBTyxFQUFFLENBQUMsQ0FBQyxLQUFELEVBQVEsZUFBUixFQUF5QixVQUF6QixFQUFxQyxXQUFyQyxDQUFEO0FBRFA7QUFGSCxHQTFGVztBQWdHbEJ1QixFQUFBQSxNQUFNLEVBQUU7QUFDSjVCLElBQUFBLFlBQVksRUFBRSx5Q0FEVjtBQUVKeUIsSUFBQUEsSUFBSSxFQUFFO0FBQ0ZwQixNQUFBQSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEtBQUQsRUFBUSxLQUFSLEVBQWUsT0FBZixFQUF3QixjQUF4QixFQUF3QyxNQUF4QyxDQUFEO0FBRFA7QUFGRjtBQWhHVSxDQUF0QjtBQXdHQXdCLE9BQU8sQ0FBQ2hDLGVBQVIsR0FBMEJBLGVBQTFCIiwic291cmNlc0NvbnRlbnQiOlsidmFyIHZhbGlkYXRpb25SdWxlcyA9IHtcclxuICAgIGlkOiB7XHJcbiAgICAgICAgaW46IFsncGFyYW1zJywgJ3F1ZXJ5J10sXHJcbiAgICAgICAgZXJyb3JNZXNzYWdlOiAnSUQgaXMgd3JvbmcnLFxyXG4gICAgICAgIGlzSW50OiB0cnVlLFxyXG4gICAgICAgIHRvSW50OiB0cnVlLFxyXG4gICAgfSxcclxuICAgIG5hbWU6IHtcclxuICAgICAgICBlcnJvck1lc3NhZ2U6ICdOYW1lIHNob3VsZCBiZSBhdCBsZWFzdCAyIGNoYXJzIGxvbmcgYW5kIG1heGltdW0gb2YgNTAgY2hhcnMnLFxyXG4gICAgICAgIGlzTGVuZ3RoOiB7XHJcbiAgICAgICAgICAgIG9wdGlvbnM6IHsgbWluOiAyLCBtYXg6IDUwIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHRyaW06IHRydWVcclxuICAgIH0sXHJcbiAgICBkZXNjcmlwdGlvbjoge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ0Rlc2NyaXB0aW9uIHNob3VsZCBiZSBhdCBsZWFzdCAyIGNoYXJzIGxvbmcgYW5kIG1heGltdW0gb2YgMjAwIGNoYXJzJyxcclxuICAgICAgICBpc0xlbmd0aDoge1xyXG4gICAgICAgICAgICBvcHRpb25zOiB7IG1pbjogMiwgbWF4OiAyMDAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHJpbTogdHJ1ZVxyXG4gICAgfSxcclxuICAgIGRpc3RhbmNlOiB7XHJcbiAgICAgICAgZXJyb3JNZXNzYWdlOiAnRGlzdGFuY2Ugc2hvdWxkIGJlIGF0IGxlYXN0IDEgY2hhcnMgbG9uZyBhbmQgbWF4aW11bSBvZiAyMDAgY2hhcnMnLFxyXG4gICAgICAgIGlzTGVuZ3RoOiB7XHJcbiAgICAgICAgICAgIG9wdGlvbnM6IHsgbWluOiAxLCBtYXg6IDIwMCB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICB0cmltOiB0cnVlXHJcbiAgICB9LFxyXG4gICAgdGltZVRvUmVhY2g6IHtcclxuICAgICAgICBlcnJvck1lc3NhZ2U6ICdUaW1lIFRvIFJlYWNoIHNob3VsZCBiZSBhdCBsZWFzdCAyIGNoYXJzIGxvbmcgYW5kIG1heGltdW0gb2YgMjAwIGNoYXJzJyxcclxuICAgICAgICBpc0xlbmd0aDoge1xyXG4gICAgICAgICAgICBvcHRpb25zOiB7IG1pbjogMiwgbWF4OiAyMDAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHJpbTogdHJ1ZVxyXG4gICAgfSxcclxuICAgIGZpcnN0bmFtZToge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ0ZpcnN0IE5hbWUgc2hvdWxkIGJlIGF0IGxlYXN0IDMgY2hhcnMgbG9uZyBhbmQgbWF4aW11bSBvZiA1MCBjaGFycycsXHJcbiAgICAgICAgaXNMZW5ndGg6IHtcclxuICAgICAgICAgICAgb3B0aW9uczogeyBtaW46IDMsIG1heDogNTAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHJpbTogdHJ1ZVxyXG4gICAgfSxcclxuICAgIGxhc3RuYW1lOiB7XHJcbiAgICAgICAgZXJyb3JNZXNzYWdlOiAnTGFzdCBOYW1lIHNob3VsZCBiZSBhdCBsZWFzdCAzIGNoYXJzIGxvbmcgYW5kIG1heGltdW0gb2YgNTAgY2hhcnMnLFxyXG4gICAgICAgIGlzTGVuZ3RoOiB7XHJcbiAgICAgICAgICAgIG9wdGlvbnM6IHsgbWluOiAzLCBtYXg6IDUwIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHRyaW06IHRydWVcclxuICAgIH0sXHJcbiAgICBlbWFpbDoge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ1BsZWFzZSBlbnRlciBhIHZhbGlkIGVtYWlsIGFkZHJlc3MnLFxyXG4gICAgICAgIGlzRW1haWw6IHRydWUsXHJcbiAgICAgICAgdHJpbTogdHJ1ZSxcclxuICAgIH0sXHJcbiAgICBtb2JpbGU6IHtcclxuICAgICAgICBlcnJvck1lc3NhZ2U6ICdQbGVhc2UgZW50ZXIgUGhvbmUgTnVtYmVyIGluIDEwIGRpZ2l0cycsXHJcbiAgICAgICAgaXNMZW5ndGg6IHtcclxuICAgICAgICAgICAgb3B0aW9uczogeyBtaW46IDEwLCBtYXg6IDEwIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIG1hdGNoZXM6IHtcclxuICAgICAgICAgICAgb3B0aW9uczogWy9eXFxkezEwfSQvXSxcclxuICAgICAgICAgICAgZXJyb3JNZXNzYWdlOiBcIlBsZWFzZSBlbnRlciBkaWdpdHNcIlxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHJpbTogdHJ1ZVxyXG4gICAgfSxcclxuICAgIHBhc3N3b3JkOiB7XHJcbiAgICAgICAgaXNMZW5ndGg6IHtcclxuICAgICAgICAgICAgZXJyb3JNZXNzYWdlOiAnUGFzc3dvcmQgc2hvdWxkIGJlIGF0IGxlYXN0IDYgY2hhcnMgbG9uZycsXHJcbiAgICAgICAgICAgIG9wdGlvbnM6IHsgbWluOiA2IH1cclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgY29uZmlybV9wYXNzd29yZDoge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ011c3QgaGF2ZSB0aGUgc2FtZSB2YWx1ZSBhcyB0aGUgcGFzc3dvcmQgZmllbGQnLFxyXG4gICAgICAgIGN1c3RvbToge1xyXG4gICAgICAgICAgICBvcHRpb25zOiAodmFsdWUsIHsgcmVxIH0pID0+IHZhbHVlID09PSByZXEuYm9keS5wYXNzd29yZFxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICBzdWl0ZToge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ1BsZWFzZSBzZWxlY3Qgc3VpdGUgdHlwZScsXHJcbiAgICAgICAgaXNJbjoge1xyXG4gICAgICAgICAgICBvcHRpb25zOiBbWydnb2xkJywgJ2x1eHVyeScsICdwbGF0aW51bSddXSxcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgcm9vbW51bWJlcjoge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ1Jvb20gTnVtYmVyIHNob3VsZCBiZSBhdCBsZWFzdCAzIGNoYXJzIGxvbmcgYW5kIG1heGltdW0gb2YgNTAgY2hhcnMnLFxyXG4gICAgICAgIGlzTGVuZ3RoOiB7XHJcbiAgICAgICAgICAgIG9wdGlvbnM6IHsgbWluOiAzLCBtYXg6IDUwIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHRyaW06IHRydWVcclxuICAgIH0sXHJcbiAgICBzdGF0ZToge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ1BsZWFzZSBzZWxlY3QgY29ycmVjdCBzdGF0ZScsXHJcbiAgICAgICAgaXNJbjoge1xyXG4gICAgICAgICAgICBvcHRpb25zOiBbW1wibmV3XCIsIFwibm90LWNvbXBsZXRlZFwiLCBcImNhbmNlbGVkXCIsIFwiY29tcGxldGVkXCJdXSxcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgbWV0aG9kOiB7XHJcbiAgICAgICAgZXJyb3JNZXNzYWdlOiAnUGxlYXNlIHNlbGVjdCBjb3JyZWN0IHRyYXZlbGxpbmcgbWV0aG9kJyxcclxuICAgICAgICBpc0luOiB7XHJcbiAgICAgICAgICAgIG9wdGlvbnM6IFtbJ0J1cycsICdDYXInLCAnVHJhaW4nLCAnVGhyZWV3aGVlbGVyJywgJ0Zvb3QnXV0sXHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxufVxyXG5cclxuZXhwb3J0cy52YWxpZGF0aW9uUnVsZXMgPSB2YWxpZGF0aW9uUnVsZXM7Il19\",\"originalCode\":\"var validationRules = {\\r\\n id: {\\r\\n in: ['params', 'query'],\\r\\n errorMessage: 'ID is wrong',\\r\\n isInt: true,\\r\\n toInt: true,\\r\\n },\\r\\n name: {\\r\\n errorMessage: 'Name should be at least 2 chars long and maximum of 50 chars',\\r\\n isLength: {\\r\\n options: { min: 2, max: 50 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n description: {\\r\\n errorMessage: 'Description should be at least 2 chars long and maximum of 200 chars',\\r\\n isLength: {\\r\\n options: { min: 2, max: 200 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n distance: {\\r\\n errorMessage: 'Distance should be at least 1 chars long and maximum of 200 chars',\\r\\n isLength: {\\r\\n options: { min: 1, max: 200 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n timeToReach: {\\r\\n errorMessage: 'Time To Reach should be at least 2 chars long and maximum of 200 chars',\\r\\n isLength: {\\r\\n options: { min: 2, max: 200 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n firstname: {\\r\\n errorMessage: 'First Name should be at least 3 chars long and maximum of 50 chars',\\r\\n isLength: {\\r\\n options: { min: 3, max: 50 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n lastname: {\\r\\n errorMessage: 'Last Name should be at least 3 chars long and maximum of 50 chars',\\r\\n isLength: {\\r\\n options: { min: 3, max: 50 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n email: {\\r\\n errorMessage: 'Please enter a valid email address',\\r\\n isEmail: true,\\r\\n trim: true,\\r\\n },\\r\\n mobile: {\\r\\n errorMessage: 'Please enter Phone Number in 10 digits',\\r\\n isLength: {\\r\\n options: { min: 10, max: 10 }\\r\\n },\\r\\n matches: {\\r\\n options: [/^\\\\d{10}$/],\\r\\n errorMessage: \\\"Please enter digits\\\"\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n password: {\\r\\n isLength: {\\r\\n errorMessage: 'Password should be at least 6 chars long',\\r\\n options: { min: 6 }\\r\\n }\\r\\n },\\r\\n confirm_password: {\\r\\n errorMessage: 'Must have the same value as the password field',\\r\\n custom: {\\r\\n options: (value, { req }) => value === req.body.password\\r\\n }\\r\\n },\\r\\n suite: {\\r\\n errorMessage: 'Please select suite type',\\r\\n isIn: {\\r\\n options: [['gold', 'luxury', 'platinum']],\\r\\n }\\r\\n },\\r\\n roomnumber: {\\r\\n errorMessage: 'Room Number should be at least 3 chars long and maximum of 50 chars',\\r\\n isLength: {\\r\\n options: { min: 3, max: 50 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n state: {\\r\\n errorMessage: 'Please select correct state',\\r\\n isIn: {\\r\\n options: [[\\\"new\\\", \\\"not-completed\\\", \\\"canceled\\\", \\\"completed\\\"]],\\r\\n }\\r\\n },\\r\\n method: {\\r\\n errorMessage: 'Please select correct travelling method',\\r\\n isIn: {\\r\\n options: [['Bus', 'Car', 'Train', 'Threewheeler', 'Foot']],\\r\\n }\\r\\n },\\r\\n}\\r\\n\\r\\nexports.validationRules = validationRules;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/4b/validation_4b7a8ff68e044daa8c6daa8312a761dc.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2493\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\middleware\\\\validation.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":11520,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":11517,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"options\",\"ranges\":[{\"startOffset\":2073,\"endOffset\":2134,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"var express = require('express');\\n\\nvar router = express.Router();\\n\\nvar Users = require('../models/users');\\n\\nvar passport = require('passport');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nconst signupAdmin = (req, res, next) => {\\n var admin = {\\n username: req.body.email,\\n firstname: req.body.firstname,\\n lastname: req.body.lastname,\\n email: req.body.email,\\n role: 'admin'\\n };\\n Users.register(new Users(admin), req.body.password, (err, user) => {\\n if (err) {\\n res.statusCode = 403;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n status: 'Registration Unsuccessful!'\\n });\\n } else {\\n if (req.body.firstname) user.firstname = req.body.firstname;\\n if (req.body.lastname) user.lastname = req.body.lastname;\\n user.save((err, user) => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n status: 'Registration Successful!'\\n });\\n });\\n }\\n });\\n};\\n\\nconst login = (req, res, next) => {\\n passport.authenticate('local', (err, user, info) => {\\n if (!user) {\\n res.statusCode = 401;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n status: 'Login Unsuccessful!',\\n err: info\\n });\\n return next(err);\\n }\\n\\n req.logIn(user, err => {\\n var token = authenticate.getToken({\\n _id: req.user._id,\\n role: user.role\\n });\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n status: 'Login Successful!',\\n token: token\\n });\\n });\\n })(req, res, next);\\n};\\n\\nconst changePassoword = (req, res, next) => {\\n var userId = req.params.id;\\n var newPasswordString = req.body.password;\\n Users.findById(userId).then(function (sanitizedUser) {\\n if (sanitizedUser) {\\n sanitizedUser.setPassword(newPasswordString, function () {\\n sanitizedUser.save();\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n message: 'password reset successful'\\n });\\n });\\n } else {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'This user does not exist'\\n });\\n }\\n }, function (err) {\\n next(err);\\n });\\n};\\n\\nconst logout = (req, res) => {\\n if (req.session) {\\n req.session.destroy();\\n res.clearCookie('session-id');\\n } else {\\n var err = new Error('You are not logged in!');\\n err.status = 403;\\n }\\n};\\n\\nexports.signupAdmin = signupAdmin;\\nexports.login = login;\\nexports.logout = logout;\\nexports.changePassoword = changePassoword;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVzZXJDb250cm9sbGVyLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwicm91dGVyIiwiUm91dGVyIiwiVXNlcnMiLCJwYXNzcG9ydCIsImF1dGhlbnRpY2F0ZSIsInNpZ251cEFkbWluIiwicmVxIiwicmVzIiwibmV4dCIsImFkbWluIiwidXNlcm5hbWUiLCJib2R5IiwiZW1haWwiLCJmaXJzdG5hbWUiLCJsYXN0bmFtZSIsInJvbGUiLCJyZWdpc3RlciIsInBhc3N3b3JkIiwiZXJyIiwidXNlciIsInN0YXR1c0NvZGUiLCJzZXRIZWFkZXIiLCJqc29uIiwic3VjY2VzcyIsInN0YXR1cyIsInNhdmUiLCJsb2dpbiIsImluZm8iLCJsb2dJbiIsInRva2VuIiwiZ2V0VG9rZW4iLCJfaWQiLCJjaGFuZ2VQYXNzb3dvcmQiLCJ1c2VySWQiLCJwYXJhbXMiLCJpZCIsIm5ld1Bhc3N3b3JkU3RyaW5nIiwiZmluZEJ5SWQiLCJ0aGVuIiwic2FuaXRpemVkVXNlciIsInNldFBhc3N3b3JkIiwibWVzc2FnZSIsImxvZ291dCIsInNlc3Npb24iLCJkZXN0cm95IiwiY2xlYXJDb29raWUiLCJFcnJvciIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLElBQUlBLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBckI7O0FBQ0EsSUFBSUMsTUFBTSxHQUFHRixPQUFPLENBQUNHLE1BQVIsRUFBYjs7QUFFQSxJQUFJQyxLQUFLLEdBQUdILE9BQU8sQ0FBQyxpQkFBRCxDQUFuQjs7QUFDQSxJQUFJSSxRQUFRLEdBQUdKLE9BQU8sQ0FBQyxVQUFELENBQXRCOztBQUNBLElBQUlLLFlBQVksR0FBR0wsT0FBTyxDQUFDLDRCQUFELENBQTFCOztBQUdBLE1BQU1NLFdBQVcsR0FBRyxDQUFDQyxHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUNwQyxNQUFJQyxLQUFLLEdBQUc7QUFDUkMsSUFBQUEsUUFBUSxFQUFFSixHQUFHLENBQUNLLElBQUos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YkQsRUFhRyxVQUFVdkIsR0FBVixFQUFlO0FBQ2RWLElBQUFBLElBQUksQ0FBQ1UsR0FBRCxDQUFKO0FBQ0gsR0FmRDtBQWdCSCxDQW5CRDs7QUFxQkEsTUFBTXdCLE1BQU0sR0FBRyxDQUFDcEMsR0FBRCxFQUFNQyxHQUFOLEtBQWM7QUFDekIsTUFBSUQsR0FBRyxDQUFDcUMsT0FBUixFQUFpQjtBQUNickMsSUFBQUEsR0FBRyxDQUFDcUMsT0FBSixDQUFZQyxPQUFaO0FBQ0FyQyxJQUFBQSxHQUFHLENBQUNzQyxXQUFKLENBQWdCLFlBQWhCO0FBQ0gsR0FIRCxNQUlLO0FBQ0QsUUFBSTNCLEdBQUcsR0FBRyxJQUFJNEIsS0FBSixDQUFVLHdCQUFWLENBQVY7QUFDQTVCLElBQUFBLEdBQUcsQ0FBQ00sTUFBSixHQUFhLEdBQWI7QUFDSDtBQUNKLENBVEQ7O0FBV0F1QixPQUFPLENBQUMxQyxXQUFSLEdBQXNCQSxXQUF0QjtBQUNBMEMsT0FBTyxDQUFDckIsS0FBUixHQUFnQkEsS0FBaEI7QUFDQXFCLE9BQU8sQ0FBQ0wsTUFBUixHQUFpQkEsTUFBakI7QUFDQUssT0FBTyxDQUFDZixlQUFSLEdBQTBCQSxlQUExQiIsInNvdXJjZXNDb250ZW50IjpbInZhciBleHByZXNzID0gcmVxdWlyZSgnZXhwcmVzcycpO1xyXG52YXIgcm91dGVyID0gZXhwcmVzcy5Sb3V0ZXIoKTtcclxuXHJcbnZhciBVc2VycyA9IHJlcXVpcmUoJy4uL21vZGVscy91c2VycycpO1xyXG52YXIgcGFzc3BvcnQgPSByZXF1aXJlKCdwYXNzcG9ydCcpO1xyXG52YXIgYXV0aGVudGljYXRlID0gcmVxdWlyZSgnLi4vbWlkZGxld2FyZS9hdXRoZW50aWNhdGUnKTtcclxuXHJcblxyXG5jb25zdCBzaWdudXBBZG1pbiA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgdmFyIGFkbWluID0ge1xyXG4gICAgICAgIHVzZXJuYW1lOiByZXEuYm9keS5lbWFpbCxcclxuICAgICAgICBmaXJzdG5hbWU6IHJlcS5ib2R5LmZpcnN0bmFtZSxcclxuICAgICAgICBsYXN0bmFtZTogcmVxLmJvZHkubGFzdG5hbWUsXHJcbiAgICAgICAgZW1haWw6IHJlcS5ib2R5LmVtYWlsLFxyXG4gICAgICAgIHJvbGU6ICdhZG1pbidcclxuICAgIH1cclxuICAgIFVzZXJzLnJlZ2lzdGVyKG5ldyBVc2VycyhhZG1pbiksXHJcbiAgICAgICAgcmVxLmJvZHkucGFzc3dvcmQsIChlcnIsIHVzZXIpID0+IHtcclxuICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgc3RhdHVzOiAnUmVnaXN0cmF0aW9uIFVuc3VjY2Vzc2Z1bCEnIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlcS5ib2R5LmZpcnN0bmFtZSlcclxuICAgICAgICAgICAgICAgICAgICB1c2VyLmZpcnN0bmFtZSA9IHJlcS5ib2R5LmZpcnN0bmFtZTtcclxuICAgICAgICAgICAgICAgIGlmIChyZXEuYm9keS5sYXN0bmFtZSlcclxuICAgICAgICAgICAgICAgICAgICB1c2VyLmxhc3RuYW1lID0gcmVxLmJvZHkubGFzdG5hbWU7XHJcbiAgICAgICAgICAgICAgICB1c2VyLnNhdmUoKGVyciwgdXNlcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCBzdGF0dXM6ICdSZWdpc3RyYXRpb24gU3VjY2Vzc2Z1bCEnIH0pO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxufVxyXG5cclxuY29uc3QgbG9naW4gPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHBhc3Nwb3J0LmF1dGhlbnRpY2F0ZSgnbG9jYWwnLCAoZXJyLCB1c2VyLCBpbmZvKSA9PiB7XHJcblxyXG4gICAgICAgIGlmICghdXNlcikge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwMTtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgc3RhdHVzOiAnTG9naW4gVW5zdWNjZXNzZnVsIScsIGVycjogaW5mbyB9KTtcclxuICAgICAgICAgICAgcmV0dXJuIG5leHQoZXJyKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmVxLmxvZ0luKHVzZXIsIChlcnIpID0+IHtcclxuICAgICAgICAgICAgdmFyIHRva2VuID0gYXV0aGVudGljYXRlLmdldFRva2VuKHsgX2lkOiByZXEudXNlci5faWQsIHJvbGU6IHVzZXIucm9sZSB9KTtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgc3RhdHVzOiAnTG9naW4gU3VjY2Vzc2Z1bCEnLCB0b2tlbjogdG9rZW4sIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSkocmVxLCByZXMsIG5leHQpO1xyXG59XHJcblxyXG5jb25zdCBjaGFuZ2VQYXNzb3dvcmQgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHZhciB1c2VySWQgPSByZXEucGFyYW1zLmlkO1xyXG4gICAgdmFyIG5ld1Bhc3N3b3JkU3RyaW5nID0gcmVxLmJvZHkucGFzc3dvcmQ7XHJcbiAgICBVc2Vycy5maW5kQnlJZCh1c2VySWQpLnRoZW4oZnVuY3Rpb24gKHNhbml0aXplZFVzZXIpIHtcclxuICAgICAgICBpZiAoc2FuaXRpemVkVXNlcikge1xyXG4gICAgICAgICAgICBzYW5pdGl6ZWRVc2VyLnNldFBhc3N3b3JkKG5ld1Bhc3N3b3JkU3RyaW5nLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICBzYW5pdGl6ZWRVc2VyLnNhdmUoKTtcclxuICAgICAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgbWVzc2FnZTogJ3Bhc3N3b3JkIHJlc2V0IHN1Y2Nlc3NmdWwnIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwNDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogJ1RoaXMgdXNlciBkb2VzIG5vdCBleGlzdCcgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSwgZnVuY3Rpb24gKGVycikge1xyXG4gICAgICAgIG5leHQoZXJyKTtcclxuICAgIH0pO1xyXG59XHJcblxyXG5jb25zdCBsb2dvdXQgPSAocmVxLCByZXMpID0+IHtcclxuICAgIGlmIChyZXEuc2Vzc2lvbikge1xyXG4gICAgICAgIHJlcS5zZXNzaW9uLmRlc3Ryb3koKTtcclxuICAgICAgICByZXMuY2xlYXJDb29raWUoJ3Nlc3Npb24taWQnKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoJ1lvdSBhcmUgbm90IGxvZ2dlZCBpbiEnKTtcclxuICAgICAgICBlcnIuc3RhdHVzID0gNDAzO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnRzLnNpZ251cEFkbWluID0gc2lnbnVwQWRtaW47XHJcbmV4cG9ydHMubG9naW4gPSBsb2dpbjtcclxuZXhwb3J0cy5sb2dvdXQgPSBsb2dvdXQ7XHJcbmV4cG9ydHMuY2hhbmdlUGFzc293b3JkID0gY2hhbmdlUGFzc293b3JkOyJdfQ==\",\"originalCode\":\"var express = require('express');\\r\\nvar router = express.Router();\\r\\n\\r\\nvar Users = require('../models/users');\\r\\nvar passport = require('passport');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\n\\r\\n\\r\\nconst signupAdmin = (req, res, next) => {\\r\\n var admin = {\\r\\n username: req.body.email,\\r\\n firstname: req.body.firstname,\\r\\n lastname: req.body.lastname,\\r\\n email: req.body.email,\\r\\n role: 'admin'\\r\\n }\\r\\n Users.register(new Users(admin),\\r\\n req.body.password, (err, user) => {\\r\\n if (err) {\\r\\n res.statusCode = 403;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, status: 'Registration Unsuccessful!' });\\r\\n }\\r\\n else {\\r\\n if (req.body.firstname)\\r\\n user.firstname = req.body.firstname;\\r\\n if (req.body.lastname)\\r\\n user.lastname = req.body.lastname;\\r\\n user.save((err, user) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, status: 'Registration Successful!' });\\r\\n });\\r\\n }\\r\\n });\\r\\n}\\r\\n\\r\\nconst login = (req, res, next) => {\\r\\n passport.authenticate('local', (err, user, info) => {\\r\\n\\r\\n if (!user) {\\r\\n res.statusCode = 401;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, status: 'Login Unsuccessful!', err: info });\\r\\n return next(err);\\r\\n }\\r\\n req.logIn(user, (err) => {\\r\\n var token = authenticate.getToken({ _id: req.user._id, role: user.role });\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, status: 'Login Successful!', token: token, });\\r\\n });\\r\\n })(req, res, next);\\r\\n}\\r\\n\\r\\nconst changePassoword = (req, res, next) => {\\r\\n var userId = req.params.id;\\r\\n var newPasswordString = req.body.password;\\r\\n Users.findById(userId).then(function (sanitizedUser) {\\r\\n if (sanitizedUser) {\\r\\n sanitizedUser.setPassword(newPasswordString, function () {\\r\\n sanitizedUser.save();\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, message: 'password reset successful' });\\r\\n });\\r\\n } else {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'This user does not exist' });\\r\\n }\\r\\n }, function (err) {\\r\\n next(err);\\r\\n });\\r\\n}\\r\\n\\r\\nconst logout = (req, res) => {\\r\\n if (req.session) {\\r\\n req.session.destroy();\\r\\n res.clearCookie('session-id');\\r\\n }\\r\\n else {\\r\\n var err = new Error('You are not logged in!');\\r\\n err.status = 403;\\r\\n }\\r\\n}\\r\\n\\r\\nexports.signupAdmin = signupAdmin;\\r\\nexports.login = login;\\r\\nexports.logout = logout;\\r\\nexports.changePassoword = changePassoword;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/df/userController_dfcc3c245d97ff3aba4c4e3eb1674b0e.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2494\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\userController.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":12954,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":12951,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"signupAdmin\",\"ranges\":[{\"startOffset\":313,\"endOffset\":1156,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":553,\"endOffset\":1152,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":926,\"endOffset\":1140,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"login\",\"ranges\":[{\"startOffset\":1173,\"endOffset\":1848,\"count\":2}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1228,\"endOffset\":1828,\"count\":2}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1512,\"endOffset\":1822,\"count\":2}],\"isBlockCoverage\":false},{\"functionName\":\"changePassoword\",\"ranges\":[{\"startOffset\":1875,\"endOffset\":2594,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"logout\",\"ranges\":[{\"startOffset\":2612,\"endOffset\":2800,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const express = require('express');\\n\\nconst cors = require('cors');\\n\\nconst app = express();\\n\\nconst util = require('util');\\n\\nconst whitelist = ['http://localhost:3000', 'http://localhost:3001', 'https://localhost:5000'];\\n\\nvar corsOptionsDelegate = (req, callback) => {\\n var corsOptions;\\n\\n if (whitelist.indexOf(req.header('Origin')) !== -1) {\\n corsOptions = {\\n origin: true\\n };\\n } else {\\n corsOptions = {\\n origin: false\\n };\\n }\\n\\n callback(null, corsOptions);\\n}; // if we want to allow all origins\\n\\n\\nexports.cors = cors(); // if we want to allow only the whitelisted origins\\n\\nexports.corsWithOptions = cors(corsOptionsDelegate);\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvcnMuanMiXSwibmFtZXMiOlsiZXhwcmVzcyIsInJlcXVpcmUiLCJjb3JzIiwiYXBwIiwidXRpbCIsIndoaXRlbGlzdCIsImNvcnNPcHRpb25zRGVsZWdhdGUiLCJyZXEiLCJjYWxsYmFjayIsImNvcnNPcHRpb25zIiwiaW5kZXhPZiIsImhlYWRlciIsIm9yaWdpbiIsImV4cG9ydHMiLCJjb3JzV2l0aE9wdGlvbnMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBdkI7O0FBQ0EsTUFBTUMsSUFBSSxHQUFHRCxPQUFPLENBQUMsTUFBRCxDQUFwQjs7QUFDQSxNQUFNRSxHQUFHLEdBQUdILE9BQU8sRUFBbkI7O0FBQ0EsTUFBTUksSUFBSSxHQUFHSCxPQUFPLENBQUMsTUFBRCxDQUFwQjs7QUFFQSxNQUFNSSxTQUFTLEdBQUcsQ0FBQyx1QkFBRCxFQUEwQix1QkFBMUIsRUFBbUQsd0JBQW5ELENBQWxCOztBQUNBLElBQUlDLG1CQUFtQixHQUFHLENBQUNDLEdBQUQsRUFBTUMsUUFBTixLQUFtQjtBQUN6QyxNQUFJQyxXQUFKOztBQUNBLE1BQUdKLFNBQVMsQ0FBQ0ssT0FBVixDQUFrQkgsR0FBRyxDQUFDSSxNQUFKLENBQVcsUUFBWCxDQUFsQixNQUE0QyxDQUFDLENBQWhELEVBQW1EO0FBQy9DRixJQUFBQSxXQUFXLEdBQUc7QUFBRUcsTUFBQUEsTUFBTSxFQUFFO0FBQVYsS0FBZDtBQUNILEdBRkQsTUFHSztBQUNESCxJQUFBQSxXQUFXLEdBQUc7QUFBRUcsTUFBQUEsTUFBTSxFQUFFO0FBQVYsS0FBZDtBQUNIOztBQUNESixFQUFBQSxRQUFRLENBQUMsSUFBRCxFQUFPQyxXQUFQLENBQVI7QUFDSCxDQVRELEMsQ0FXQTs7O0FBQ0FJLE9BQU8sQ0FBQ1gsSUFBUixHQUFlQSxJQUFJLEVBQW5CLEMsQ0FFQTs7QUFDQVcsT0FBTyxDQUFDQyxlQUFSLEdBQTBCWixJQUFJLENBQUNJLG1CQUFELENBQTlCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZXhwcmVzcyA9IHJlcXVpcmUoJ2V4cHJlc3MnKTtcclxuY29uc3QgY29ycyA9IHJlcXVpcmUoJ2NvcnMnKTtcclxuY29uc3QgYXBwID0gZXhwcmVzcygpO1xyXG5jb25zdCB1dGlsID0gcmVxdWlyZSgndXRpbCcpO1xyXG5cclxuY29uc3Qgd2hpdGVsaXN0ID0gWydodHRwOi8vbG9jYWxob3N0OjMwMDAnLCAnaHR0cDovL2xvY2FsaG9zdDozMDAxJywgJ2h0dHBzOi8vbG9jYWxob3N0OjUwMDAnXTtcclxudmFyIGNvcnNPcHRpb25zRGVsZWdhdGUgPSAocmVxLCBjYWxsYmFjaykgPT4ge1xyXG4gICAgdmFyIGNvcnNPcHRpb25zO1xyXG4gICAgaWYod2hpdGVsaXN0LmluZGV4T2YocmVxLmhlYWRlcignT3JpZ2luJykpICE9PSAtMSkge1xyXG4gICAgICAgIGNvcnNPcHRpb25zID0geyBvcmlnaW46IHRydWUgfTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGNvcnNPcHRpb25zID0geyBvcmlnaW46IGZhbHNlIH07XHJcbiAgICB9XHJcbiAgICBjYWxsYmFjayhudWxsLCBjb3JzT3B0aW9ucyk7XHJcbn07XHJcblxyXG4vLyBpZiB3ZSB3YW50IHRvIGFsbG93IGFsbCBvcmlnaW5zXHJcbmV4cG9ydHMuY29ycyA9IGNvcnMoKTtcclxuXHJcbi8vIGlmIHdlIHdhbnQgdG8gYWxsb3cgb25seSB0aGUgd2hpdGVsaXN0ZWQgb3JpZ2luc1xyXG5leHBvcnRzLmNvcnNXaXRoT3B0aW9ucyA9IGNvcnMoY29yc09wdGlvbnNEZWxlZ2F0ZSk7Il19\",\"originalCode\":\"const express = require('express');\\r\\nconst cors = require('cors');\\r\\nconst app = express();\\r\\nconst util = require('util');\\r\\n\\r\\nconst whitelist = ['http://localhost:3000', 'http://localhost:3001', 'https://localhost:5000'];\\r\\nvar corsOptionsDelegate = (req, callback) => {\\r\\n var corsOptions;\\r\\n if(whitelist.indexOf(req.header('Origin')) !== -1) {\\r\\n corsOptions = { origin: true };\\r\\n }\\r\\n else {\\r\\n corsOptions = { origin: false };\\r\\n }\\r\\n callback(null, corsOptions);\\r\\n};\\r\\n\\r\\n// if we want to allow all origins\\r\\nexports.cors = cors();\\r\\n\\r\\n// if we want to allow only the whitelisted origins\\r\\nexports.corsWithOptions = cors(corsOptionsDelegate);\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/34/cors_34beef0e65d7cfb3f2bb7a05fb9de802.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2495\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\cors.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":2982,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":2979,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"corsOptionsDelegate\",\"ranges\":[{\"startOffset\":335,\"endOffset\":573,\"count\":4}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const express = require('express');\\n\\nconst bodyParser = require('body-parser');\\n\\nconst {\\n checkSchema\\n} = require('express-validator');\\n\\nconst cors = require('./cors');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nvar validationRules = require('../middleware/validation');\\n\\nconst employeeController = require('../controllers/employeeController');\\n\\nconst employeeRouter = express.Router();\\nemployeeRouter.use(bodyParser.json()); // **********************************************************************************\\n// \\n// Employee Routes\\n// \\n// **********************************************************************************\\n\\nemployeeRouter.route('/').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.getAllEmployees).post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.addEmployee).put(cors.corsWithOptions, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('PUT operation not supported on /employees');\\n}).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.deleteAllEmployees);\\nemployeeRouter.route('/search').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.getAllEmployeesByName); // **********************************************************************************\\n// \\n// Employee Routes Specified by ID\\n// \\n// **********************************************************************************\\n\\nemployeeRouter.route('/:employeeId').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.getEmployeeDetailsById).post(cors.corsWithOptions, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('POST operation not supported on /employees/' + req.params.employeeId);\\n}).put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.updateEmployeeDetailsById).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.deleteAEmployeeById);\\nmodule.exports = employeeRouter;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImVtcGxveWVlUm91dGVyLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwiYm9keVBhcnNlciIsImNoZWNrU2NoZW1hIiwiY29ycyIsImF1dGhlbnRpY2F0ZSIsInZhbGlkYXRpb25SdWxlcyIsImVtcGxveWVlQ29udHJvbGxlciIsImVtcGxveWVlUm91dGVyIiwiUm91dGVyIiwidXNlIiwianNvbiIsInJvdXRlIiwib3B0aW9ucyIsImNvcnNXaXRoT3B0aW9ucyIsInJlcSIsInJlcyIsInNlbmRTdGF0dXMiLCJnZXQiLCJ2ZXJpZnlVc2VyIiwidmVyaWZ5QWRtaW4iLCJnZXRBbGxFbXBsb3llZXMiLCJwb3N0IiwiYWRkRW1wbG95ZWUiLCJwdXQiLCJuZXh0Iiwic3RhdHVzQ29kZSIsImVuZCIsImRlbGV0ZSIsImRlbGV0ZUFsbEVtcGxveWVlcyIsImdldEFsbEVtcGxveWVlc0J5TmFtZSIsImdldEVtcGxveWVlRGV0YWlsc0J5SWQiLCJwYXJhbXMiLCJlbXBsb3llZUlkIiwidXBkYXRlRW1wbG95ZWVEZXRhaWxzQnlJZCIsImRlbGV0ZUFFbXBsb3llZUJ5SWQiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxPQUFPLEdBQUdDLE9BQU8sQ0FBQyxTQUFELENBQXZCOztBQUNBLE1BQU1DLFVBQVUsR0FBR0QsT0FBTyxDQUFDLGFBQUQsQ0FBMUI7O0FBQ0EsTUFBTTtBQUFFRSxFQUFBQTtBQUFGLElBQWtCRixPQUFPLENBQUMsbUJBQUQsQ0FBL0I7O0FBQ0EsTUFBTUcsSUFBSSxHQUFHSCxPQUFPLENBQUMsUUFBRCxDQUFwQjs7QUFDQSxJQUFJSSxZQUFZLEdBQUdKLE9BQU8sQ0FBQyw0QkFBRCxDQUExQjs7QUFDQSxJQUFJSyxlQUFlLEdBQUdMLE9BQU8sQ0FBQywwQkFBRCxDQUE3Qjs7QUFDQSxNQUFNTSxrQkFBa0IsR0FBR04sT0FBTyxDQUFDLG1DQUFELENBQWxDOztBQUVBLE1BQU1PLGNBQWMsR0FBR1IsT0FB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cHJlc3MnKTtcclxuY29uc3QgYm9keVBhcnNlciA9IHJlcXVpcmUoJ2JvZHktcGFyc2VyJyk7XHJcbmNvbnN0IHsgY2hlY2tTY2hlbWEgfSA9IHJlcXVpcmUoJ2V4cHJlc3MtdmFsaWRhdG9yJyk7XHJcbmNvbnN0IGNvcnMgPSByZXF1aXJlKCcuL2NvcnMnKTtcclxudmFyIGF1dGhlbnRpY2F0ZSA9IHJlcXVpcmUoJy4uL21pZGRsZXdhcmUvYXV0aGVudGljYXRlJyk7XHJcbnZhciB2YWxpZGF0aW9uUnVsZXMgPSByZXF1aXJlKCcuLi9taWRkbGV3YXJlL3ZhbGlkYXRpb24nKTtcclxuY29uc3QgZW1wbG95ZWVDb250cm9sbGVyID0gcmVxdWlyZSgnLi4vY29udHJvbGxlcnMvZW1wbG95ZWVDb250cm9sbGVyJyk7XHJcblxyXG5jb25zdCBlbXBsb3llZVJvdXRlciA9IGV4cHJlc3MuUm91dGVyKCk7XHJcblxyXG5lbXBsb3llZVJvdXRlci51c2UoYm9keVBhcnNlci5qc29uKCkpO1xyXG5cclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyBcclxuLy8gICAgICAgICAgICAgIEVtcGxveWVlIFJvdXRlc1xyXG4vLyBcclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuZW1wbG95ZWVSb3V0ZXIucm91dGUoJy8nKVxyXG4gICAgLm9wdGlvbnMoY29ycy5jb3JzV2l0aE9wdGlvbnMsIChyZXEsIHJlcykgPT4geyByZXMuc2VuZFN0YXR1cygyMDApOyB9KVxyXG4gICAgLmdldChjb3JzLmNvcnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCBhdXRoZW50aWNhdGUudmVyaWZ5QWRtaW4sICBlbXBsb3llZUNvbnRyb2xsZXIuZ2V0QWxsRW1wbG95ZWVzKVxyXG4gICAgLnBvc3QoY29ycy5jb3JzV2l0aE9wdGlvbnMsYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgZW1wbG95ZWVDb250cm9sbGVyLmFkZEVtcGxveWVlKVxyXG4gICAgLnB1dChjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgcmVzLmVuZCgnUFVUIG9wZXJhdGlvbiBub3Qgc3VwcG9ydGVkIG9uIC9lbXBsb3llZXMnKTtcclxuICAgIH0pXHJcbiAgICAuZGVsZXRlKGNvcnMuY29yc1dpdGhPcHRpb25zLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeUFkbWluLCAgZW1wbG95ZWVDb250cm9sbGVyLmRlbGV0ZUFsbEVtcGxveWVlcyk7XHJcbmVtcGxveWVlUm91dGVyLnJvdXRlKCcvc2VhcmNoJylcclxuICAgIC5vcHRpb25zKGNvcnMuY29yc1dpdGhPcHRpb25zLCAocmVxLCByZXMpID0+IHsgcmVzLnNlbmRTdGF0dXMoMjAwKTsgfSlcclxuICAgIC5wb3N0KGNvcnMuY29yc1dpdGhPcHRpb25zLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeUFkbWluLCBlbXBsb3llZUNvbnRyb2xsZXIuZ2V0QWxsRW1wbG95ZWVzQnlOYW1lKTtcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuLy8gXHJcbi8vICAgICAgICAgICAgICBFbXBsb3llZSBSb3V0ZXMgU3BlY2lmaWVkIGJ5IElEXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG5lbXBsb3llZVJvdXRlci5yb3V0ZSgnLzplbXBsb3llZUlkJylcclxuICAgIC5vcHRpb25zKGNvcnMuY29yc1dpdGhPcHRpb25zLCAocmVxLCByZXMpID0+IHsgcmVzLnNlbmRTdGF0dXMoMjAwKTsgfSlcclxuICAgIC5nZXQoY29ycy5jb3JzLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeUFkbWluLCAgZW1wbG95ZWVDb250cm9sbGVyLmdldEVtcGxveWVlRGV0YWlsc0J5SWQpXHJcbiAgICAucG9zdChjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgcmVzLmVuZCgnUE9TVCBvcGVyYXRpb24gbm90IHN1cHBvcnRlZCBvbiAvZW1wbG95ZWVzLycgKyByZXEucGFyYW1zLmVtcGxveWVlSWQpO1xyXG4gICAgfSlcclxuICAgIC5wdXQoY29ycy5jb3JzV2l0aE9wdGlvbnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCBhdXRoZW50aWNhdGUudmVyaWZ5QWRtaW4sICBlbXBsb3llZUNvbnRyb2xsZXIudXBkYXRlRW1wbG95ZWVEZXRhaWxzQnlJZClcclxuICAgIC5kZWxldGUoY29ycy5jb3JzV2l0aE9wdGlvbnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCBhdXRoZW50aWNhdGUudmVyaWZ5QWRtaW4sICBlbXBsb3llZUNvbnRyb2xsZXIuZGVsZXRlQUVtcGxveWVlQnlJZCk7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IGVtcGxveWVlUm91dGVyOyJdfQ==\",\"originalCode\":\"const express = require('express');\\r\\nconst bodyParser = require('body-parser');\\r\\nconst { checkSchema } = require('express-validator');\\r\\nconst cors = require('./cors');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\nvar validationRules = require('../middleware/validation');\\r\\nconst employeeController = require('../controllers/employeeController');\\r\\n\\r\\nconst employeeRouter = express.Router();\\r\\n\\r\\nemployeeRouter.use(bodyParser.json());\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Employee Routes\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nemployeeRouter.route('/')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.getAllEmployees)\\r\\n .post(cors.corsWithOptions,authenticate.verifyUser, authenticate.verifyAdmin, employeeController.addEmployee)\\r\\n .put(cors.corsWithOptions, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('PUT operation not supported on /employees');\\r\\n })\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.deleteAllEmployees);\\r\\nemployeeRouter.route('/search')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.getAllEmployeesByName);\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Employee Routes Specified by ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nemployeeRouter.route('/:employeeId')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.getEmployeeDetailsById)\\r\\n .post(cors.corsWithOptions, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('POST operation not supported on /employees/' + req.params.employeeId);\\r\\n })\\r\\n .put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.updateEmployeeDetailsById)\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.deleteAEmployeeById);\\r\\n\\r\\nmodule.exports = employeeRouter;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/3b/employeeRouter_3bb83cd3174a28ed34e0f44c133b9b42.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2496\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\employeeRouter.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":9455,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":9452,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":802,\"endOffset\":842,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1082,\"endOffset\":1185,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1369,\"endOffset\":1409,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1828,\"endOffset\":1868,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":2006,\"endOffset\":2135,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const Employees = require('../models/users');\\n\\nconst utils = require('../utils/utils'); // **********************************************************************************\\n// \\n// Employee Operations \\n// \\n// **********************************************************************************\\n\\n/**\\r\\n * @description get details of the assistants\\r\\n * @param {*} req \\r\\n * @param {*} res \\r\\n * @param {*} next \\r\\n * @returns {array} list of employees\\r\\n */\\n\\n\\nconst getAllEmployees = (req, res, next) => {\\n var query = {\\n \\\"role\\\": \\\"moderater\\\"\\n };\\n Employees.find(query).then(employees => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n employees: employees\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst getAllEmployeesByName = (req, res, next) => {\\n var query = {\\n \\\"role\\\": \\\"moderater\\\"\\n }; // if (req.body.similarTo) {\\n // var searchBy = req.body.similarTo || {}\\n // query = { \\\"role\\\": \\\"moderater\\\", $text: { $search: searchBy } }\\n // }\\n\\n if (req.body.similarTo) {\\n var searchBy = req.body.similarTo || {};\\n query = {\\n \\\"role\\\": \\\"moderater\\\",\\n firstname: {\\n $regex: `${searchBy}`,\\n $options: \\\"i\\\"\\n }\\n };\\n }\\n\\n var sortby = req.body.sortBy || {};\\n Employees.find(query).sort(sortby).then(employees => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n employees: employees\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst addEmployee = async (req, res, next) => {\\n const randomPassword = utils.password_generator(10);\\n var employee = {\\n username: req.body.email,\\n firstname: req.body.firstname,\\n lastname: req.body.lastname,\\n email: req.body.email,\\n role: 'moderater'\\n };\\n\\n try {\\n Employees.register(new Employees(employee), randomPassword, (err, employee) => {\\n if (err) {\\n res.statusCode = 403;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: err.message\\n });\\n } else {\\n employee.save((err, employee) => {\\n if (err) {\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Error while Saving new user.'\\n });\\n }\\n\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n email: employee.email,\\n password: randomPassword\\n });\\n });\\n }\\n });\\n } catch (error) {\\n var err = new Error(\\\"Error while registering new user.\\\");\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: err.message\\n });\\n }\\n};\\n\\nconst deleteAllEmployees = (req, res, next) => {\\n Employees.remove({\\n \\\"role\\\": \\\"moderater\\\"\\n }).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json(resp);\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nexports.getAllEmployees = getAllEmployees;\\nexports.getAllEmployeesByName = getAllEmployeesByName;\\nexports.addEmployee = addEmployee;\\nexports.deleteAllEmployees = deleteAllEmployees; // **********************************************************************************\\n// \\n// Employee Operations Specified by ID\\n// \\n// **********************************************************************************\\n\\nconst getEmployeeDetailsById = (req, res, next) => {\\n Employees.findById(req.params.employeeId).then(employee => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n employee: employee\\n });\\n }, err => {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Could not find employee with given ID'\\n });\\n }).catch(err => next(err));\\n};\\n\\nconst updateEmployeeDetailsById = (req, res, next) => {\\n var employee = {\\n username: req.body.email,\\n firstname: req.body.firstname,\\n lastname: req.body.lastname,\\n email: req.body.email,\\n role: 'moderater'\\n };\\n Employees.findByIdAndUpdate(req.params.employeeId, {\\n $set: employee\\n }, {\\n new: true\\n }).then(employee => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n employee: employee\\n });\\n }, err => next(err)).catch(err => {\\n var err = new Error(\\\"Error while updating.\\\");\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: err.message\\n });\\n });\\n};\\n\\nconst deleteAEmployeeById = (req, res, next) => {\\n Employees.findByIdAndRemove(req.params.employeeId).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json(resp);\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nexports.getEmployeeDetailsById = getEmployeeDetailsById;\\nexports.updateEmployeeDetailsById = updateEmployeeDetailsById;\\nexports.deleteAEmployeeById = deleteAEmployeeById;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImVtcGxveWVlQ29udHJvbGxlci5qcyJdLCJuYW1lcyI6WyJFbXBsb3llZXMiLCJyZXF1aXJlIiwidXRpbHMiLCJnZXRBbGxFbXBsb3llZXMiLCJyZXEiLCJyZXMiLCJuZXh0IiwicXVlcnkiLCJmaW5kIiwidGhlbiIsImVtcGxveWVlcyIsInN0YXR1c0NvZGUiLCJzZXRIZWFkZXIiLCJqc29uIiwic3VjY2VzcyIsImVyciIsImNhdGNoIiwiZ2V0QWxsRW1wbG95ZWVzQnlOYW1lIiwiYm9keSIsInNpbWlsYXJUbyIsInNlYXJjaEJ5IiwiZmlyc3RuYW1lIiwiJHJlZ2V4IiwiJG9wdGlvbnMiLCJzb3J0YnkiLCJzb3J0QnkiLCJzb3J0IiwiYWRkRW1wbG95ZWUiLCJyYW5kb21QYXNzd29yZCIsInBhc3N3b3JkX2dlbmVyYXRvciIsImVtcGxveWVlIiwidXNlcm5hbWUiLCJlbWFpbCIsImxhc3RuYW1lIiwicm9sZSIsInJlZ2lzdGVyIiwibWVzc2FnZSIsInNhdmUiLCJwYXNzd29yZCIsImVycm9yIiwiRXJyb3IiLCJkZWxldGVBbGxFbXBsb3llZXMiLCJyZW1vdmUiLCJyZXNwIiwiZXhwb3J0cyIsImdldEVtcGxveWVlRGV0YWlsc0J5SWQiLCJmaW5kQnlJZCIsInBhcmFtcyIsImVtcGxveWVlSWQiLCJ1cGRhdGVFbXBsb3llZURldGFpbHNCeUlkIiwiZmluZEJ5SWRBbmRVcGRhdGUiLCIkc2V0IiwibmV3IiwiZGVsZXRlQUVtcGxveWVlQnlJZCIsImZpbmRCeUlkQW5kUmVtb3ZlIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxTQUFTLEdBQUdDLE9BQU8sQ0FBQyxpQkFBRCxDQUF6Qjs7QUFDQSxNQUFNQyxLQUFLLEdBQUdELE9BQU8sQ0FBQyxnQkFBRCxDQUFyQixDLENBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0EsTUFBTUUsZUFBZSxHQUFHLENBQUNDLEdBQUQsRUFBTUMsR0FBTixF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SSxDQUFDUyxHQUFELENBTHBCLEVBTUtDLEtBTkwsQ0FNWUQsR0FBRCxJQUFTVCxJQUFJLENBQUNTLEdBQUQsQ0FOeEI7QUFPSCxDQVJEOztBQVVBNkIsT0FBTyxDQUFDQyxzQkFBUixHQUFpQ0Esc0JBQWpDO0FBQ0FELE9BQU8sQ0FBQ0sseUJBQVIsR0FBb0NBLHlCQUFwQztBQUNBTCxPQUFPLENBQUNTLG1CQUFSLEdBQThCQSxtQkFBOUIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBFbXBsb3llZXMgPSByZXF1aXJlKCcuLi9tb2RlbHMvdXNlcnMnKTtcclxuY29uc3QgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscy91dGlscycpO1xyXG5cclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyBcclxuLy8gICAgICAgICAgICAgIEVtcGxveWVlIE9wZXJhdGlvbnMgXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG4vKipcclxuICogQGRlc2NyaXB0aW9uIGdldCBkZXRhaWxzIG9mIHRoZSBhc3Npc3RhbnRzXHJcbiAqIEBwYXJhbSB7Kn0gcmVxIFxyXG4gKiBAcGFyYW0geyp9IHJlcyBcclxuICogQHBhcmFtIHsqfSBuZXh0IFxyXG4gKiBAcmV0dXJucyB7YXJyYXl9IGxpc3Qgb2YgZW1wbG95ZWVzXHJcbiAqL1xyXG5jb25zdCBnZXRBbGxFbXBsb3llZXMgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHZhciBxdWVyeSA9IHsgXCJyb2xlXCI6IFwibW9kZXJhdGVyXCIgfTtcclxuICAgIEVtcGxveWVlcy5maW5kKHF1ZXJ5KVxyXG4gICAgICAgIC50aGVuKChlbXBsb3llZXMpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgZW1wbG95ZWVzOiBlbXBsb3llZXMgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpO1xyXG59XHJcblxyXG5jb25zdCBnZXRBbGxFbXBsb3llZXNCeU5hbWUgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHZhciBxdWVyeSA9IHsgXCJyb2xlXCI6IFwibW9kZXJhdGVyXCIgfTtcclxuICAgIC8vIGlmIChyZXEuYm9keS5zaW1pbGFyVG8pIHtcclxuICAgIC8vICAgICB2YXIgc2VhcmNoQnkgPSByZXEuYm9keS5zaW1pbGFyVG8gfHwge31cclxuICAgIC8vICAgICBxdWVyeSA9IHsgXCJyb2xlXCI6IFwibW9kZXJhdGVyXCIsICR0ZXh0OiB7ICRzZWFyY2g6IHNlYXJjaEJ5IH0gfVxyXG4gICAgLy8gfVxyXG4gICAgaWYgKHJlcS5ib2R5LnNpbWlsYXJUbykge1xyXG4gICAgICAgIHZhciBzZWFyY2hCeSA9IHJlcS5ib2R5LnNpbWlsYXJUbyB8fCB7fVxyXG4gICAgICAgIHF1ZXJ5ID0geyBcInJvbGVcIjogXCJtb2RlcmF0ZXJcIiwgZmlyc3RuYW1lOiB7ICRyZWdleDogYCR7c2VhcmNoQnl9YCwgJG9wdGlvbnM6IFwiaVwiIH0gfVxyXG4gICAgfVxyXG4gICAgdmFyIHNvcnRieSA9IHJlcS5ib2R5LnNvcnRCeSB8fCB7fTtcclxuICAgIEVtcGxveWVlcy5maW5kKHF1ZXJ5KS5zb3J0KHNvcnRieSlcclxuICAgICAgICAudGhlbigoZW1wbG95ZWVzKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIGVtcGxveWVlczogZW1wbG95ZWVzIH0pO1xyXG4gICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuY29uc3QgYWRkRW1wbG95ZWUgPSBhc3luYyAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIGNvbnN0IHJhbmRvbVBhc3N3b3JkID0gdXRpbHMucGFzc3dvcmRfZ2VuZXJhdG9yKDEwKTtcclxuICAgIHZhciBlbXBsb3llZSA9IHtcclxuICAgICAgICB1c2VybmFtZTogcmVxLmJvZHkuZW1haWwsXHJcbiAgICAgICAgZmlyc3RuYW1lOiByZXEuYm9keS5maXJzdG5hbWUsXHJcbiAgICAgICAgbGFzdG5hbWU6IHJlcS5ib2R5Lmxhc3RuYW1lLFxyXG4gICAgICAgIGVtYWlsOiByZXEuYm9keS5lbWFpbCxcclxuICAgICAgICByb2xlOiAnbW9kZXJhdGVyJ1xyXG4gICAgfVxyXG4gICAgdHJ5IHtcclxuICAgICAgICBFbXBsb3llZXMucmVnaXN0ZXIobmV3IEVtcGxveWVlcyhlbXBsb3llZSksXHJcbiAgICAgICAgICAgIHJhbmRvbVBhc3N3b3JkLCAoZXJyLCBlbXBsb3llZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNDAzO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogZXJyLm1lc3NhZ2UgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBlbXBsb3llZS5zYXZlKChlcnIsIGVtcGxveWVlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNTAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IGZhbHNlLCBtZXNzYWdlOiAnRXJyb3Igd2hpbGUgU2F2aW5nIG5ldyB1c2VyLicgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgZW1haWw6IGVtcGxveWVlLmVtYWlsLCBwYXNzd29yZDogcmFuZG9tUGFzc3dvcmQgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICB2YXIgZXJyID0gbmV3IEVycm9yKFwiRXJyb3Igd2hpbGUgcmVnaXN0ZXJpbmcgbmV3IHVzZXIuXCIpO1xyXG4gICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNTAwO1xyXG4gICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogZXJyLm1lc3NhZ2UgfSk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmNvbnN0IGRlbGV0ZUFsbEVtcGxveWVlcyA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgRW1wbG95ZWVzLnJlbW92ZSh7IFwicm9sZVwiOiBcIm1vZGVyYXRlclwiIH0pXHJcbiAgICAgICAgLnRoZW4oKHJlc3ApID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHJlc3ApO1xyXG4gICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuZXhwb3J0cy5nZXRBbGxFbXBsb3llZXMgPSBnZXRBbGxFbXBsb3llZXM7XHJcbmV4cG9ydHMuZ2V0QWxsRW1wbG95ZWVzQnlOYW1lID0gZ2V0QWxsRW1wbG95ZWVzQnlOYW1lO1xyXG5leHBvcnRzLmFkZEVtcGxveWVlID0gYWRkRW1wbG95ZWU7XHJcbmV4cG9ydHMuZGVsZXRlQWxsRW1wbG95ZWVzID0gZGVsZXRlQWxsRW1wbG95ZWVzO1xyXG5cclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyBcclxuLy8gICAgICAgICAgICAgIEVtcGxveWVlIE9wZXJhdGlvbnMgU3BlY2lmaWVkIGJ5IElEXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG5jb25zdCBnZXRFbXBsb3llZURldGFpbHNCeUlkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICBFbXBsb3llZXMuZmluZEJ5SWQocmVxLnBhcmFtcy5lbXBsb3llZUlkKVxyXG4gICAgICAgIC50aGVuKChlbXBsb3llZSkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCBlbXBsb3llZTogZW1wbG95ZWUgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwNDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogJ0NvdWxkIG5vdCBmaW5kIGVtcGxveWVlIHdpdGggZ2l2ZW4gSUQnIH0pO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IG5leHQoZXJyKSk7XHJcbn1cclxuXHJcbmNvbnN0IHVwZGF0ZUVtcGxveWVlRGV0YWlsc0J5SWQgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHZhciBlbXBsb3llZSA9IHtcclxuICAgICAgICB1c2VybmFtZTogcmVxLmJvZHkuZW1haWwsXHJcbiAgICAgICAgZmlyc3RuYW1lOiByZXEuYm9keS5maXJzdG5hbWUsXHJcbiAgICAgICAgbGFzdG5hbWU6IHJlcS5ib2R5Lmxhc3RuYW1lLFxyXG4gICAgICAgIGVtYWlsOiByZXEuYm9keS5lbWFpbCxcclxuICAgICAgICByb2xlOiAnbW9kZXJhdGVyJ1xyXG4gICAgfVxyXG4gICAgRW1wbG95ZWVzLmZpbmRCeUlkQW5kVXBkYXRlKHJlcS5wYXJhbXMuZW1wbG95ZWVJZCwge1xyXG4gICAgICAgICRzZXQ6IGVtcGxveWVlXHJcbiAgICB9LCB7IG5ldzogdHJ1ZSB9KVxyXG4gICAgICAgIC50aGVuKChlbXBsb3llZSkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCBlbXBsb3llZTogZW1wbG95ZWUgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoXCJFcnJvciB3aGlsZSB1cGRhdGluZy5cIik7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNTAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IGZhbHNlLCBtZXNzYWdlOiBlcnIubWVzc2FnZSB9KTtcclxuICAgICAgICB9KTtcclxufVxyXG5cclxuY29uc3QgZGVsZXRlQUVtcGxveWVlQnlJZCA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgRW1wbG95ZWVzLmZpbmRCeUlkQW5kUmVtb3ZlKHJlcS5wYXJhbXMuZW1wbG95ZWVJZClcclxuICAgICAgICAudGhlbigocmVzcCkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24ocmVzcCk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpO1xyXG59XHJcblxyXG5leHBvcnRzLmdldEVtcGxveWVlRGV0YWlsc0J5SWQgPSBnZXRFbXBsb3llZURldGFpbHNCeUlkO1xyXG5leHBvcnRzLnVwZGF0ZUVtcGxveWVlRGV0YWlsc0J5SWQgPSB1cGRhdGVFbXBsb3llZURldGFpbHNCeUlkO1xyXG5leHBvcnRzLmRlbGV0ZUFFbXBsb3llZUJ5SWQgPSBkZWxldGVBRW1wbG95ZWVCeUlkOyJdfQ==\",\"originalCode\":\"const Employees = require('../models/users');\\r\\nconst utils = require('../utils/utils');\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Employee Operations \\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\n/**\\r\\n * @description get details of the assistants\\r\\n * @param {*} req \\r\\n * @param {*} res \\r\\n * @param {*} next \\r\\n * @returns {array} list of employees\\r\\n */\\r\\nconst getAllEmployees = (req, res, next) => {\\r\\n var query = { \\\"role\\\": \\\"moderater\\\" };\\r\\n Employees.find(query)\\r\\n .then((employees) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, employees: employees });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst getAllEmployeesByName = (req, res, next) => {\\r\\n var query = { \\\"role\\\": \\\"moderater\\\" };\\r\\n // if (req.body.similarTo) {\\r\\n // var searchBy = req.body.similarTo || {}\\r\\n // query = { \\\"role\\\": \\\"moderater\\\", $text: { $search: searchBy } }\\r\\n // }\\r\\n if (req.body.similarTo) {\\r\\n var searchBy = req.body.similarTo || {}\\r\\n query = { \\\"role\\\": \\\"moderater\\\", firstname: { $regex: `${searchBy}`, $options: \\\"i\\\" } }\\r\\n }\\r\\n var sortby = req.body.sortBy || {};\\r\\n Employees.find(query).sort(sortby)\\r\\n .then((employees) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, employees: employees });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst addEmployee = async (req, res, next) => {\\r\\n const randomPassword = utils.password_generator(10);\\r\\n var employee = {\\r\\n username: req.body.email,\\r\\n firstname: req.body.firstname,\\r\\n lastname: req.body.lastname,\\r\\n email: req.body.email,\\r\\n role: 'moderater'\\r\\n }\\r\\n try {\\r\\n Employees.register(new Employees(employee),\\r\\n randomPassword, (err, employee) => {\\r\\n if (err) {\\r\\n res.statusCode = 403;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: err.message });\\r\\n }\\r\\n else {\\r\\n employee.save((err, employee) => {\\r\\n if (err) {\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Error while Saving new user.' });\\r\\n }\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, email: employee.email, password: randomPassword });\\r\\n });\\r\\n }\\r\\n });\\r\\n } catch (error) {\\r\\n var err = new Error(\\\"Error while registering new user.\\\");\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: err.message });\\r\\n }\\r\\n}\\r\\n\\r\\nconst deleteAllEmployees = (req, res, next) => {\\r\\n Employees.remove({ \\\"role\\\": \\\"moderater\\\" })\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json(resp);\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nexports.getAllEmployees = getAllEmployees;\\r\\nexports.getAllEmployeesByName = getAllEmployeesByName;\\r\\nexports.addEmployee = addEmployee;\\r\\nexports.deleteAllEmployees = deleteAllEmployees;\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Employee Operations Specified by ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nconst getEmployeeDetailsById = (req, res, next) => {\\r\\n Employees.findById(req.params.employeeId)\\r\\n .then((employee) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, employee: employee });\\r\\n }, (err) => {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Could not find employee with given ID' });\\r\\n })\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst updateEmployeeDetailsById = (req, res, next) => {\\r\\n var employee = {\\r\\n username: req.body.email,\\r\\n firstname: req.body.firstname,\\r\\n lastname: req.body.lastname,\\r\\n email: req.body.email,\\r\\n role: 'moderater'\\r\\n }\\r\\n Employees.findByIdAndUpdate(req.params.employeeId, {\\r\\n $set: employee\\r\\n }, { new: true })\\r\\n .then((employee) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, employee: employee });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => {\\r\\n var err = new Error(\\\"Error while updating.\\\");\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: err.message });\\r\\n });\\r\\n}\\r\\n\\r\\nconst deleteAEmployeeById = (req, res, next) => {\\r\\n Employees.findByIdAndRemove(req.params.employeeId)\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json(resp);\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nexports.getEmployeeDetailsById = getEmployeeDetailsById;\\r\\nexports.updateEmployeeDetailsById = updateEmployeeDetailsById;\\r\\nexports.deleteAEmployeeById = deleteAEmployeeById;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/6e/employeeController_6ee2f5b4e4eea073cb5625109f63cb82.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2497\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\employeeController.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":22470,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":22467,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"getAllEmployees\",\"ranges\":[{\"startOffset\":577,\"endOffset\":889,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getAllEmployeesByName\",\"ranges\":[{\"startOffset\":922,\"endOffset\":1648,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"addEmployee\",\"ranges\":[{\"startOffset\":1671,\"endOffset\":3020,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1998,\"endOffset\":2777,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":2250,\"endOffset\":2761,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"deleteAllEmployees\",\"ranges\":[{\"startOffset\":3050,\"endOffset\":3287,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getEmployeeDetailsById\",\"ranges\":[{\"startOffset\":3736,\"endOffset\":4197,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"updateEmployeeDetailsById\",\"ranges\":[{\"startOffset\":4234,\"endOffset\":4944,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"deleteAEmployeeById\",\"ranges\":[{\"startOffset\":4975,\"endOffset\":5215,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const multer = require('multer');\\n\\nconst {\\n v4: uuidv4\\n} = require('uuid');\\n\\nlet path = require('path');\\n\\nconst password_generator = len => {\\n var length = len ? len : 10;\\n var string = \\\"abcdefghijklmnopqrstuvwxyz\\\"; //to upper \\n\\n var numeric = '0123456789';\\n var punctuation = '!@#$%^&*()_+~`|}{[]\\\\:;?><,./-=';\\n var password = \\\"\\\";\\n var character = \\\"\\\";\\n var crunch = true;\\n\\n while (password.length < length) {\\n entity1 = Math.ceil(string.length * Math.random() * Math.random());\\n entity2 = Math.ceil(numeric.length * Math.random() * Math.random());\\n entity3 = Math.ceil(punctuation.length * Math.random() * Math.random());\\n hold = string.charAt(entity1);\\n hold = password.length % 2 == 0 ? hold.toUpperCase() : hold;\\n character += hold;\\n character += numeric.charAt(entity2);\\n character += punctuation.charAt(entity3);\\n password = character;\\n }\\n\\n password = password.split('').sort(function () {\\n return 0.5 - Math.random();\\n }).join('');\\n return password.substr(0, length);\\n};\\n\\nexports.password_generator = password_generator;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInV0aWxzLmpzIl0sIm5hbWVzIjpbIm11bHRlciIsInJlcXVpcmUiLCJ2NCIsInV1aWR2NCIsInBhdGgiLCJwYXNzd29yZF9nZW5lcmF0b3IiLCJsZW4iLCJsZW5ndGgiLCJzdHJpbmciLCJudW1lcmljIiwicHVuY3R1YXRpb24iLCJwYXNzd29yZCIsImNoYXJhY3RlciIsImNydW5jaCIsImVudGl0eTEiLCJNYXRoIiwiY2VpbCIsInJhbmRvbSIsImVudGl0eTIiLCJlbnRpdHkzIiwiaG9sZCIsImNoYXJBdCIsInRvVXBwZXJDYXNlIiwic3BsaXQiLCJzb3J0Iiwiam9pbiIsInN1YnN0ciIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE1BQU0sR0FBR0MsT0FBTyxDQUFDLFFBQUQsQ0FBdEI7O0FBQ0EsTUFBTTtBQUFFQyxFQUFBQSxFQUFFLEVBQUVDO0FBQU4sSUFBaUJGLE9BQU8sQ0FBQyxNQUFELENBQTlCOztBQUNBLElBQUlHLElBQUksR0FBR0gsT0FBTyxDQUFDLE1BQUQsQ0FBbEI7O0FBRUEsTUFBTUksa0JBQWtCLEdBQUlDLEdBQUQsSUFBUztBQUNoQyxNQUFJQyxNQUFNLEdBQUlELEdBQUQsR0FBU0EsR0FBVCxHQUFpQixFQUE5QjtBQUNBLE1BQUlFLE1BQU0sR0FBRyw0QkFBYixDQUZnQyxDQUVXOztBQUMzQyxNQUFJQyxPQUFPLEdBQUcsWUFBZDtBQUNBLE1BQUlDLFdBQVcsR0FBRyxnQ0FBbEI7QUFDQSxNQUFJQyxRQUFRLEdBQUcsRUFBZjtBQUNBLE1BQUlDLFNBQVMsR0FBRyxFQUFoQjtBQUNBLE1BQUlDLE1BQU0sR0FBRyxJQUFiOztBQUNBLFNBQU9GLFFBQVEsQ0FBQ0osTUFBVCxHQUFrQkEsTUFBekIsRUFBaUM7QUFDN0JPLElBQUFBLE9BQU8sR0FBR0MsSUFBSSxDQUFDQyxJQUFMLENBQVVSLE1BQU0sQ0FBQ0QsTUFBUCxHQUFnQlEsSUFBSSxDQUFDRSxNQUFMLEVBQWhCLEdBQWdDRixJQUFJLENBQUNFLE1BQUwsRUFBMUMsQ0FBVjtBQUNBQyxJQUFBQSxPQUFPLEdBQUdILElBQUksQ0FBQ0MsSUFBTCxDQUFVUCxPQUFPLENBQUNGLE1BQVIsR0FBaUJRLElBQUksQ0FBQ0UsTUFBTCxFQUFqQixHQUFpQ0YsSUFBSSxDQUFDRSxNQUFMLEVBQTNDLENBQVY7QUFDQUUsSUFBQUEsT0FBTyxHQUFHSixJQUFJLENBQUNDLElBQUwsQ0FBVU4sV0FBVyxDQUFDSCxNQUFaLEdBQXFCUSxJQUFJLENBQUNFLE1BQUwsRUFBckIsR0FBcUNGLElBQUksQ0FBQ0UsTUFBTCxFQUEvQyxDQUFWO0FBQ0FHLElBQUFBLElBQUksR0FBR1osTUFBTSxDQUFDYSxNQUFQLENBQWNQLE9BQWQsQ0FBUDtBQUNBTSxJQUFBQSxJQUFJLEdBQUlULFFBQVEsQ0FBQ0osTUFBVCxHQUFrQixDQUFsQixJQUF1QixDQUF4QixHQUE4QmEsSUFBSSxDQUFDRSxXQUFMLEVBQTlCLEdBQXFERixJQUE1RDtBQUNBUixJQUFBQSxTQUFTLElBQUlRLElBQWI7QUFDQVIsSUFBQUEsU0FBUyxJQUFJSCxPQUFPLENBQUNZLE1BQVIsQ0FBZUgsT0FBZixDQUFiO0FBQ0FOLElBQUFBLFNBQVMsSUFBSUYsV0FBVyxDQUFDVyxNQUFaLENBQW1CRixPQUFuQixDQUFiO0FBQ0FSLElBQUFBLFFBQVEsR0FBR0MsU0FBWDtBQUNIOztBQUNERCxFQUFBQSxRQUFRLEdBQUdBLFFBQVEsQ0FBQ1ksS0FBVCxDQUFlLEVBQWYsRUFBbUJDLElBQW5CLENBQXdCLFlBQVk7QUFBRSxXQUFPLE1BQU1ULElBQUksQ0FBQ0UsTUFBTCxFQUFiO0FBQTRCLEdBQWxFLEVBQW9FUSxJQUFwRSxDQUF5RSxFQUF6RSxDQUFYO0FBQ0EsU0FBT2QsUUFBUSxDQUFDZSxNQUFULENBQWdCLENBQWhCLEVBQW1CbkIsTUFBbkIsQ0FBUDtBQUNILENBckJEOztBQXVCQW9CLE9BQU8sQ0FBQ3RCLGtCQUFSLEdBQTZCQSxrQkFBN0IiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBtdWx0ZXIgPSByZXF1aXJlKCdtdWx0ZXInKTtcclxuY29uc3QgeyB2NDogdXVpZHY0IH0gPSByZXF1aXJlKCd1dWlkJyk7XHJcbmxldCBwYXRoID0gcmVxdWlyZSgncGF0aCcpO1xyXG5cclxuY29uc3QgcGFzc3dvcmRfZ2VuZXJhdG9yID0gKGxlbikgPT4ge1xyXG4gICAgdmFyIGxlbmd0aCA9IChsZW4pID8gKGxlbikgOiAoMTApO1xyXG4gICAgdmFyIHN0cmluZyA9IFwiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpcIjsgLy90byB1cHBlciBcclxuICAgIHZhciBudW1lcmljID0gJzAxMjM0NTY3ODknO1xyXG4gICAgdmFyIHB1bmN0dWF0aW9uID0gJyFAIyQlXiYqKClfK35gfH17W11cXDo7Pz48LC4vLT0nO1xyXG4gICAgdmFyIHBhc3N3b3JkID0gXCJcIjtcclxuICAgIHZhciBjaGFyYWN0ZXIgPSBcIlwiO1xyXG4gICAgdmFyIGNydW5jaCA9IHRydWU7XHJcbiAgICB3aGlsZSAocGFzc3dvcmQubGVuZ3RoIDwgbGVuZ3RoKSB7XHJcbiAgICAgICAgZW50aXR5MSA9IE1hdGguY2VpbChzdHJpbmcubGVuZ3RoICogTWF0aC5yYW5kb20oKSAqIE1hdGgucmFuZG9tKCkpO1xyXG4gICAgICAgIGVudGl0eTIgPSBNYXRoLmNlaWwobnVtZXJpYy5sZW5ndGggKiBNYXRoLnJhbmRvbSgpICogTWF0aC5yYW5kb20oKSk7XHJcbiAgICAgICAgZW50aXR5MyA9IE1hdGguY2VpbChwdW5jdHVhdGlvbi5sZW5ndGggKiBNYXRoLnJhbmRvbSgpICogTWF0aC5yYW5kb20oKSk7XHJcbiAgICAgICAgaG9sZCA9IHN0cmluZy5jaGFyQXQoZW50aXR5MSk7XHJcbiAgICAgICAgaG9sZCA9IChwYXNzd29yZC5sZW5ndGggJSAyID09IDApID8gKGhvbGQudG9VcHBlckNhc2UoKSkgOiAoaG9sZCk7XHJcbiAgICAgICAgY2hhcmFjdGVyICs9IGhvbGQ7XHJcbiAgICAgICAgY2hhcmFjdGVyICs9IG51bWVyaWMuY2hhckF0KGVudGl0eTIpO1xyXG4gICAgICAgIGNoYXJhY3RlciArPSBwdW5jdHVhdGlvbi5jaGFyQXQoZW50aXR5Myk7XHJcbiAgICAgICAgcGFzc3dvcmQgPSBjaGFyYWN0ZXI7XHJcbiAgICB9XHJcbiAgICBwYXNzd29yZCA9IHBhc3N3b3JkLnNwbGl0KCcnKS5zb3J0KGZ1bmN0aW9uICgpIHsgcmV0dXJuIDAuNSAtIE1hdGgucmFuZG9tKCkgfSkuam9pbignJyk7XHJcbiAgICByZXR1cm4gcGFzc3dvcmQuc3Vic3RyKDAsIGxlbmd0aCk7XHJcbn1cclxuXHJcbmV4cG9ydHMucGFzc3dvcmRfZ2VuZXJhdG9yID0gcGFzc3dvcmRfZ2VuZXJhdG9yOyJdfQ==\",\"originalCode\":\"const multer = require('multer');\\r\\nconst { v4: uuidv4 } = require('uuid');\\r\\nlet path = require('path');\\r\\n\\r\\nconst password_generator = (len) => {\\r\\n var length = (len) ? (len) : (10);\\r\\n var string = \\\"abcdefghijklmnopqrstuvwxyz\\\"; //to upper \\r\\n var numeric = '0123456789';\\r\\n var punctuation = '!@#$%^&*()_+~`|}{[]\\\\:;?><,./-=';\\r\\n var password = \\\"\\\";\\r\\n var character = \\\"\\\";\\r\\n var crunch = true;\\r\\n while (password.length < length) {\\r\\n entity1 = Math.ceil(string.length * Math.random() * Math.random());\\r\\n entity2 = Math.ceil(numeric.length * Math.random() * Math.random());\\r\\n entity3 = Math.ceil(punctuation.length * Math.random() * Math.random());\\r\\n hold = string.charAt(entity1);\\r\\n hold = (password.length % 2 == 0) ? (hold.toUpperCase()) : (hold);\\r\\n character += hold;\\r\\n character += numeric.charAt(entity2);\\r\\n character += punctuation.charAt(entity3);\\r\\n password = character;\\r\\n }\\r\\n password = password.split('').sort(function () { return 0.5 - Math.random() }).join('');\\r\\n return password.substr(0, length);\\r\\n}\\r\\n\\r\\nexports.password_generator = password_generator;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/12/utils_12501e91058955e05c348a4b2ab3e6a2.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2498\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\utils\\\\utils.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":5216,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":5213,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"password_generator\",\"ranges\":[{\"startOffset\":223,\"endOffset\":1107,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1008,\"endOffset\":1057,\"count\":29}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const express = require('express');\\n\\nconst bodyParser = require('body-parser');\\n\\nconst cors = require('./cors');\\n\\nconst {\\n checkSchema\\n} = require('express-validator');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nvar validationRules = require('../middleware/validation');\\n\\nconst placeController = require('../controllers/placeController');\\n\\nconst visitingPlaceRouter = express.Router();\\nvisitingPlaceRouter.use(bodyParser.json()); // **********************************************************************************\\n// Visiting Place Routes\\n// **********************************************************************************\\n\\nvisitingPlaceRouter.route('/').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, placeController.getAllVisitingPlaces).post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.addVisitingPlace).put(cors.corsWithOptions, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('PUT operation not supported on /visitingPlaces');\\n}).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.deleteAllVisitingPlaces);\\nvisitingPlaceRouter.route('/search').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).post(cors.corsWithOptions, authenticate.verifyUser, placeController.getAllVisitingPlacesByName); // **********************************************************************************\\n// \\n// Visiting Place Routes On ID\\n// \\n// **********************************************************************************\\n\\nvisitingPlaceRouter.route('/:visitingPlaceId').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, placeController.getVisitingPlaceDetailsById).post(cors.corsWithOptions, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('POST operation not supported on /visitingPlaces/' + req.params.visitingPlaceId);\\n}).put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.updateVisitingPlaceDetailsById).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.deleteAVisitingPlaceById);\\nmodule.exports = visitingPlaceRouter;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBsYWNlUm91dGVyLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwiYm9keVBhcnNlciIsImNvcnMiLCJjaGVja1NjaGVtYSIsImF1dGhlbnRpY2F0ZSIsInZhbGlkYXRpb25SdWxlcyIsInBsYWNlQ29udHJvbGxlciIsInZpc2l0aW5nUGxhY2VSb3V0ZXIiLCJSb3V0ZXIiLCJ1c2UiLCJqc29uIiwicm91dGUiLCJvcHRpb25zIiwiY29yc1dpdGhPcHRpb25zIiwicmVxIiwicmVzIiwic2VuZFN0YXR1cyIsImdldCIsInZlcmlmeVVzZXIiLCJnZXRBbGxWaXNpdGluZ1BsYWNlcyIsInBvc3QiLCJ2ZXJpZnlBZG1pbiIsImFkZFZpc2l0aW5nUGxhY2UiLCJwdXQiLCJuZXh0Iiwic3RhdHVzQ29kZSIsImVuZCIsImRlbGV0ZSIsImRlbGV0ZUFsbFZpc2l0aW5nUGxhY2VzIiwiZ2V0QWxsVmlzaXRpbmdQbGFjZXNCeU5hbWUiLCJnZXRWaXNpdGluZ1BsYWNlRGV0YWlsc0J5SWQiLCJwYXJhbXMiLCJ2aXNpdGluZ1BsYWNlSWQiLCJ1cGRhdGVWaXNpdGluZ1BsYWNlRGV0YWlsc0J5SWQiLCJkZWxldGVBVmlzaXRpbmdQbGFjZUJ5SWQiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxPQUFPLEdBQUdDLE9BQU8sQ0FBQyxTQUFELENBQXZCOztBQUNBLE1BQU1DLFVBQVUsR0FBR0QsT0FBTyxDQUFDLGFBQUQsQ0FBMUI7O0FBRUEsTUFBTUUsSUFBSSxHQUFHRixPQUFPLENBQUMsUUFBRCxDQUFwQjs7QUFDQSxNQUFNO0FBQUVHLEVBQUFBO0FBQUYsSUFBa0JILE9BQU8sQ0FBQyxtQkFBRCxDQUEvQjs7QUFDQSxJQUFJSSxZQUFZLEdBQUdKLE9BQU8sQ0FBQyw0QkFBRCxDQUExQjs7QUFDQSxJQUFJSyxlQUFlLEdBQUdMLE9BQU8sQ0FBQywwQkFBRCxDQUE3Qjs7QUFDQSxNQUFNTSxlQUFlLEdBQUdOLE9BQU8sQ0FBQyxnQ0FBRCxDQUEvQjs7QUFFQSxNQUFNTyxtQkFBbUIsR0FBR1IsT0FBTyxDQUFDUyxNQUFSLEVBQTVCO0FBRUFELG1CQUFtQixDQUFDRSxHQUFwQixDQUF3QlIsVUFBVSxDQUFDUyxJQUFYLEVBQXhCLEUsQ0FFQTtBQUVBO0FBRUE7O0FBRUFILG1CQUFtQixDQUFDSSxLQUFwQixDQUEwQixHQUExQixFQUNLQyxPQURMLENBQ2FWLElBQUksQ0FBQ1csZUFEbEIsRUFDbUMsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEtBQWM7QUFBRUEsRUFBQUEsR0FBRyxDQUFDQyxVQUFKLENBQWUsR0FBZjtBQUFzQixDQUR6RSxFQUVLQyxHQUZMLENBRVNmLElBQUksQ0FBQ0EsSUFGZCxFQUVvQkUsWUFBWSxDQUFDYyxVQUZqQyxFQUU2Q1osZUFBZSxDQUFDYSxvQkFGN0QsRUFHS0MsSUFITCxDQUdVbEIsSUFBSSxDQUFDVyxlQUhmLEVBR2dDVCxZQUFZLENBQUNjLFVBSDdDLEVBR3lEZCxZQUFZLENBQUNpQixXQUh0RSxFQUdtRmYsZUFBZSxDQUFDZ0IsZ0JBSG5HLEVBSUtDLEdBSkwsQ0FJU3JCLElBQUksQ0FBQ1csZUFKZCxFQUkrQixDQUFDQyxHQUFELEVBQU1DLEdBQU4sRUFBV1MsSUFBWCxLQUFvQjtBQUMzQ1QsRUFBQUEsR0FBRyxDQUFDVSxVQUFKLEdBQWlCLEdBQWpCO0FBQ0FWLEVBQUFBLEdBQUcsQ0FBQ1csR0FBSixDQUFRLGdEQUFSO0FBQ0gsQ0FQTCxFQVFLQyxNQVJMLENBUVl6QixJQUFJLENBQUNXLGVBUmpCLEVBUWtDVCxZQUFZLENBQUNjLFVBUi9DLEVBUTJEZCxZQUFZLENBQUNpQixXQVJ4RSxFQVFxRmYsZUFBZSxDQUFDc0IsdUJBUnJHO0FBU0FyQixtQkFBbUIsQ0FBQ0ksS0FBcEIsQ0FBMEIsU0FBMUIsRUFDS0MsT0FETCxDQUNhVixJQUFJLENBQUNXLGVBRGxCLEVBQ21DLENBQUNDLEdBQUQsRUFBTUMsR0FBTixLQUFjO0FBQUVBLEVBQUFBLEdBQUcsQ0FBQ0MsVUFBSixDQUFlLEdBQWY7QUFBc0IsQ0FEekUsRUFFS0ksSUFGTCxDQUVVbEIsSUFBSSxDQUFDVyxlQUZmLEVBRWdDVCxZQUFZLENBQUNjLFVBRjdDLEVBRXlEWixlQUFlLENBQUN1QiwwQkFGekUsRSxDQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUF0QixtQkFBbUIsQ0FBQ0ksS0FBcEIsQ0FBMEIsbUJBQTFCLEVBQ0tDLE9BREwsQ0FDYVYsSUFBSSxDQUFDVyxlQURsQixFQUNtQyxDQUFDQyxHQUFELEVBQU1DLEdBQU4sS0FBYztBQUFFQSxFQUFBQSxHQUFHLENBQUNDLFVBQUosQ0FBZSxHQUFmO0FBQXNCLENBRHpFLEVBRUtDLEdBRkwsQ0FFU2YsSUFBSSxDQUFDQSxJQUZkLEVBRW9CRSxZQUFZLENBQUNjLFVBRmpDLEVBRTZDWixlQUFlLENBQUN3QiwyQkFGN0QsRUFHS1YsSUFITCxDQUdVbEIsSUFBSSxDQUFDVyxlQUhmLEVBR2dDLENBQUNDLEdBQUQsRUFBTUMsR0FBTixFQUFXUyxJQUFYLEtBQW9CO0FBQzVDVCxFQUFBQSxHQUFHLENBQUNVLFVBQUosR0FBaUIsR0FBakI7QUFDQVYsRUFBQUEsR0FBRyxDQUFDVyxHQUFKLENBQVEscURBQXFEWixHQUFHLENBQUNpQixNQUFKLENBQVdDLGVBQXhFO0FBQ0gsQ0FOTCxFQU9LVCxHQVBMLENBT1NyQixJQUFJLENBQUNXLGVBUGQsRUFPK0JULFlBQVksQ0FBQ2MsVUFQNUMsRUFPd0RkLFlBQVksQ0FBQ2lCLFdBUHJFLEVBT2tGZixlQUFlLENBQUMyQiw4QkFQbEcsRUFRS04sTUFSTCxDQVFZekIsSUFBSSxDQUFDVyxlQVJqQixFQVFrQ1QsWUFBWSxDQUFDYyxVQVIvQyxFQVEyRGQsWUFBWSxDQUFDaUIsV0FSeEUsRUFRcUZmLGVBQWUsQ0FBQzRCLHdCQVJyRztBQVVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUI3QixtQkFBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBleHByZXNzID0gcmVxdWlyZSgnZXhwcmVzcycpO1xyXG5jb25zdCBib2R5UGFyc2VyID0gcmVxdWlyZSgnYm9keS1wYXJzZXInKTtcclxuXHJcbmNvbnN0IGNvcnMgPSByZXF1aXJlKCcuL2NvcnMnKTtcclxuY29uc3QgeyBjaGVja1NjaGVtYSB9ID0gcmVxdWlyZSgnZXhwcmVzcy12YWxpZGF0b3InKTtcclxudmFyIGF1dGhlbnRpY2F0ZSA9IHJlcXVpcmUoJy4uL21pZGRsZXdhcmUvYXV0aGVudGljYXRlJyk7XHJcbnZhciB2YWxpZGF0aW9uUnVsZXMgPSByZXF1aXJlKCcuLi9taWRkbGV3YXJlL3ZhbGlkYXRpb24nKTtcclxuY29uc3QgcGxhY2VDb250cm9sbGVyID0gcmVxdWlyZSgnLi4vY29udHJvbGxlcnMvcGxhY2VDb250cm9sbGVyJyk7XHJcblxyXG5jb25zdCB2aXNpdGluZ1BsYWNlUm91dGVyID0gZXhwcmVzcy5Sb3V0ZXIoKTtcclxuXHJcbnZpc2l0aW5nUGxhY2VSb3V0ZXIudXNlKGJvZHlQYXJzZXIuanNvbigpKTtcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbi8vICAgICAgICAgICAgICBWaXNpdGluZyBQbGFjZSBSb3V0ZXNcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbnZpc2l0aW5nUGxhY2VSb3V0ZXIucm91dGUoJy8nKVxyXG4gICAgLm9wdGlvbnMoY29ycy5jb3JzV2l0aE9wdGlvbnMsIChyZXEsIHJlcykgPT4geyByZXMuc2VuZFN0YXR1cygyMDApOyB9KVxyXG4gICAgLmdldChjb3JzLmNvcnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCBwbGFjZUNvbnRyb2xsZXIuZ2V0QWxsVmlzaXRpbmdQbGFjZXMpXHJcbiAgICAucG9zdChjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgcGxhY2VDb250cm9sbGVyLmFkZFZpc2l0aW5nUGxhY2UpXHJcbiAgICAucHV0KGNvcnMuY29yc1dpdGhPcHRpb25zLCAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwMztcclxuICAgICAgICByZXMuZW5kKCdQVVQgb3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQgb24gL3Zpc2l0aW5nUGxhY2VzJyk7XHJcbiAgICB9KVxyXG4gICAgLmRlbGV0ZShjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgcGxhY2VDb250cm9sbGVyLmRlbGV0ZUFsbFZpc2l0aW5nUGxhY2VzKTtcclxudmlzaXRpbmdQbGFjZVJvdXRlci5yb3V0ZSgnL3NlYXJjaCcpXHJcbiAgICAub3B0aW9ucyhjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcbiAgICAucG9zdChjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIHBsYWNlQ29udHJvbGxlci5nZXRBbGxWaXNpdGluZ1BsYWNlc0J5TmFtZSk7XHJcblxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbi8vIFxyXG4vLyAgICAgICAgICAgICAgVmlzaXRpbmcgUGxhY2UgUm91dGVzIE9uIElEXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG52aXNpdGluZ1BsYWNlUm91dGVyLnJvdXRlKCcvOnZpc2l0aW5nUGxhY2VJZCcpXHJcbiAgICAub3B0aW9ucyhjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcbiAgICAuZ2V0KGNvcnMuY29ycywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIHBsYWNlQ29udHJvbGxlci5nZXRWaXNpdGluZ1BsYWNlRGV0YWlsc0J5SWQpXHJcbiAgICAucG9zdChjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgcmVzLmVuZCgnUE9TVCBvcGVyYXRpb24gbm90IHN1cHBvcnRlZCBvbiAvdmlzaXRpbmdQbGFjZXMvJyArIHJlcS5wYXJhbXMudmlzaXRpbmdQbGFjZUlkKTtcclxuICAgIH0pXHJcbiAgICAucHV0KGNvcnMuY29yc1dpdGhPcHRpb25zLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeUFkbWluLCBwbGFjZUNvbnRyb2xsZXIudXBkYXRlVmlzaXRpbmdQbGFjZURldGFpbHNCeUlkKVxyXG4gICAgLmRlbGV0ZShjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgcGxhY2VDb250cm9sbGVyLmRlbGV0ZUFWaXNpdGluZ1BsYWNlQnlJZCk7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IHZpc2l0aW5nUGxhY2VSb3V0ZXI7XHJcbiJdfQ==\",\"originalCode\":\"const express = require('express');\\r\\nconst bodyParser = require('body-parser');\\r\\n\\r\\nconst cors = require('./cors');\\r\\nconst { checkSchema } = require('express-validator');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\nvar validationRules = require('../middleware/validation');\\r\\nconst placeController = require('../controllers/placeController');\\r\\n\\r\\nconst visitingPlaceRouter = express.Router();\\r\\n\\r\\nvisitingPlaceRouter.use(bodyParser.json());\\r\\n\\r\\n// **********************************************************************************\\r\\n\\r\\n// Visiting Place Routes\\r\\n\\r\\n// **********************************************************************************\\r\\n\\r\\nvisitingPlaceRouter.route('/')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, placeController.getAllVisitingPlaces)\\r\\n .post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.addVisitingPlace)\\r\\n .put(cors.corsWithOptions, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('PUT operation not supported on /visitingPlaces');\\r\\n })\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.deleteAllVisitingPlaces);\\r\\nvisitingPlaceRouter.route('/search')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .post(cors.corsWithOptions, authenticate.verifyUser, placeController.getAllVisitingPlacesByName);\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Visiting Place Routes On ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nvisitingPlaceRouter.route('/:visitingPlaceId')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, placeController.getVisitingPlaceDetailsById)\\r\\n .post(cors.corsWithOptions, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('POST operation not supported on /visitingPlaces/' + req.params.visitingPlaceId);\\r\\n })\\r\\n .put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.updateVisitingPlaceDetailsById)\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.deleteAVisitingPlaceById);\\r\\n\\r\\nmodule.exports = visitingPlaceRouter;\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/9d/placeRouter_9d9aca2c41f2c1b6283bdacdd67537b2.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2539\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\placeRouter.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":9353,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":9350,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":809,\"endOffset\":849,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1067,\"endOffset\":1175,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1366,\"endOffset\":1406,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1807,\"endOffset\":1847,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1961,\"endOffset\":2100,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const VisitingPlaces = require('../models/visitingPlaces'); // **********************************************************************************\\n// \\n// Visiting Place Operations \\n// \\n// **********************************************************************************\\n\\n\\nconst getAllVisitingPlaces = (req, res, next) => {\\n var query = {};\\n VisitingPlaces.find(query, 'name description distance location timeToReach image travellingMethods').then(visitingPlaces => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n visitingPlaces: visitingPlaces\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst getAllVisitingPlacesByName = (req, res, next) => {\\n var query = {};\\n\\n if (req.body.similarTo) {\\n query = {\\n name: {\\n $regex: `${req.body.similarTo}`,\\n $options: \\\"i\\\"\\n }\\n };\\n }\\n\\n VisitingPlaces.find(query, 'name description distance location timeToReach image travellingMethods').then(visitingPlaces => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n visitingPlaces: visitingPlaces\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst addVisitingPlace = (req, res, next) => {\\n var imagesArray = []; // files = req.files;\\n // files.forEach(file => {\\n // imagesArray.push(file.filename);\\n // });\\n\\n var place = {\\n name: req.body.name,\\n description: req.body.description,\\n location: {\\n coordinates: req.body.location.coordinates\\n },\\n distance: req.body.distance,\\n timeToReach: req.body.timeToReach,\\n images: imagesArray,\\n travellingMethods: req.body.methods\\n };\\n VisitingPlaces.create(place).then(visitingPlace => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n visitingPlace: visitingPlace\\n });\\n }, err => {\\n res.statusCode = 403;\\n res.setHeader('Content-Type', 'application/json');\\n const msg = err.driver ? \\\"Duplicate Key\\\" : err._message;\\n res.json({\\n success: false,\\n message: msg\\n });\\n }).catch(err => next(err));\\n};\\n\\nconst deleteAllVisitingPlaces = (req, res, next) => {\\n VisitingPlaces.remove({}).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json(resp);\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nexports.getAllVisitingPlaces = getAllVisitingPlaces;\\nexports.getAllVisitingPlacesByName = getAllVisitingPlacesByName;\\nexports.addVisitingPlace = addVisitingPlace;\\nexports.deleteAllVisitingPlaces = deleteAllVisitingPlaces; // **********************************************************************************\\n// \\n// Visiting Place Operations Specified by ID\\n// \\n// **********************************************************************************\\n\\nconst getVisitingPlaceDetailsById = (req, res, next) => {\\n VisitingPlaces.findById(req.params.visitingPlaceId).then(visitingPlace => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n visitingPlace: visitingPlace\\n });\\n }, err => {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: \\\"Could not find the place\\\"\\n });\\n }).catch(err => next(err));\\n};\\n\\nconst updateVisitingPlaceDetailsById = (req, res, next) => {\\n VisitingPlaces.findByIdAndUpdate(req.params.visitingPlaceId, {\\n $set: req.body\\n }, {\\n new: true\\n }).then(visitingPlace => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n visitingPlace: visitingPlace\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst deleteAVisitingPlaceById = (req, res, next) => {\\n VisitingPlaces.findByIdAndRemove(req.params.visitingPlaceId).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n response: resp\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nexports.getVisitingPlaceDetailsById = getVisitingPlaceDetailsById;\\nexports.updateVisitingPlaceDetailsById = updateVisitingPlaceDetailsById;\\nexports.deleteAVisitingPlaceById = deleteAVisitingPlaceById;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBsYWNlQ29udHJvbGxlci5qcyJdLCJuYW1lcyI6WyJWaXNpdGluZ1BsYWNlcyIsInJlcXVpcmUiLCJnZXRBbGxWaXNpdGluZ1BsYWNlcyIsInJlcSIsInJlcyIsIm5leHQiLCJxdWVyeSIsImZpbmQiLCJ0aGVuIiwidmlzaXRpbmdQbGFjZXMiLCJzdGF0dXNDb2RlIiwic2V0SGVhZGVyIiwianNvbiIsInN1Y2Nlc3MiLCJlcnIiLCJjYXRjaCIsImdldEFsbFZpc2l0aW5nUGxhY2VzQnlOYW1lIiwiYm9keSIsInNpbWlsYXJUbyIsIm5hbWUiLCIkcmVnZXgiLCIkb3B0aW9ucyIsImFkZFZpc2l0aW5nUGxhY2UiLCJpbWFnZXNBcnJheSIsInBsYWNlIiwiZGVzY3JpcHRpb24iLCJsb2NhdGlvbiIsImNvb3JkaW5hdGVzIiwiZGlzdGFuY2UiLCJ0aW1lVG9SZWFjaCIsImltYWdlcyIsInRyYXZlbGxpbmdNZXRob2RzIiwibWV0aG9kcyIsImNyZWF0ZSIsInZpc2l0aW5nUGxhY2UiLCJtc2ciLCJkcml2ZXIiLCJfbWVzc2FnZSIsIm1lc3NhZ2UiLCJkZWxldGVBbGxWaXNpdGluZ1BsYWNlcyIsInJlbW92ZSIsInJlc3AiLCJleHBvcnRzIiwiZ2V0VmlzaXRpbmdQbGFjZURldGFpbHNCeUlkIiwiZmluZEJ5SWQiLCJwYXJhbXMiLCJ2aXNpdGluZ1BsYWNlSWQiLCJ1cGRhdGVWaXNpdGluZ1BsYWNlRGV0YWlsc0J5SWQiLCJmaW5kQnlJZEFuZFVwZGF0ZSIsIiRzZXQiLCJuZXciLCJkZWxldGVBVmlzaXRpbmdQbGFjZUJ5SWQiLCJmaW5kQnlJZEFuZFJlbW92ZSIsInJlc3BvbnNlIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxjQUFjLEdBQUdDLE9BQU8sQ0FBQywwQkFBRCxDQUE5QixDLENBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUEsTUFBTUMsb0JBQW9CLEdBQUcsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDN0MsTUFB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QztBQUNBTCxPQUFPLENBQUNTLHdCQUFSLEdBQW1DQSx3QkFBbkMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBWaXNpdGluZ1BsYWNlcyA9IHJlcXVpcmUoJy4uL21vZGVscy92aXNpdGluZ1BsYWNlcycpO1xyXG5cclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyBcclxuLy8gICAgICAgICAgICAgIFZpc2l0aW5nIFBsYWNlIE9wZXJhdGlvbnMgXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG5jb25zdCBnZXRBbGxWaXNpdGluZ1BsYWNlcyA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgdmFyIHF1ZXJ5ID0ge307XHJcbiAgICBWaXNpdGluZ1BsYWNlcy5maW5kKHF1ZXJ5LCAnbmFtZSBkZXNjcmlwdGlvbiBkaXN0YW5jZSBsb2NhdGlvbiB0aW1lVG9SZWFjaCBpbWFnZSB0cmF2ZWxsaW5nTWV0aG9kcycpXHJcbiAgICAgICAgLnRoZW4oKHZpc2l0aW5nUGxhY2VzKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHZpc2l0aW5nUGxhY2VzOiB2aXNpdGluZ1BsYWNlcyB9KTtcclxuICAgICAgICB9LCAoZXJyKSA9PiBuZXh0KGVycikpXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IG5leHQoZXJyKSk7XHJcbn1cclxuXHJcbmNvbnN0IGdldEFsbFZpc2l0aW5nUGxhY2VzQnlOYW1lID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICB2YXIgcXVlcnkgPSB7fTtcclxuICAgIGlmIChyZXEuYm9keS5zaW1pbGFyVG8pIHtcclxuICAgICAgICBxdWVyeSA9IHsgbmFtZTogeyAkcmVnZXg6IGAke3JlcS5ib2R5LnNpbWlsYXJUb31gLCAkb3B0aW9uczogXCJpXCIgfSB9XHJcbiAgICB9XHJcbiAgICBWaXNpdGluZ1BsYWNlcy5maW5kKHF1ZXJ5LCAnbmFtZSBkZXNjcmlwdGlvbiBkaXN0YW5jZSBsb2NhdGlvbiB0aW1lVG9SZWFjaCBpbWFnZSB0cmF2ZWxsaW5nTWV0aG9kcycpXHJcbiAgICAgICAgLnRoZW4oKHZpc2l0aW5nUGxhY2VzKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHZpc2l0aW5nUGxhY2VzOiB2aXNpdGluZ1BsYWNlcyB9KTtcclxuICAgICAgICB9LCAoZXJyKSA9PiBuZXh0KGVycikpXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IG5leHQoZXJyKSk7XHJcbn1cclxuXHJcbmNvbnN0IGFkZFZpc2l0aW5nUGxhY2UgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHZhciBpbWFnZXNBcnJheSA9IFtdO1xyXG4gICAgLy8gZmlsZXMgPSByZXEuZmlsZXM7XHJcbiAgICAvLyBmaWxlcy5mb3JFYWNoKGZpbGUgPT4ge1xyXG4gICAgLy8gICAgIGltYWdlc0FycmF5LnB1c2goZmlsZS5maWxlbmFtZSk7XHJcbiAgICAvLyB9KTtcclxuICAgIHZhciBwbGFjZSA9XHJcbiAgICB7XHJcbiAgICAgICAgbmFtZTogcmVxLmJvZHkubmFtZSxcclxuICAgICAgICBkZXNjcmlwdGlvbjogcmVxLmJvZHkuZGVzY3JpcHRpb24sXHJcbiAgICAgICAgbG9jYXRpb246IHtcclxuICAgICAgICAgICAgY29vcmRpbmF0ZXM6IHJlcS5ib2R5LmxvY2F0aW9uLmNvb3JkaW5hdGVzXHJcbiAgICAgICAgfSxcclxuICAgICAgICBkaXN0YW5jZTogcmVxLmJvZHkuZGlzdGFuY2UsXHJcbiAgICAgICAgdGltZVRvUmVhY2g6IHJlcS5ib2R5LnRpbWVUb1JlYWNoLFxyXG4gICAgICAgIGltYWdlczogaW1hZ2VzQXJyYXksXHJcbiAgICAgICAgdHJhdmVsbGluZ01ldGhvZHM6IHJlcS5ib2R5Lm1ldGhvZHNcclxuICAgIH1cclxuICAgIFZpc2l0aW5nUGxhY2VzLmNyZWF0ZShwbGFjZSlcclxuICAgICAgICAudGhlbigodmlzaXRpbmdQbGFjZSkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCB2aXNpdGluZ1BsYWNlOiB2aXNpdGluZ1BsYWNlIH0pO1xyXG4gICAgICAgIH0sIChlcnIpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIGNvbnN0IG1zZyA9IGVyci5kcml2ZXIgPyBcIkR1cGxpY2F0ZSBLZXlcIiA6IGVyci5fbWVzc2FnZTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogbXNnIH0pO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IG5leHQoZXJyKSk7XHJcbn1cclxuXHJcbmNvbnN0IGRlbGV0ZUFsbFZpc2l0aW5nUGxhY2VzID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICBWaXNpdGluZ1BsYWNlcy5yZW1vdmUoe30pXHJcbiAgICAgICAgLnRoZW4oKHJlc3ApID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHJlc3ApO1xyXG4gICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuZXhwb3J0cy5nZXRBbGxWaXNpdGluZ1BsYWNlcyA9IGdldEFsbFZpc2l0aW5nUGxhY2VzO1xyXG5leHBvcnRzLmdldEFsbFZpc2l0aW5nUGxhY2VzQnlOYW1lID0gZ2V0QWxsVmlzaXRpbmdQbGFjZXNCeU5hbWU7XHJcbmV4cG9ydHMuYWRkVmlzaXRpbmdQbGFjZSA9IGFkZFZpc2l0aW5nUGxhY2U7XHJcbmV4cG9ydHMuZGVsZXRlQWxsVmlzaXRpbmdQbGFjZXMgPSBkZWxldGVBbGxWaXNpdGluZ1BsYWNlcztcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuLy8gXHJcbi8vICAgICAgICAgICAgICBWaXNpdGluZyBQbGFjZSBPcGVyYXRpb25zIFNwZWNpZmllZCBieSBJRFxyXG4vLyBcclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuY29uc3QgZ2V0VmlzaXRpbmdQbGFjZURldGFpbHNCeUlkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICBWaXNpdGluZ1BsYWNlcy5maW5kQnlJZChyZXEucGFyYW1zLnZpc2l0aW5nUGxhY2VJZClcclxuICAgICAgICAudGhlbigodmlzaXRpbmdQbGFjZSkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCB2aXNpdGluZ1BsYWNlOiB2aXNpdGluZ1BsYWNlIH0pO1xyXG4gICAgICAgIH0sIChlcnIpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDQ7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogZmFsc2UsIG1lc3NhZ2U6IFwiQ291bGQgbm90IGZpbmQgdGhlIHBsYWNlXCIgfSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuY29uc3QgdXBkYXRlVmlzaXRpbmdQbGFjZURldGFpbHNCeUlkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICBWaXNpdGluZ1BsYWNlcy5maW5kQnlJZEFuZFVwZGF0ZShyZXEucGFyYW1zLnZpc2l0aW5nUGxhY2VJZCwge1xyXG4gICAgICAgICRzZXQ6IHJlcS5ib2R5XHJcbiAgICB9LCB7IG5ldzogdHJ1ZSB9KVxyXG4gICAgICAgIC50aGVuKCh2aXNpdGluZ1BsYWNlKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHZpc2l0aW5nUGxhY2U6IHZpc2l0aW5nUGxhY2UgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpO1xyXG59XHJcblxyXG5jb25zdCBkZWxldGVBVmlzaXRpbmdQbGFjZUJ5SWQgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIFZpc2l0aW5nUGxhY2VzLmZpbmRCeUlkQW5kUmVtb3ZlKHJlcS5wYXJhbXMudmlzaXRpbmdQbGFjZUlkKVxyXG4gICAgICAgIC50aGVuKChyZXNwKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHJlc3BvbnNlOiByZXNwIH0pO1xyXG4gICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuZXhwb3J0cy5nZXRWaXNpdGluZ1BsYWNlRGV0YWlsc0J5SWQgPSBnZXRWaXNpdGluZ1BsYWNlRGV0YWlsc0J5SWQ7XHJcbmV4cG9ydHMudXBkYXRlVmlzaXRpbmdQbGFjZURldGFpbHNCeUlkID0gdXBkYXRlVmlzaXRpbmdQbGFjZURldGFpbHNCeUlkO1xyXG5leHBvcnRzLmRlbGV0ZUFWaXNpdGluZ1BsYWNlQnlJZCA9IGRlbGV0ZUFWaXNpdGluZ1BsYWNlQnlJZDsiXX0=\",\"originalCode\":\"const VisitingPlaces = require('../models/visitingPlaces');\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Visiting Place Operations \\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nconst getAllVisitingPlaces = (req, res, next) => {\\r\\n var query = {};\\r\\n VisitingPlaces.find(query, 'name description distance location timeToReach image travellingMethods')\\r\\n .then((visitingPlaces) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, visitingPlaces: visitingPlaces });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst getAllVisitingPlacesByName = (req, res, next) => {\\r\\n var query = {};\\r\\n if (req.body.similarTo) {\\r\\n query = { name: { $regex: `${req.body.similarTo}`, $options: \\\"i\\\" } }\\r\\n }\\r\\n VisitingPlaces.find(query, 'name description distance location timeToReach image travellingMethods')\\r\\n .then((visitingPlaces) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, visitingPlaces: visitingPlaces });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst addVisitingPlace = (req, res, next) => {\\r\\n var imagesArray = [];\\r\\n // files = req.files;\\r\\n // files.forEach(file => {\\r\\n // imagesArray.push(file.filename);\\r\\n // });\\r\\n var place =\\r\\n {\\r\\n name: req.body.name,\\r\\n description: req.body.description,\\r\\n location: {\\r\\n coordinates: req.body.location.coordinates\\r\\n },\\r\\n distance: req.body.distance,\\r\\n timeToReach: req.body.timeToReach,\\r\\n images: imagesArray,\\r\\n travellingMethods: req.body.methods\\r\\n }\\r\\n VisitingPlaces.create(place)\\r\\n .then((visitingPlace) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, visitingPlace: visitingPlace });\\r\\n }, (err) => {\\r\\n res.statusCode = 403;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n const msg = err.driver ? \\\"Duplicate Key\\\" : err._message;\\r\\n res.json({ success: false, message: msg });\\r\\n })\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst deleteAllVisitingPlaces = (req, res, next) => {\\r\\n VisitingPlaces.remove({})\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json(resp);\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nexports.getAllVisitingPlaces = getAllVisitingPlaces;\\r\\nexports.getAllVisitingPlacesByName = getAllVisitingPlacesByName;\\r\\nexports.addVisitingPlace = addVisitingPlace;\\r\\nexports.deleteAllVisitingPlaces = deleteAllVisitingPlaces;\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Visiting Place Operations Specified by ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nconst getVisitingPlaceDetailsById = (req, res, next) => {\\r\\n VisitingPlaces.findById(req.params.visitingPlaceId)\\r\\n .then((visitingPlace) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, visitingPlace: visitingPlace });\\r\\n }, (err) => {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: \\\"Could not find the place\\\" });\\r\\n })\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst updateVisitingPlaceDetailsById = (req, res, next) => {\\r\\n VisitingPlaces.findByIdAndUpdate(req.params.visitingPlaceId, {\\r\\n $set: req.body\\r\\n }, { new: true })\\r\\n .then((visitingPlace) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, visitingPlace: visitingPlace });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst deleteAVisitingPlaceById = (req, res, next) => {\\r\\n VisitingPlaces.findByIdAndRemove(req.params.visitingPlaceId)\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, response: resp });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nexports.getVisitingPlaceDetailsById = getVisitingPlaceDetailsById;\\r\\nexports.updateVisitingPlaceDetailsById = updateVisitingPlaceDetailsById;\\r\\nexports.deleteAVisitingPlaceById = deleteAVisitingPlaceById;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/ee/placeController_ee3a20e34d4d356553af723b6f7f6a6e.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2540\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\placeController.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":18578,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":18575,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"getAllVisitingPlaces\",\"ranges\":[{\"startOffset\":403,\"endOffset\":782,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getAllVisitingPlacesByName\",\"ranges\":[{\"startOffset\":820,\"endOffset\":1339,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"addVisitingPlace\",\"ranges\":[{\"startOffset\":1367,\"endOffset\":2276,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"deleteAllVisitingPlaces\",\"ranges\":[{\"startOffset\":2311,\"endOffset\":2526,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getVisitingPlaceDetailsById\",\"ranges\":[{\"startOffset\":3026,\"endOffset\":3499,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"updateVisitingPlaceDetailsById\",\"ranges\":[{\"startOffset\":3541,\"endOffset\":3906,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"deleteAVisitingPlaceById\",\"ranges\":[{\"startOffset\":3942,\"endOffset\":4237,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const express = require('express');\\n\\nconst bodyParser = require('body-parser');\\n\\nconst cors = require('./cors');\\n\\nconst {\\n checkSchema\\n} = require('express-validator');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nvar validationRules = require('../middleware/validation');\\n\\nconst scheduleController = require('../controllers/scheduleController');\\n\\nconst scheduleRouter = express.Router();\\nscheduleRouter.use(bodyParser.json()); // **********************************************************************************\\n// \\n// Schedule Routes\\n// \\n// **********************************************************************************\\n\\nscheduleRouter.route('/').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, scheduleController.getAllSchedules).post(cors.corsWithOptions, authenticate.verifyUser, scheduleController.addSchedule).put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('PUT operation not supported on /schedules');\\n}).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, scheduleController.deleteAllSchedules); // **********************************************************************************\\n// \\n// Schedule Routes On ID\\n// \\n// **********************************************************************************\\n\\nscheduleRouter.route('/:scheduleId').options(cors.corsWithOptions, authenticate.verifyUser, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, scheduleController.getScheduleDetailsById).post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('POST operation not supported on /schedules/' + req.params.scheduleId);\\n}).put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, scheduleController.updateScheduleById).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, scheduleController.deleteScheduleById);\\nscheduleRouter.route('/user/:userId').options(cors.corsWithOptions, authenticate.verifyUser, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, scheduleController.getAllSchedulesForAUser);\\nmodule.exports = scheduleRouter;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNjaGVkdWxlUm91dGVyLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwiYm9keVBhcnNlciIsImNvcnMiLCJjaGVja1NjaGVtYSIsImF1dGhlbnRpY2F0ZSIsInZhbGlkYXRpb25SdWxlcyIsInNjaGVkdWxlQ29udHJvbGxlciIsInNjaGVkdWxlUm91dGVyIiwiUm91dGVyIiwidXNlIiwianNvbiIsInJvdXRlIiwib3B0aW9ucyIsImNvcnNXaXRoT3B0aW9ucyIsInJlcSIsInJlcyIsInNlbmRTdGF0dXMiLCJnZXQiLCJ2ZXJpZnlVc2VyIiwiZ2V0QWxsU2NoZWR1bGVzIiwicG9zdCIsImFkZFNjaGVkdWxlIiwicHV0IiwidmVyaWZ5TW9kZXJhdGVyIiwibmV4dCIsInN0YXR1c0NvZGUiLCJlbmQiLCJkZWxldGUiLCJ2ZXJpZnlBZG1pbiIsImRlbGV0ZUFsbFNjaGVkdWxlcyIsImdldFNjaGVkdWxlRGV0YWlsc0J5SWQiLCJwYXJhbXMiLCJzY2hlZHVsZUlkIiwidXBkYXRlU2NoZWR1bGVCeUlkIiwiZGVsZXRlU2NoZWR1bGVCeUlkIiwiZ2V0QWxsU2NoZWR1bGVzRm9yQVVzZXIiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxPQUFPLEdBQUdDLE9BQU8sQ0FBQyxTQUFELENBQXZCOztBQUNBLE1BQU1DLFVBQVUsR0FBR0QsT0FBTyxDQUFDLGFBQUQsQ0FBMUI7O0FBRUEsTUFBTUUsSUFBSSxHQUFHRixPQUFPLENBQUMsUUFBRCxDQUFwQjs7QUFDQSxNQUFNO0FBQUVHLEVBQUFBO0FBQUYsSUFBa0JILE9BQU8sQ0FBQyxtQkFBRCxDQUEvQjs7QUFDQSxJQUFJSSxZQUFZLEdBQUdKLE9BQU8sQ0FBQyw0QkFBRCxDQUExQjs7QUFDQSxJQUFJSyxlQUFlLEdBQUdMLE9BQU8sQ0FBQywwQkFBRCxDQUE3Qjs7QUFDQSxNQUFNTSxrQkFBa0IsR0FBR04sT0FBTyxDQUFDLG1DQUFELENBQWxDOztBQUVBLE1BQU1PLGNBQWMsR0FBR1IsT0FBTyxDQUFDUyxNQUFSLEVBQXZCO0FBRUFELGNBQWMsQ0FBQ0UsR0FBZixDQUFtQlIsVUFBVSxDQUFDUyxJQUFYLEVBQW5CLEUsQ0FDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBSCxjQUFjLENBQUNJLEtBQWYsQ0FBcUIsR0FBckIsRUFDS0MsT0FETCxDQUNhVixJQUFJLENBQUNXLGVBRGxCLEVBQ21DLENBQUNDLEdBQUQsRUFBTUMsR0FBTixLQUFjO0FBQUVBLEVBQUFBLEdBQUcsQ0FBQ0MsVUFBSixDQUFlLEdBQWY7QUFBc0IsQ0FEekUsRUFFS0MsR0FGTCxDQUVTZixJQUFJLENBQUNBLElBRmQsRUFFb0JFLFlBQVksQ0FBQ2MsVUFGakMsRUFFOENaLGtCQUFrQixDQUFDYSxlQUZqRSxFQUdLQyxJQUhMLENBR1VsQixJQUFJLENBQUNXLGVBSGYsRUFHK0JULFlBQVksQ0FBQ2MsVUFINUMsRUFHeURaLGtCQUFrQixDQUFDZSxXQUg1RSxFQUlLQyxHQUpMLENBSVNwQixJQUFJLENBQUNXLGVBSmQsRUFJK0JULFlBQVksQ0FBQ2MsVUFKNUMsRUFJd0RkLFlBQVksQ0FBQ21CLGVBSnJFLEVBSXNGLENBQUNULEdBQUQsRUFBTUMsR0FBTixFQUFXUyxJQUFYLEtBQW9CO0FBQ2xHVCxFQUFBQSxHQUFHLENBQUNVLFVBQUosR0FBaUIsR0FBakI7QUFDQVYsRUFBQUEsR0FBRyxDQUFDVyxHQUFKLENBQVEsMkNBQVI7QUFDSCxDQVBMLEVBUUtDLE1BUkwsQ0FRWXpCLElBQUksQ0FBQ1csZUFSakIsRUFRa0NULFlBQVksQ0FBQ2MsVUFSL0MsRUFRMkRkLFlBQVksQ0FBQ3dCLFdBUnhFLEVBUXFGdEIsa0JBQWtCLENBQUN1QixrQkFSeEcsRSxDQVVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUF0QixjQUFjLENBQUNJLEtBQWYsQ0FBcUIsY0FBckIsRUFDS0MsT0FETCxDQUNhVixJQUFJLENBQUNXLGVBRGxCLEVBQ21DVCxZQUFZLENBQUNjLFVBRGhELEVBQzRELENBQUNKLEdBQUQsRUFBTUMsR0FBTixLQUFjO0FBQUVBLEVBQUFBLEdBQUcsQ0FBQ0MsVUFBSixDQUFlLEdBQWY7QUFBc0IsQ0FEbEcsRUFFS0MsR0FGTCxDQUVTZixJQUFJLENBQUNBLElBRmQsRUFFb0JFLFlBQVksQ0FBQ2MsVUFGakMsRUFFNkNaLGtCQUFrQixDQUFDd0Isc0JBRmhFLEVBR0tWLElBSEwsQ0FHVWxCLElBQUksQ0FBQ1csZUFIZixFQUdnQ1QsWUFBWSxDQUFDYyxVQUg3QyxFQUd5RGQsWUFBWSxDQUFDd0IsV0FIdEUsRUFHbUYsQ0FBQ2QsR0FBRCxFQUFNQyxHQUFOLEVBQVdTLElBQVgsS0FBb0I7QUFDL0ZULEVBQUFBLEdBQUcsQ0FBQ1UsVUFBSixHQUFpQixHQUFqQjtBQUNBVixFQUFBQSxHQUFHLENBQUNXLEdBQUosQ0FBUSxnREFBZ0RaLEdBQUcsQ0FBQ2lCLE1BQUosQ0FBV0MsVUFBbkU7QUFDSCxDQU5MLEVBT0tWLEdBUEwsQ0FPU3BCLElBQUksQ0FBQ1csZUFQZCxFQU8rQlQsWUFBWSxDQUFDYyxVQVA1QyxFQU93RGQsWUFBWSxDQUFDbUIsZUFQckUsRUFPc0ZqQixrQkFBa0IsQ0FBQzJCLGtCQVB6RyxFQVFLTixNQVJMLENBUVl6QixJQUFJLENBQUNXLGVBUmpCLEVBUWtDVCxZQUFZLENBQUNjLFVBUi9DLEVBUTJEZCxZQUFZLENBQUN3QixXQVJ4RSxFQVFxRnRCLGtCQUFrQixDQUFDNEIsa0JBUnhHO0FBVUEzQixjQUFjLENBQUNJLEtBQWYsQ0FBcUIsZUFBckIsRUFDS0MsT0FETCxDQUNhVixJQUFJLENBQUNXLGVBRGxCLEVBQ21DVCxZQUFZLENBQUNjLFVBRGhELEVBQzRELENBQUNKLEdBQUQsRUFBTUMsR0FBTixLQUFjO0FBQUVBLEVBQUFBLEdBQUcsQ0FBQ0MsVUFBSixDQUFlLEdBQWY7QUFBc0IsQ0FEbEcsRUFFS0MsR0FGTCxDQUVTZixJQUFJLENBQUNBLElBRmQsRUFFb0JFLFlBQVksQ0FBQ2MsVUFGakMsRUFFOENaLGtCQUFrQixDQUFDNkIsdUJBRmpFO0FBSUFDLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQjlCLGNBQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZXhwcmVzcyA9IHJlcXVpcmUoJ2V4cHJlc3MnKTtcclxuY29uc3QgYm9keVBhcnNlciA9IHJlcXVpcmUoJ2JvZHktcGFyc2VyJyk7XHJcblxyXG5jb25zdCBjb3JzID0gcmVxdWlyZSgnLi9jb3JzJyk7XHJcbmNvbnN0IHsgY2hlY2tTY2hlbWEgfSA9IHJlcXVpcmUoJ2V4cHJlc3MtdmFsaWRhdG9yJyk7XHJcbnZhciBhdXRoZW50aWNhdGUgPSByZXF1aXJlKCcuLi9taWRkbGV3YXJlL2F1dGhlbnRpY2F0ZScpO1xyXG52YXIgdmFsaWRhdGlvblJ1bGVzID0gcmVxdWlyZSgnLi4vbWlkZGxld2FyZS92YWxpZGF0aW9uJyk7XHJcbmNvbnN0IHNjaGVkdWxlQ29udHJvbGxlciA9IHJlcXVpcmUoJy4uL2NvbnRyb2xsZXJzL3NjaGVkdWxlQ29udHJvbGxlcicpXHJcblxyXG5jb25zdCBzY2hlZHVsZVJvdXRlciA9IGV4cHJlc3MuUm91dGVyKCk7XHJcblxyXG5zY2hlZHVsZVJvdXRlci51c2UoYm9keVBhcnNlci5qc29uKCkpO1xyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbi8vIFxyXG4vLyAgICAgICAgICAgICAgU2NoZWR1bGUgUm91dGVzXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG5zY2hlZHVsZVJvdXRlci5yb3V0ZSgnLycpXHJcbiAgICAub3B0aW9ucyhjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcbiAgICAuZ2V0KGNvcnMuY29ycywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsICBzY2hlZHVsZUNvbnRyb2xsZXIuZ2V0QWxsU2NoZWR1bGVzKVxyXG4gICAgLnBvc3QoY29ycy5jb3JzV2l0aE9wdGlvbnMsYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsICBzY2hlZHVsZUNvbnRyb2xsZXIuYWRkU2NoZWR1bGUpXHJcbiAgICAucHV0KGNvcnMuY29yc1dpdGhPcHRpb25zLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeU1vZGVyYXRlciwgKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgcmVzLmVuZCgnUFVUIG9wZXJhdGlvbiBub3Qgc3VwcG9ydGVkIG9uIC9zY2hlZHVsZXMnKTtcclxuICAgIH0pXHJcbiAgICAuZGVsZXRlKGNvcnMuY29yc1dpdGhPcHRpb25zLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeUFkbWluLCBzY2hlZHVsZUNvbnRyb2xsZXIuZGVsZXRlQWxsU2NoZWR1bGVzKTtcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuLy8gXHJcbi8vICAgICAgICAgICAgICBTY2hlZHVsZSBSb3V0ZXMgT24gSURcclxuLy8gXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbnNjaGVkdWxlUm91dGVyLnJvdXRlKCcvOnNjaGVkdWxlSWQnKVxyXG4gICAgLm9wdGlvbnMoY29ycy5jb3JzV2l0aE9wdGlvbnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCAocmVxLCByZXMpID0+IHsgcmVzLnNlbmRTdGF0dXMoMjAwKTsgfSlcclxuICAgIC5nZXQoY29ycy5jb3JzLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgc2NoZWR1bGVDb250cm9sbGVyLmdldFNjaGVkdWxlRGV0YWlsc0J5SWQpXHJcbiAgICAucG9zdChjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgcmVzLmVuZCgnUE9TVCBvcGVyYXRpb24gbm90IHN1cHBvcnRlZCBvbiAvc2NoZWR1bGVzLycgKyByZXEucGFyYW1zLnNjaGVkdWxlSWQpO1xyXG4gICAgfSlcclxuICAgIC5wdXQoY29ycy5jb3JzV2l0aE9wdGlvbnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCBhdXRoZW50aWNhdGUudmVyaWZ5TW9kZXJhdGVyLCBzY2hlZHVsZUNvbnRyb2xsZXIudXBkYXRlU2NoZWR1bGVCeUlkKVxyXG4gICAgLmRlbGV0ZShjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgc2NoZWR1bGVDb250cm9sbGVyLmRlbGV0ZVNjaGVkdWxlQnlJZCk7XHJcblxyXG5zY2hlZHVsZVJvdXRlci5yb3V0ZSgnL3VzZXIvOnVzZXJJZCcpXHJcbiAgICAub3B0aW9ucyhjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIChyZXEsIHJlcykgPT4geyByZXMuc2VuZFN0YXR1cygyMDApOyB9KVxyXG4gICAgLmdldChjb3JzLmNvcnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCAgc2NoZWR1bGVDb250cm9sbGVyLmdldEFsbFNjaGVkdWxlc0ZvckFVc2VyKTtcclxuXHJcbm1vZHVsZS5leHBvcnRzID0gc2NoZWR1bGVSb3V0ZXI7Il19\",\"originalCode\":\"const express = require('express');\\r\\nconst bodyParser = require('body-parser');\\r\\n\\r\\nconst cors = require('./cors');\\r\\nconst { checkSchema } = require('express-validator');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\nvar validationRules = require('../middleware/validation');\\r\\nconst scheduleController = require('../controllers/scheduleController')\\r\\n\\r\\nconst scheduleRouter = express.Router();\\r\\n\\r\\nscheduleRouter.use(bodyParser.json());\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Schedule Routes\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nscheduleRouter.route('/')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, scheduleController.getAllSchedules)\\r\\n .post(cors.corsWithOptions,authenticate.verifyUser, scheduleController.addSchedule)\\r\\n .put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('PUT operation not supported on /schedules');\\r\\n })\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, scheduleController.deleteAllSchedules);\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Schedule Routes On ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nscheduleRouter.route('/:scheduleId')\\r\\n .options(cors.corsWithOptions, authenticate.verifyUser, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, scheduleController.getScheduleDetailsById)\\r\\n .post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('POST operation not supported on /schedules/' + req.params.scheduleId);\\r\\n })\\r\\n .put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, scheduleController.updateScheduleById)\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, scheduleController.deleteScheduleById);\\r\\n\\r\\nscheduleRouter.route('/user/:userId')\\r\\n .options(cors.corsWithOptions, authenticate.verifyUser, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, scheduleController.getAllSchedulesForAUser);\\r\\n\\r\\nmodule.exports = scheduleRouter;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/9b/scheduleRouter_9b57edc7078385d142c957dea9d9e0be.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2541\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\scheduleRouter.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":9621,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":9618,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":802,\"endOffset\":842,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1085,\"endOffset\":1188,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1621,\"endOffset\":1661,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1824,\"endOffset\":1953,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":2288,\"endOffset\":2328,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const Schedules = require('../models/schedules'); // **********************************************************************************\\n// \\n// Schedule Operations \\n// \\n// **********************************************************************************\\n\\n\\nconst getAllSchedules = (req, res, next) => {\\n Schedules.find(req.query).populate(\\\"place\\\").populate(\\\"user\\\").then(schedules => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n schedules: schedules\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst getAllSchedulesForAUser = (req, res, next) => {\\n var query = {\\n \\\"user\\\": String(req.params.userId)\\n };\\n Schedules.find(query).populate(\\\"place\\\").then(schedules => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n schedules: schedules\\n });\\n }, err => {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n const msg = err._message;\\n res.json({\\n success: false,\\n message: msg\\n });\\n }).catch(err => {\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: \\\"Failed to get data\\\"\\n });\\n });\\n};\\n\\nconst addSchedule = (req, res, next) => {\\n var schedule = {\\n user: req.body.user,\\n place: req.body.place,\\n date: req.body.date,\\n state: \\\"new\\\",\\n travellingMethod: req.body.travellingMethod\\n };\\n Schedules.create(schedule).then(schedule => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n schedule: schedule\\n });\\n }, err => {\\n res.statusCode = 403;\\n res.setHeader('Content-Type', 'application/json');\\n const msg = err._message;\\n res.json({\\n success: false,\\n message: msg\\n });\\n }).catch(err => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: \\\"Failed to add a schedule\\\"\\n });\\n });\\n};\\n\\nconst deleteAllSchedules = (req, res, next) => {\\n Schedules.remove({}).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json(resp);\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nexports.getAllSchedules = getAllSchedules;\\nexports.addSchedule = addSchedule;\\nexports.deleteAllSchedules = deleteAllSchedules;\\nexports.getAllSchedulesForAUser = getAllSchedulesForAUser; // **********************************************************************************\\n// \\n// Schedule Operations Specified by ID\\n// \\n// **********************************************************************************\\n\\nconst getScheduleDetailsById = (req, res, next) => {\\n Schedules.findById(req.params.scheduleId).then(schedule => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n schedule: schedule\\n });\\n }, err => {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: \\\"Could not find the place\\\"\\n });\\n }).catch(err => next(err));\\n};\\n\\nconst updateScheduleById = (req, res, next) => {\\n Schedules.findByIdAndUpdate(req.params.scheduleId, {\\n $set: req.body\\n }, {\\n new: true\\n }).then(schedule => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n schedule: schedule\\n });\\n }, err => next(err)).catch(err => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: \\\"Update failed\\\"\\n });\\n });\\n};\\n\\nconst deleteScheduleById = (req, res, next) => {\\n Schedules.findByIdAndRemove(req.params.scheduleId).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n response: resp\\n });\\n }, err => next(err)).catch(err => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: \\\"Delete failed\\\"\\n });\\n });\\n};\\n\\nexports.getScheduleDetailsById = getScheduleDetailsById;\\nexports.updateScheduleById = updateScheduleById;\\nexports.deleteScheduleById = deleteScheduleById; // **********************************************************************************\\n// \\n// Schedule Operations Specified by UserID\\n// \\n// **********************************************************************************\\n// const getScheduleDetailsByUserId = (req, res, next) => {\\n// Schedules.findById(req.params.scheduleId)\\n// .then((schedule) => {\\n// res.statusCode = 200;\\n// res.setHeader('Content-Type', 'application/json');\\n// res.json(schedule);\\n// }, (err) => next(err))\\n// .catch((err) => next(err));\\n// }\\n// const updateScheduleByUserId = (req, res, next) => {\\n// Schedules.findByIdAndUpdate(req.params.scheduleId, {\\n// $set: req.body\\n// }, { new: true })\\n// .then((schedule) => {\\n// res.statusCode = 200;\\n// res.setHeader('Content-Type', 'application/json');\\n// res.json(schedule);\\n// }, (err) => next(err))\\n// .catch((err) => next(err));\\n// }\\n// const deleteScheduleByUserId = (req, res, next) => {\\n// Schedules.findByIdAndRemove(req.params.scheduleId)\\n// .then((resp) => {\\n// res.statusCode = 200;\\n// res.setHeader('Content-Type', 'application/json');\\n// res.json(resp);\\n// }, (err) => next(err))\\n// .catch((err) => next(err));\\n// }\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNjaGVkdWxlQ29udHJvbGxlci5qcyJdLCJuYW1lcyI6WyJTY2hlZHVsZXMiLCJyZXF1aXJlIiwiZ2V0QWxsU2NoZWR1bGVzIiwicmVxIiwicmVzIiwibmV4dCIsImZpbmQiLCJxdWVyeSIsInBvcHVsYXRlIiwidGhlbiIsInNjaGVkdWxlcyIsInN0YXR1c0NvZGUiLCJzZXRIZWFkZXIiLCJqc29uIiwic3VjY2VzcyIsImVyciIsImNhdGNoIiwiZ2V0QWxsU2NoZWR1bGVzRm9yQVVzZXIiLCJTdHJpbmciLCJwYXJhbXMiLCJ1c2VySWQiLCJtc2ciLCJfbWVzc2FnZSIsIm1lc3NhZ2UiLCJhZGRTY2hlZHVsZSIsInNjaGVkdWxlIiwidXNlciIsImJvZHkiLCJwbGFjZSIsImRhdGUiLCJzdGF0ZSIsInRyYXZlbGxpbmdNZXRob2QiLCJjcmVhdGUiLCJkZWxldGVBbGxTY2hlZHVsZXMiLCJyZW1vdmUiLCJyZXNwIiwiZXhwb3J0cyIsImdldFNjaGVkdWxlRGV0YWlsc0J5SWQiLCJmaW5kQnlJZCIsInNjaGVkdWxlSWQiLCJ1cGRhdGVTY2hlZHVsZUJ5SWQiLCJmaW5kQnlJZEFuZFVwZGF0ZSIsIiRzZXQiLCJuZXciLCJkZWxldGVTY2hlZHVsZUJ5SWQiLCJmaW5kQnlJZEFuZFJlbW92ZSIsInJlc3BvbnNlIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxTQUFTLEdBQUdDLE9BQU8sQ0FBQyxxQkFBRCxDQUF6QixDLENBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUEsTUFBTUMsZUFBZSxHQUFHLENBQUNDLEdBQUQsRUFBTUMsR0FBTixFQUFXQyxJQUFYLEtBQW9CO0FBQ3hDTCxFQUFBQSxTQUFTLENBQUNNLElBQVYsQ0FBZUgsR0FBRyxDQUFDSSxLQUFuQixFQUEwQkMsUUFBMUIsQ0FBbUMsT0FBbkMsRUFBNENBLFFBQTVDLENBQXFELE1BQXJELEVBQ0tDLElBREwsQ0FDV0MsU0FBRCxJQUFlO0FBQ2pCTixJQUFBQSxHQUFHLENBQUNPLFVBQUosR0FBaUIs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LE1BQUFBLFFBQVEsRUFBQ1g7QUFBMUIsS0FBVDtBQUNILEdBTEwsRUFLUXBCLEdBQUQsSUFBU1YsSUFBSSxDQUFDVSxHQUFELENBTHBCLEVBTUtDLEtBTkwsQ0FNWUQsR0FBRCxJQUFTO0FBQ1pYLElBQUFBLEdBQUcsQ0FBQ08sVUFBSixHQUFpQixHQUFqQjtBQUNBUCxJQUFBQSxHQUFHLENBQUNRLFNBQUosQ0FBYyxjQUFkLEVBQThCLGtCQUE5QjtBQUNBUixJQUFBQSxHQUFHLENBQUNTLElBQUosQ0FBUztBQUFFQyxNQUFBQSxPQUFPLEVBQUUsS0FBWDtBQUFrQlMsTUFBQUEsT0FBTyxFQUFFO0FBQTNCLEtBQVQ7QUFDSCxHQVZMO0FBV0gsQ0FaRDs7QUFjQWEsT0FBTyxDQUFDQyxzQkFBUixHQUFpQ0Esc0JBQWpDO0FBQ0FELE9BQU8sQ0FBQ0ksa0JBQVIsR0FBNkJBLGtCQUE3QjtBQUNBSixPQUFPLENBQUNRLGtCQUFSLEdBQTZCQSxrQkFBN0IsQyxDQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgU2NoZWR1bGVzID0gcmVxdWlyZSgnLi4vbW9kZWxzL3NjaGVkdWxlcycpO1xyXG5cclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyBcclxuLy8gICAgICAgICAgICAgIFNjaGVkdWxlIE9wZXJhdGlvbnMgXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG5jb25zdCBnZXRBbGxTY2hlZHVsZXMgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIFNjaGVkdWxlcy5maW5kKHJlcS5xdWVyeSkucG9wdWxhdGUoXCJwbGFjZVwiKS5wb3B1bGF0ZShcInVzZXJcIilcclxuICAgICAgICAudGhlbigoc2NoZWR1bGVzKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHNjaGVkdWxlczpzY2hlZHVsZXMgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpO1xyXG59XHJcblxyXG5jb25zdCBnZXRBbGxTY2hlZHVsZXNGb3JBVXNlciA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgdmFyIHF1ZXJ5ID0geyBcInVzZXJcIjogU3RyaW5nKHJlcS5wYXJhbXMudXNlcklkKSB9O1xyXG4gICAgU2NoZWR1bGVzLmZpbmQocXVlcnkpLnBvcHVsYXRlKFwicGxhY2VcIilcclxuICAgICAgICAudGhlbigoc2NoZWR1bGVzKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHNjaGVkdWxlczpzY2hlZHVsZXMgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gIHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDQ7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIGNvbnN0IG1zZyA9IGVyci5fbWVzc2FnZTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogbXNnIH0pO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA1MDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogZmFsc2UsIG1lc3NhZ2U6IFwiRmFpbGVkIHRvIGdldCBkYXRhXCIgfSk7XHJcbiAgICAgICAgfSk7XHJcbn1cclxuXHJcbmNvbnN0IGFkZFNjaGVkdWxlID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICB2YXIgc2NoZWR1bGUgPSB7XHJcbiAgICAgICAgdXNlcjogcmVxLmJvZHkudXNlcixcclxuICAgICAgICBwbGFjZTogcmVxLmJvZHkucGxhY2UsXHJcbiAgICAgICAgZGF0ZTogcmVxLmJvZHkuZGF0ZSxcclxuICAgICAgICBzdGF0ZTogXCJuZXdcIixcclxuICAgICAgICB0cmF2ZWxsaW5nTWV0aG9kOiByZXEuYm9keS50cmF2ZWxsaW5nTWV0aG9kXHJcbiAgICB9XHJcbiAgICBTY2hlZHVsZXMuY3JlYXRlKHNjaGVkdWxlKVxyXG4gICAgICAgIC50aGVuKChzY2hlZHVsZSkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCBzY2hlZHVsZTpzY2hlZHVsZSB9KTtcclxuICAgICAgICB9LCAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNDAzO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICBjb25zdCBtc2cgPSBlcnIuX21lc3NhZ2U7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogZmFsc2UsIG1lc3NhZ2U6IG1zZyB9KTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IGZhbHNlLCBtZXNzYWdlOiBcIkZhaWxlZCB0byBhZGQgYSBzY2hlZHVsZVwiIH0pO1xyXG4gICAgICAgIH0pO1xyXG59XHJcblxyXG5jb25zdCBkZWxldGVBbGxTY2hlZHVsZXMgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIFNjaGVkdWxlcy5yZW1vdmUoe30pXHJcbiAgICAgICAgLnRoZW4oKHJlc3ApID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHJlc3ApO1xyXG4gICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuZXhwb3J0cy5nZXRBbGxTY2hlZHVsZXMgPSBnZXRBbGxTY2hlZHVsZXM7XHJcbmV4cG9ydHMuYWRkU2NoZWR1bGUgPSBhZGRTY2hlZHVsZTtcclxuZXhwb3J0cy5kZWxldGVBbGxTY2hlZHVsZXMgPSBkZWxldGVBbGxTY2hlZHVsZXM7XHJcbmV4cG9ydHMuZ2V0QWxsU2NoZWR1bGVzRm9yQVVzZXIgPSBnZXRBbGxTY2hlZHVsZXNGb3JBVXNlcjtcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuLy8gXHJcbi8vICAgICAgICAgICAgICBTY2hlZHVsZSBPcGVyYXRpb25zIFNwZWNpZmllZCBieSBJRFxyXG4vLyBcclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuY29uc3QgZ2V0U2NoZWR1bGVEZXRhaWxzQnlJZCA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgU2NoZWR1bGVzLmZpbmRCeUlkKHJlcS5wYXJhbXMuc2NoZWR1bGVJZClcclxuICAgICAgICAudGhlbigoc2NoZWR1bGUpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgc2NoZWR1bGU6c2NoZWR1bGUgfSk7XHJcbiAgICAgICAgfSwgIChlcnIpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDQ7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogZmFsc2UsIG1lc3NhZ2U6IFwiQ291bGQgbm90IGZpbmQgdGhlIHBsYWNlXCIgfSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuY29uc3QgdXBkYXRlU2NoZWR1bGVCeUlkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICBTY2hlZHVsZXMuZmluZEJ5SWRBbmRVcGRhdGUocmVxLnBhcmFtcy5zY2hlZHVsZUlkLCB7XHJcbiAgICAgICAgJHNldDogcmVxLmJvZHlcclxuICAgIH0sIHsgbmV3OiB0cnVlIH0pXHJcbiAgICAgICAgLnRoZW4oKHNjaGVkdWxlKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHNjaGVkdWxlOnNjaGVkdWxlIH0pO1xyXG4gICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogXCJVcGRhdGUgZmFpbGVkXCIgfSk7XHJcbiAgICAgICAgfSk7XHJcbn1cclxuXHJcbmNvbnN0IGRlbGV0ZVNjaGVkdWxlQnlJZCA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgU2NoZWR1bGVzLmZpbmRCeUlkQW5kUmVtb3ZlKHJlcS5wYXJhbXMuc2NoZWR1bGVJZClcclxuICAgICAgICAudGhlbigocmVzcCkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCByZXNwb25zZTpyZXNwIH0pO1xyXG4gICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogXCJEZWxldGUgZmFpbGVkXCIgfSk7XHJcbiAgICAgICAgfSk7XHJcbn1cclxuXHJcbmV4cG9ydHMuZ2V0U2NoZWR1bGVEZXRhaWxzQnlJZCA9IGdldFNjaGVkdWxlRGV0YWlsc0J5SWQ7XHJcbmV4cG9ydHMudXBkYXRlU2NoZWR1bGVCeUlkID0gdXBkYXRlU2NoZWR1bGVCeUlkO1xyXG5leHBvcnRzLmRlbGV0ZVNjaGVkdWxlQnlJZCA9IGRlbGV0ZVNjaGVkdWxlQnlJZDtcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuLy8gXHJcbi8vICAgICAgICAgICAgICBTY2hlZHVsZSBPcGVyYXRpb25zIFNwZWNpZmllZCBieSBVc2VySURcclxuLy8gXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbi8vIGNvbnN0IGdldFNjaGVkdWxlRGV0YWlsc0J5VXNlcklkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbi8vICAgICBTY2hlZHVsZXMuZmluZEJ5SWQocmVxLnBhcmFtcy5zY2hlZHVsZUlkKVxyXG4vLyAgICAgICAgIC50aGVuKChzY2hlZHVsZSkgPT4ge1xyXG4vLyAgICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuLy8gICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuLy8gICAgICAgICAgICAgcmVzLmpzb24oc2NoZWR1bGUpO1xyXG4vLyAgICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuLy8gICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxuLy8gfVxyXG5cclxuLy8gY29uc3QgdXBkYXRlU2NoZWR1bGVCeVVzZXJJZCA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4vLyAgICAgU2NoZWR1bGVzLmZpbmRCeUlkQW5kVXBkYXRlKHJlcS5wYXJhbXMuc2NoZWR1bGVJZCwge1xyXG4vLyAgICAgICAgICRzZXQ6IHJlcS5ib2R5XHJcbi8vICAgICB9LCB7IG5ldzogdHJ1ZSB9KVxyXG4vLyAgICAgICAgIC50aGVuKChzY2hlZHVsZSkgPT4ge1xyXG4vLyAgICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuLy8gICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuLy8gICAgICAgICAgICAgcmVzLmpzb24oc2NoZWR1bGUpO1xyXG4vLyAgICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuLy8gICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxuLy8gfVxyXG5cclxuLy8gY29uc3QgZGVsZXRlU2NoZWR1bGVCeVVzZXJJZCA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4vLyAgICAgU2NoZWR1bGVzLmZpbmRCeUlkQW5kUmVtb3ZlKHJlcS5wYXJhbXMuc2NoZWR1bGVJZClcclxuLy8gICAgICAgICAudGhlbigocmVzcCkgPT4ge1xyXG4vLyAgICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuLy8gICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuLy8gICAgICAgICAgICAgcmVzLmpzb24ocmVzcCk7XHJcbi8vICAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4vLyAgICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpO1xyXG4vLyB9Il19\",\"originalCode\":\"const Schedules = require('../models/schedules');\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Schedule Operations \\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nconst getAllSchedules = (req, res, next) => {\\r\\n Schedules.find(req.query).populate(\\\"place\\\").populate(\\\"user\\\")\\r\\n .then((schedules) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, schedules:schedules });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst getAllSchedulesForAUser = (req, res, next) => {\\r\\n var query = { \\\"user\\\": String(req.params.userId) };\\r\\n Schedules.find(query).populate(\\\"place\\\")\\r\\n .then((schedules) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, schedules:schedules });\\r\\n }, (err) => {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n const msg = err._message;\\r\\n res.json({ success: false, message: msg });\\r\\n })\\r\\n .catch((err) => {\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: \\\"Failed to get data\\\" });\\r\\n });\\r\\n}\\r\\n\\r\\nconst addSchedule = (req, res, next) => {\\r\\n var schedule = {\\r\\n user: req.body.user,\\r\\n place: req.body.place,\\r\\n date: req.body.date,\\r\\n state: \\\"new\\\",\\r\\n travellingMethod: req.body.travellingMethod\\r\\n }\\r\\n Schedules.create(schedule)\\r\\n .then((schedule) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, schedule:schedule });\\r\\n }, (err) => {\\r\\n res.statusCode = 403;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n const msg = err._message;\\r\\n res.json({ success: false, message: msg });\\r\\n })\\r\\n .catch((err) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: \\\"Failed to add a schedule\\\" });\\r\\n });\\r\\n}\\r\\n\\r\\nconst deleteAllSchedules = (req, res, next) => {\\r\\n Schedules.remove({})\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json(resp);\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nexports.getAllSchedules = getAllSchedules;\\r\\nexports.addSchedule = addSchedule;\\r\\nexports.deleteAllSchedules = deleteAllSchedules;\\r\\nexports.getAllSchedulesForAUser = getAllSchedulesForAUser;\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Schedule Operations Specified by ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nconst getScheduleDetailsById = (req, res, next) => {\\r\\n Schedules.findById(req.params.scheduleId)\\r\\n .then((schedule) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, schedule:schedule });\\r\\n }, (err) => {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: \\\"Could not find the place\\\" });\\r\\n })\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst updateScheduleById = (req, res, next) => {\\r\\n Schedules.findByIdAndUpdate(req.params.scheduleId, {\\r\\n $set: req.body\\r\\n }, { new: true })\\r\\n .then((schedule) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, schedule:schedule });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: \\\"Update failed\\\" });\\r\\n });\\r\\n}\\r\\n\\r\\nconst deleteScheduleById = (req, res, next) => {\\r\\n Schedules.findByIdAndRemove(req.params.scheduleId)\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, response:resp });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: \\\"Delete failed\\\" });\\r\\n });\\r\\n}\\r\\n\\r\\nexports.getScheduleDetailsById = getScheduleDetailsById;\\r\\nexports.updateScheduleById = updateScheduleById;\\r\\nexports.deleteScheduleById = deleteScheduleById;\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Schedule Operations Specified by UserID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\n// const getScheduleDetailsByUserId = (req, res, next) => {\\r\\n// Schedules.findById(req.params.scheduleId)\\r\\n// .then((schedule) => {\\r\\n// res.statusCode = 200;\\r\\n// res.setHeader('Content-Type', 'application/json');\\r\\n// res.json(schedule);\\r\\n// }, (err) => next(err))\\r\\n// .catch((err) => next(err));\\r\\n// }\\r\\n\\r\\n// const updateScheduleByUserId = (req, res, next) => {\\r\\n// Schedules.findByIdAndUpdate(req.params.scheduleId, {\\r\\n// $set: req.body\\r\\n// }, { new: true })\\r\\n// .then((schedule) => {\\r\\n// res.statusCode = 200;\\r\\n// res.setHeader('Content-Type', 'application/json');\\r\\n// res.json(schedule);\\r\\n// }, (err) => next(err))\\r\\n// .catch((err) => next(err));\\r\\n// }\\r\\n\\r\\n// const deleteScheduleByUserId = (req, res, next) => {\\r\\n// Schedules.findByIdAndRemove(req.params.scheduleId)\\r\\n// .then((resp) => {\\r\\n// res.statusCode = 200;\\r\\n// res.setHeader('Content-Type', 'application/json');\\r\\n// res.json(resp);\\r\\n// }, (err) => next(err))\\r\\n// .catch((err) => next(err));\\r\\n// }\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/df/scheduleController_df2aee56329a17301dcb5de3e55455e9.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2542\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\scheduleController.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":22878,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":22875,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"getAllSchedules\",\"ranges\":[{\"startOffset\":382,\"endOffset\":688,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getAllSchedulesForAUser\",\"ranges\":[{\"startOffset\":723,\"endOffset\":1396,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"addSchedule\",\"ranges\":[{\"startOffset\":1419,\"endOffset\":2190,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"deleteAllSchedules\",\"ranges\":[{\"startOffset\":2220,\"endOffset\":2430,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getScheduleDetailsById\",\"ranges\":[{\"startOffset\":2883,\"endOffset\":3331,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"updateScheduleById\",\"ranges\":[{\"startOffset\":3361,\"endOffset\":3854,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"deleteScheduleById\",\"ranges\":[{\"startOffset\":3884,\"endOffset\":4322,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const mongoose = require('mongoose');\\n\\nconst Schema = mongoose.Schema;\\n\\nrequire('mongoose-currency').loadType(mongoose);\\n\\nconst Currency = mongoose.Types.Currency;\\nconst scheduleSchema = new Schema({\\n user: {\\n type: mongoose.Schema.Types.ObjectId,\\n ref: \\\"User\\\"\\n },\\n place: {\\n type: mongoose.Schema.Types.ObjectId,\\n ref: \\\"Place\\\"\\n },\\n date: {\\n type: Date,\\n required: true\\n },\\n fair: {\\n type: Currency,\\n min: 0\\n },\\n state: {\\n type: String,\\n default: \\\"new\\\",\\n enum: [\\\"new\\\", \\\"not-completed\\\", \\\"canceled\\\", \\\"completed\\\"]\\n },\\n travellingMethod: {\\n type: String,\\n required: true,\\n enum: ['Bus', 'Car', 'Train', 'Threewheeler', 'Foot']\\n }\\n}, {\\n timestamps: true\\n});\\nvar Schedules = mongoose.model('Schedule', scheduleSchema);\\nmodule.exports = Schedules;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNjaGVkdWxlcy5qcyJdLCJuYW1lcyI6WyJtb25nb29zZSIsInJlcXVpcmUiLCJTY2hlbWEiLCJsb2FkVHlwZSIsIkN1cnJlbmN5IiwiVHlwZXMiLCJzY2hlZHVsZVNjaGVtYSIsInVzZXIiLCJ0eXBlIiwiT2JqZWN0SWQiLCJyZWYiLCJwbGFjZSIsImRhdGUiLCJEYXRlIiwicmVxdWlyZWQiLCJmYWlyIiwibWluIiwic3RhdGUiLCJTdHJpbmciLCJkZWZhdWx0IiwiZW51bSIsInRyYXZlbGxpbmdNZXRob2QiLCJ0aW1lc3RhbXBzIiwiU2NoZWR1bGVzIiwibW9kZWwiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxRQUFRLEdBQUdDLE9BQU8sQ0FBQyxVQUFELENBQXhCOztBQUNBLE1BQU1DLE1BQU0sR0FBR0YsUUFBUSxDQUFDRSxNQUF4Qjs7QUFDQUQsT0FBTyxDQUFDLG1CQUFELENBQVAsQ0FBNkJFLFFBQTdCLENBQXNDSCxRQUF0Qzs7QUFDQSxNQUFNSSxRQUFRLEdBQUdKLFFBQVEsQ0FBQ0ssS0FBVCxDQUFlRCxRQUFoQztBQUNBLE1BQU1FLGNBQWMsR0FBRyxJQUFJSixNQUFKLENBQVc7QUFDOUJLLEVBQUFBLElBQUksRUFBRTtBQUNGQyxJQUFBQSxJQUFJLEVBQUVSLFFBQVEsQ0FBQ0UsTUFBVCxDQUFnQkcsS0FBaEIsQ0FBc0JJLFFBRDFCO0FBRUZDLElBQUFBLEdBQUcsRUFBRTtBQUZILEdBRHdCO0FBSzlCQyxFQUFBQSxLQUFLLEVBQUU7QUFDSEgsSUFBQUEsSUFBSSxFQUFFUixRQUFRLENBQUNFLE1BQVQsQ0FBZ0JHLEtBQWhCLENBQXNCSSxRQUR6QjtBQUVIQyxJQUFBQSxHQUFHLEVBQUU7QUFGRixHQUx1QjtBQVM5QkUsRUFBQUEsSUFBSSxFQUFFO0FBQ0ZKLElBQUFBLElBQUksRUFBRUssSUFESjtBQUVGQyxJQUFBQSxRQUFRLEVBQUU7QUFGUixHQVR3QjtBQWE5QkMsRUFBQUEsSUFBSSxFQUFFO0FBQ0ZQLElBQUFBLElBQUksRUFBRUosUUFESjtBQUVGWSxJQUFBQSxHQUFHLEVBQUU7QUFGSCxHQWJ3QjtBQWlCOUJDLEVBQUFBLEtBQUssRUFBRTtBQUNIVCxJQUFBQSxJQUFJLEVBQUVVLE1BREg7QUFFSEMsSUFBQUEsT0FBTyxFQUFFLEtBRk47QUFHSEMsSUFBQUEsSUFBSSxFQUFFLENBQUMsS0FBRCxFQUFPLGVBQVAsRUFBd0IsVUFBeEIsRUFBb0MsV0FBcEM7QUFISCxHQWpCdUI7QUFzQjlCQyxFQUFBQSxnQkFBZ0IsRUFBRTtBQUNkYixJQUFBQSxJQUFJLEVBQUVVLE1BRFE7QUFFZEosSUFBQUEsUUFBUSxFQUFFLElBRkk7QUFHZE0sSUFBQUEsSUFBSSxFQUFFLENBQUMsS0FBRCxFQUFRLEtBQVIsRUFBZSxPQUFmLEVBQXdCLGNBQXhCLEVBQXdDLE1BQXhDO0FBSFE7QUF0QlksQ0FBWCxFQTJCcEI7QUFDQ0UsRUFBQUEsVUFBVSxFQUFFO0FBRGIsQ0EzQm9CLENBQXZCO0FBK0JBLElBQUlDLFNBQVMsR0FBR3ZCLFFBQVEsQ0FBQ3dCLEtBQVQsQ0FBZSxVQUFmLEVBQTJCbEIsY0FBM0IsQ0FBaEI7QUFFQW1CLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQkgsU0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBtb25nb29zZSA9IHJlcXVpcmUoJ21vbmdvb3NlJyk7XHJcbmNvbnN0IFNjaGVtYSA9IG1vbmdvb3NlLlNjaGVtYTtcclxucmVxdWlyZSgnbW9uZ29vc2UtY3VycmVuY3knKS5sb2FkVHlwZShtb25nb29zZSk7XHJcbmNvbnN0IEN1cnJlbmN5ID0gbW9uZ29vc2UuVHlwZXMuQ3VycmVuY3k7XHJcbmNvbnN0IHNjaGVkdWxlU2NoZW1hID0gbmV3IFNjaGVtYSh7XHJcbiAgICB1c2VyOiB7XHJcbiAgICAgICAgdHlwZTogbW9uZ29vc2UuU2NoZW1hLlR5cGVzLk9iamVjdElkLFxyXG4gICAgICAgIHJlZjogXCJVc2VyXCJcclxuICAgIH0sXHJcbiAgICBwbGFjZToge1xyXG4gICAgICAgIHR5cGU6IG1vbmdvb3NlLlNjaGVtYS5UeXBlcy5PYmplY3RJZCxcclxuICAgICAgICByZWY6IFwiUGxhY2VcIlxyXG4gICAgfSxcclxuICAgIGRhdGU6IHtcclxuICAgICAgICB0eXBlOiBEYXRlLFxyXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlXHJcbiAgICB9LFxyXG4gICAgZmFpcjoge1xyXG4gICAgICAgIHR5cGU6IEN1cnJlbmN5LFxyXG4gICAgICAgIG1pbjogMFxyXG4gICAgfSxcclxuICAgIHN0YXRlOiB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICAgIGRlZmF1bHQ6IFwibmV3XCIsXHJcbiAgICAgICAgZW51bTogW1wibmV3XCIsXCJub3QtY29tcGxldGVkXCIsIFwiY2FuY2VsZWRcIiwgXCJjb21wbGV0ZWRcIl1cclxuICAgIH0sXHJcbiAgICB0cmF2ZWxsaW5nTWV0aG9kOiB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxyXG4gICAgICAgIGVudW06IFsnQnVzJywgJ0NhcicsICdUcmFpbicsICdUaHJlZXdoZWVsZXInLCAnRm9vdCddXHJcbiAgICB9XHJcbn0sIHtcclxuICAgIHRpbWVzdGFtcHM6IHRydWVcclxufSk7XHJcblxyXG52YXIgU2NoZWR1bGVzID0gbW9uZ29vc2UubW9kZWwoJ1NjaGVkdWxlJywgc2NoZWR1bGVTY2hlbWEpO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBTY2hlZHVsZXM7Il19\",\"originalCode\":\"const mongoose = require('mongoose');\\r\\nconst Schema = mongoose.Schema;\\r\\nrequire('mongoose-currency').loadType(mongoose);\\r\\nconst Currency = mongoose.Types.Currency;\\r\\nconst scheduleSchema = new Schema({\\r\\n user: {\\r\\n type: mongoose.Schema.Types.ObjectId,\\r\\n ref: \\\"User\\\"\\r\\n },\\r\\n place: {\\r\\n type: mongoose.Schema.Types.ObjectId,\\r\\n ref: \\\"Place\\\"\\r\\n },\\r\\n date: {\\r\\n type: Date,\\r\\n required: true\\r\\n },\\r\\n fair: {\\r\\n type: Currency,\\r\\n min: 0\\r\\n },\\r\\n state: {\\r\\n type: String,\\r\\n default: \\\"new\\\",\\r\\n enum: [\\\"new\\\",\\\"not-completed\\\", \\\"canceled\\\", \\\"completed\\\"]\\r\\n },\\r\\n travellingMethod: {\\r\\n type: String,\\r\\n required: true,\\r\\n enum: ['Bus', 'Car', 'Train', 'Threewheeler', 'Foot']\\r\\n }\\r\\n}, {\\r\\n timestamps: true\\r\\n});\\r\\n\\r\\nvar Schedules = mongoose.model('Schedule', scheduleSchema);\\r\\n\\r\\nmodule.exports = Schedules;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/e2/schedules_e2f8e79bc28961f4db3736c92d490e47.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2543\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\models\\\\schedules.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":4238,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":4235,\"count\":1}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const express = require('express');\\n\\nconst bodyParser = require('body-parser');\\n\\nconst cors = require('./cors');\\n\\nconst {\\n checkSchema\\n} = require('express-validator');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nvar validationRules = require('../middleware/validation');\\n\\nconst touristController = require('../controllers/touristController');\\n\\nconst touristRouter = express.Router();\\ntouristRouter.use(bodyParser.json()); // **********************************************************************************\\n// \\n// Tourist Routes\\n// \\n// **********************************************************************************\\n\\ntouristRouter.route('/').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, touristController.getAllTourists).post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, touristController.addTourist).put(cors.corsWithOptions, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('PUT operation not supported on /tourists');\\n}).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, touristController.deleteAllTourists);\\ntouristRouter.route('/search').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).post(cors.corsWithOptions, authenticate.verifyUser, touristController.getAllTouristsByName); // **********************************************************************************\\n// \\n// Tourist Routes Specified by ID\\n// \\n// **********************************************************************************\\n\\ntouristRouter.route('/:touristId').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, touristController.getTouristDetailsById).post(cors.corsWithOptions, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('POST operation not supported on /tourists/' + req.params.touristId);\\n}).put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, touristController.updateTouristDetailsById).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, touristController.deleteATouristById);\\nmodule.exports = touristRouter;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRvdXJpc3RSb3V0ZXIuanMiXSwibmFtZXMiOlsiZXhwcmVzcyIsInJlcXVpcmUiLCJib2R5UGFyc2VyIiwiY29ycyIsImNoZWNrU2NoZW1hIiwiYXV0aGVudGljYXRlIiwidmFsaWRhdGlvblJ1bGVzIiwidG91cmlzdENvbnRyb2xsZXIiLCJ0b3VyaXN0Um91dGVyIiwiUm91dGVyIiwidXNlIiwianNvbiIsInJvdXRlIiwib3B0aW9ucyIsImNvcnNXaXRoT3B0aW9ucyIsInJlcSIsInJlcyIsInNlbmRTdGF0dXMiLCJnZXQiLCJ2ZXJpZnlVc2VyIiwiZ2V0QWxsVG91cmlzdHMiLCJwb3N0IiwidmVyaWZ5TW9kZXJhdGVyIiwiYWRkVG91cmlzdCIsInB1dCIsIm5leHQiLCJzdGF0dXNDb2RlIiwiZW5kIiwiZGVsZXRlIiwidmVyaWZ5QWRtaW4iLCJkZWxldGVBbGxUb3VyaXN0cyIsImdldEFsbFRvdXJpc3RzQnlOYW1lIiwiZ2V0VG91cmlzdERldGFpbHNCeUlkIiwicGFyYW1zIiwidG91cmlzdElkIiwidXBkYXRlVG91cmlzdERldGFpbHNCeUlkIiwiZGVsZXRlQVRvdXJpc3RCeUlkIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsT0FBTyxHQUFHQyxPQUFPLENBQUMsU0FBRCxDQUF2Qjs7QUFDQSxNQUFNQyxVQUFVLEdBQUdELE9BQU8sQ0FBQyxhQUFELENBQTFCOztBQUVBLE1BQU1FLElBQUksR0FBR0YsT0FBTyxDQUFDLFFBQUQsQ0FBcEI7O0FBQ0EsTUFBTTtBQUFFRyxFQUFBQTtBQUFGLElBQWtCSCxPQUFPLENBQUMsbUJBQUQsQ0FBL0I7O0FBQ0EsSUFBSUksWUFBWSxHQUFHSixPQUFPLENBQUMsNEJBQUQsQ0FBMUI7O0FBQ0EsSUFBSUssZUFBZSxHQUFHTCxPQUFPLENBQUMsMEJBQUQsQ0FBN0I7O0FBQ0EsTUFBTU0saUJBQWlCLEdBQUdOLE9BQU8sQ0FBQyxrQ0FBRCxDQUFqQzs7QUFFQSxNQUFNTyxhQUFhLEdBQUdSLE9BQU8sQ0FBQ1MsTUFBUixFQUF0QjtBQUVBRCxhQUFhLENBQUNFLEdBQWQsQ0FBa0JSLFVBQVUsQ0FBQ1MsSUFBWCxFQUFsQixFLENBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQUgsYUFBYSxDQUFDSSxLQUFkLENBQW9CLEdBQXBCLEVBQ0tDLE9BREwsQ0FDYVYsSUFBSSxDQUFDVyxlQURsQixFQUNtQyxDQUFDQyxHQUFELEVBQU1DLEdBQU4sS0FBYztBQUFFQSxFQUFBQSxHQUFHLENBQUNDLFVBQUosQ0FBZSxHQUFmO0FBQXNCLENBRHpFLEVBRUtDLEdBRkwsQ0FFU2YsSUFBSSxDQUFDQSxJQUZkLEVBRXFCRSxZQUFZLENBQUNjLFVBRmxDLEVBRWdEWixpQkFBaUIsQ0FBQ2EsY0FGbEUsRUFHS0MsSUFITCxDQUdVbEIsSUFBSSxDQUFDVyxlQUhmLEVBR2lDVCxZQUFZLENBQUNjLFVBSDlDLEVBRzBEZCxZQUFZLENBQUNpQixlQUh2RSxFQUd3RmYsaUJBQWlCLENBQUNnQixVQUgxRyxFQUlLQyxHQUpMLENBSVNyQixJQUFJLENBQUNXLGVBSmQsRUFJK0IsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEVBQVdTLElBQVgsS0FBb0I7QUFDM0NULEVBQUFBLEdBQUcsQ0FBQ1UsVUFBSixHQUFpQixHQUFqQjtBQUNBVixFQUFBQSxHQUFHLENBQUNXLEdBQUosQ0FBUSwwQ0FBUjtBQUNILENBUEwsRUFRS0MsTUFSTCxDQVFZekIsSUFBSSxDQUFDVyxlQVJqQixFQVFrQ1QsWUFBWSxDQUFDYyxVQVIvQyxFQVEyRGQsWUFBWSxDQUFDd0IsV0FSeEUsRUFRc0Z0QixpQkFBaUIsQ0FBQ3VCLGlCQVJ4RztBQVNBdEIsYUFBYSxDQUFDSSxLQUFkLENBQW9CLFNBQXBCLEVBQ0tDLE9BREwsQ0FDYVYsSUFBSSxDQUFDVyxlQURsQixFQUNtQyxDQUFDQyxHQUFELEVBQU1DLEdBQU4sS0FBYztBQUFFQSxFQUFBQSxHQUFHLENBQUNDLFVBQUosQ0FBZSxHQUFmO0FBQXNCLENBRHpFLEVBRUtJLElBRkwsQ0FFVWxCLElBQUksQ0FBQ1csZUFGZixFQUVnQ1QsWUFBWSxDQUFDYyxVQUY3QyxFQUUwRFosaUJBQWlCLENBQUN3QixvQkFGNUUsRSxDQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUF2QixhQUFhLENBQUNJLEtBQWQsQ0FBb0IsYUFBcEIsRUFDS0MsT0FETCxDQUNhVixJQUFJLENBQUNXLGVBRGxCLEVBQ21DLENBQUNDLEdBQUQsRUFBTUMsR0FBTixLQUFjO0FBQUVBLEVBQUFBLEdBQUcsQ0FBQ0MsVUFBSixDQUFlLEdBQWY7QUFBc0IsQ0FEekUsRUFFS0MsR0FGTCxDQUVTZixJQUFJLENBQUNBLElBRmQsRUFFb0JFLFlBQVksQ0FBQ2MsVUFGakMsRUFFK0NaLGlCQUFpQixDQUFDeUIscUJBRmpFLEVBR0tYLElBSEwsQ0FHVWxCLElBQUksQ0FBQ1csZUFIZixFQUdnQyxDQUFDQyxHQUFELEVBQU1DLEdBQU4sRUFBV1MsSUFBWCxLQUFvQjtBQUM1Q1QsRUFBQUEsR0FBRyxDQUFDVSxVQUFKLEdBQWlCLEdBQWpCO0FBQ0FWLEVBQUFBLEdBQUcsQ0FBQ1csR0FBSixDQUFRLCtDQUErQ1osR0FBRyxDQUFDa0IsTUFBSixDQUFXQyxTQUFsRTtBQUNILENBTkwsRUFPS1YsR0FQTCxDQU9TckIsSUFBSSxDQUFDVyxlQVBkLEVBTytCVCxZQUFZLENBQUNjLFVBUDVDLEVBT3dEZCxZQUFZLENBQUNpQixlQVByRSxFQU91RmYsaUJBQWlCLENBQUM0Qix3QkFQekcsRUFRS1AsTUFSTCxDQVFZekIsSUFBSSxDQUFDVyxlQVJqQixFQVFtQ1QsWUFBWSxDQUFDYyxVQVJoRCxFQVE0RGQsWUFBWSxDQUFDaUIsZUFSekUsRUFRMEZmLGlCQUFpQixDQUFDNkIsa0JBUjVHO0FBVUFDLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQjlCLGFBQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZXhwcmVzcyA9IHJlcXVpcmUoJ2V4cHJlc3MnKTtcclxuY29uc3QgYm9keVBhcnNlciA9IHJlcXVpcmUoJ2JvZHktcGFyc2VyJyk7XHJcblxyXG5jb25zdCBjb3JzID0gcmVxdWlyZSgnLi9jb3JzJyk7XHJcbmNvbnN0IHsgY2hlY2tTY2hlbWEgfSA9IHJlcXVpcmUoJ2V4cHJlc3MtdmFsaWRhdG9yJyk7XHJcbnZhciBhdXRoZW50aWNhdGUgPSByZXF1aXJlKCcuLi9taWRkbGV3YXJlL2F1dGhlbnRpY2F0ZScpO1xyXG52YXIgdmFsaWRhdGlvblJ1bGVzID0gcmVxdWlyZSgnLi4vbWlkZGxld2FyZS92YWxpZGF0aW9uJyk7XHJcbmNvbnN0IHRvdXJpc3RDb250cm9sbGVyID0gcmVxdWlyZSgnLi4vY29udHJvbGxlcnMvdG91cmlzdENvbnRyb2xsZXInKVxyXG5cclxuY29uc3QgdG91cmlzdFJvdXRlciA9IGV4cHJlc3MuUm91dGVyKCk7XHJcblxyXG50b3VyaXN0Um91dGVyLnVzZShib2R5UGFyc2VyLmpzb24oKSk7XHJcblxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbi8vIFxyXG4vLyAgICAgICAgICAgICAgVG91cmlzdCBSb3V0ZXNcclxuLy8gXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbnRvdXJpc3RSb3V0ZXIucm91dGUoJy8nKVxyXG4gICAgLm9wdGlvbnMoY29ycy5jb3JzV2l0aE9wdGlvbnMsIChyZXEsIHJlcykgPT4geyByZXMuc2VuZFN0YXR1cygyMDApOyB9KVxyXG4gICAgLmdldChjb3JzLmNvcnMsICBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgICB0b3VyaXN0Q29udHJvbGxlci5nZXRBbGxUb3VyaXN0cylcclxuICAgIC5wb3N0KGNvcnMuY29yc1dpdGhPcHRpb25zLCAgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlNb2RlcmF0ZXIsIHRvdXJpc3RDb250cm9sbGVyLmFkZFRvdXJpc3QpXHJcbiAgICAucHV0KGNvcnMuY29yc1dpdGhPcHRpb25zLCAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwMztcclxuICAgICAgICByZXMuZW5kKCdQVVQgb3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQgb24gL3RvdXJpc3RzJyk7XHJcbiAgICB9KVxyXG4gICAgLmRlbGV0ZShjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgIHRvdXJpc3RDb250cm9sbGVyLmRlbGV0ZUFsbFRvdXJpc3RzKTtcclxudG91cmlzdFJvdXRlci5yb3V0ZSgnL3NlYXJjaCcpXHJcbiAgICAub3B0aW9ucyhjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcbiAgICAucG9zdChjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsICB0b3VyaXN0Q29udHJvbGxlci5nZXRBbGxUb3VyaXN0c0J5TmFtZSk7XHJcblxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbi8vIFxyXG4vLyAgICAgICAgICAgICAgVG91cmlzdCBSb3V0ZXMgU3BlY2lmaWVkIGJ5IElEXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG50b3VyaXN0Um91dGVyLnJvdXRlKCcvOnRvdXJpc3RJZCcpXHJcbiAgICAub3B0aW9ucyhjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcbiAgICAuZ2V0KGNvcnMuY29ycywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsICAgdG91cmlzdENvbnRyb2xsZXIuZ2V0VG91cmlzdERldGFpbHNCeUlkKVxyXG4gICAgLnBvc3QoY29ycy5jb3JzV2l0aE9wdGlvbnMsIChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNDAzO1xyXG4gICAgICAgIHJlcy5lbmQoJ1BPU1Qgb3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQgb24gL3RvdXJpc3RzLycgKyByZXEucGFyYW1zLnRvdXJpc3RJZCk7XHJcbiAgICB9KVxyXG4gICAgLnB1dChjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlNb2RlcmF0ZXIsICB0b3VyaXN0Q29udHJvbGxlci51cGRhdGVUb3VyaXN0RGV0YWlsc0J5SWQpXHJcbiAgICAuZGVsZXRlKGNvcnMuY29yc1dpdGhPcHRpb25zLCAgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlNb2RlcmF0ZXIsIHRvdXJpc3RDb250cm9sbGVyLmRlbGV0ZUFUb3VyaXN0QnlJZCk7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IHRvdXJpc3RSb3V0ZXI7Il19\",\"originalCode\":\"const express = require('express');\\r\\nconst bodyParser = require('body-parser');\\r\\n\\r\\nconst cors = require('./cors');\\r\\nconst { checkSchema } = require('express-validator');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\nvar validationRules = require('../middleware/validation');\\r\\nconst touristController = require('../controllers/touristController')\\r\\n\\r\\nconst touristRouter = express.Router();\\r\\n\\r\\ntouristRouter.use(bodyParser.json());\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Tourist Routes\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\ntouristRouter.route('/')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, touristController.getAllTourists)\\r\\n .post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, touristController.addTourist)\\r\\n .put(cors.corsWithOptions, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('PUT operation not supported on /tourists');\\r\\n })\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, touristController.deleteAllTourists);\\r\\ntouristRouter.route('/search')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .post(cors.corsWithOptions, authenticate.verifyUser, touristController.getAllTouristsByName);\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Tourist Routes Specified by ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\ntouristRouter.route('/:touristId')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, touristController.getTouristDetailsById)\\r\\n .post(cors.corsWithOptions, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('POST operation not supported on /tourists/' + req.params.touristId);\\r\\n })\\r\\n .put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, touristController.updateTouristDetailsById)\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, touristController.deleteATouristById);\\r\\n\\r\\nmodule.exports = touristRouter;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/0a/touristRouter_0ad938586662daadc81c6cb1ad2e0f53.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2545\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\touristRouter.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":9165,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":9162,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":796,\"endOffset\":836,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1050,\"endOffset\":1152,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1333,\"endOffset\":1373,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1761,\"endOffset\":1801,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1911,\"endOffset\":2038,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const Tourists = require('../models/users');\\n\\nconst utils = require('../utils/utils'); // **********************************************************************************\\n// \\n// Tourist Operations \\n// \\n// **********************************************************************************\\n\\n\\nconst getAllTourists = (req, res, next) => {\\n var query = {\\n \\\"role\\\": \\\"user\\\"\\n }; // var obj = Object.assign(query, { $text: { $search: searchBy } });\\n\\n Tourists.find(query).then(tourists => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n tourists: tourists\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst getAllTouristsByName = (req, res, next) => {\\n var query = {\\n \\\"role\\\": \\\"user\\\"\\n };\\n\\n if (req.body.similarTo) {\\n var searchBy = req.body.similarTo || {};\\n query = {\\n \\\"role\\\": \\\"user\\\",\\n $text: {\\n $search: searchBy\\n }\\n };\\n }\\n\\n var sortby = req.body.sortBy || {};\\n Tourists.find(query).sort(sortby).then(tourists => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n tourists: tourists\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst addTourist = async (req, res, next) => {\\n const randomPassword = utils.password_generator(10);\\n var tourist = {\\n username: req.body.email,\\n firstname: req.body.firstname,\\n lastname: req.body.lastname,\\n email: req.body.email,\\n mobile: req.body.mobile,\\n role: 'user'\\n };\\n\\n try {\\n Tourists.register(new Tourists(tourist), randomPassword, (err, tourist) => {\\n if (err) {\\n res.statusCode = 403;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: err.message\\n });\\n } else {\\n tourist.save((err, tourist) => {\\n if (err) {\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Error while Saving new user.'\\n });\\n }\\n\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n email: tourist.email,\\n password: randomPassword\\n });\\n });\\n }\\n });\\n } catch (error) {\\n next(err);\\n }\\n};\\n\\nconst deleteAllTourists = (req, res, next) => {\\n Tourists.remove({\\n \\\"role\\\": \\\"user\\\"\\n }).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n response: resp\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nexports.getAllTourists = getAllTourists;\\nexports.getAllTouristsByName = getAllTouristsByName;\\nexports.addTourist = addTourist;\\nexports.deleteAllTourists = deleteAllTourists; // **********************************************************************************\\n// \\n// Tourist Operations Specified by ID\\n// \\n// **********************************************************************************\\n\\nconst getTouristDetailsById = (req, res, next) => {\\n var touristId = req.params.touristId;\\n Tourists.findById(touristId).then(tourist => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n tourist: tourist\\n });\\n }, err => {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Could not find tourist with given ID'\\n });\\n }).catch(err => next(err));\\n};\\n\\nconst updateTouristDetailsById = (req, res, next) => {\\n Tourists.findByIdAndUpdate(req.params.touristId, {\\n $set: req.body\\n }, {\\n new: true\\n }).then(tourist => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n tourist: tourist\\n });\\n }, err => {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Could not find tourist with given ID'\\n });\\n }).catch(err => next(err));\\n};\\n\\nconst deleteATouristById = (req, res, next) => {\\n Tourists.findByIdAndRemove(req.params.touristId).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n response: resp\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nexports.getTouristDetailsById = getTouristDetailsById;\\nexports.updateTouristDetailsById = updateTouristDetailsById;\\nexports.deleteATouristById = deleteATouristById;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRvdXJpc3RDb250cm9sbGVyLmpzIl0sIm5hbWVzIjpbIlRvdXJpc3RzIiwicmVxdWlyZSIsInV0aWxzIiwiZ2V0QWxsVG91cmlzdHMiLCJyZXEiLCJyZXMiLCJuZXh0IiwicXVlcnkiLCJmaW5kIiwidGhlbiIsInRvdXJpc3RzIiwic3RhdHVzQ29kZSIsInNldEhlYWRlciIsImpzb24iLCJzdWNjZXNzIiwiZXJyIiwiY2F0Y2giLCJnZXRBbGxUb3VyaXN0c0J5TmFtZSIsImJvZHkiLCJzaW1pbGFyVG8iLCJzZWFyY2hCeSIsIiR0ZXh0IiwiJHNlYXJjaCIsInNvcnRieSIsInNvcnRCeSIsInNvcnQiLCJhZGRUb3VyaXN0IiwicmFuZG9tUGFzc3dvcmQiLCJwYXNzd29yZF9nZW5lcmF0b3IiLCJ0b3VyaXN0IiwidXNlcm5hbWUiLCJlbWFpbCIsImZpcnN0bmFtZSIsImxhc3RuYW1lIiwibW9iaWxlIiwicm9sZSIsInJlZ2lzdGVyIiwibWVzc2FnZSIsInNhdmUiLCJwYXNzd29yZCIsImVycm9yIiwiZGVsZXRlQWxsVG91cmlzdHMiLCJyZW1vdmUiLCJyZXNwIiwicmVzcG9uc2UiLCJleHBvcnRzIiwiZ2V0VG91cmlzdERldGFpbHNCeUlkIiwidG91cmlzdElkIiwicGFyYW1zIiwiZmluZEJ5SWQiLCJ1cGRhdGVUb3VyaXN0RGV0YWlsc0J5SWQiLCJmaW5kQnlJZEFuZFVwZGF0ZSIsIiRzZXQiLCJuZXciLCJkZWxldGVBVG91cmlzdEJ5SWQiLCJmaW5kQnlJZEFuZFJlbW92ZSJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsUUFBUSxHQUFHQyxPQUFPLENBQUMsaUJBQUQsQ0FBeEI7O0FBQ0EsTUFBTUMsS0FBSyxHQUFHRCxPQUFPLENBQUMsZ0JBQUQsQ0FBckIsQyxDQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBLE1BQU1FLGNBQWMsR0FBRyxDQUFDQyxHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUN2QyxNQUFJQyxLQUFLLEdBQUc7QUFBRSxZQUFRO0FBQVYsR0FBWixDQUR1QyxDQUV2Qzs7QUFDQ1AsRUFBQUEsUUFBUSxDQUFDUSxJQUFULENBQWNELEtBQWQsRUFDSUUsSUFESixDQUNVQyxRQUFELElBQWM7QUFDaEJMLElBQUFBLEdBQUcsQ0FBQ00sVUFBSixHQUFpQixHQUFqQjtBQUNBTixJQUFBQSxHQUFHLENBQUNPLFNBQUosQ0FBYyxjQUFkLEVBQThCLGtCQUE5QjtBQUNBUCxJQUFBQSxHQUFHLENBQUNRLElBQUosQ0FBUztBQUFFQyxNQUFBQSxPQUFPLEVBQUUsSUFBWDtBQUFpQkosTUFBQUEsUUFBUSxFQUFFQTtBQUEzQixLQUFUO0FBQ0gsR0FMSixFQUtPSyxHQUFELElBQVNULElBQUksQ0FBQ1MsR0FBRCxDQUxuQixFQU1JQyxLQU5KLENBTVdELEdBQUQsSUFBU1QsSUFBSSxDQUFDUyxHQUFELENBTnZCO0FBT0osQ0FWRDs7QUFZQSxNQUFNRSxvQkFBb0IsR0FBRyxDQUFDYixHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUM3QyxNQUFJQyxLQUFLLEdBQUc7QUFBRSxZQUFRO0FBQVYsR0FBWjs7QUFDQSxNQUFJSCxHQUFHLENBQUNjLElBQUosQ0FBU0MsU0FBYixFQUF3QjtBQUNwQixRQUFJQyxRQUFRLEdBQUdoQixHQUFHLENBQUNjLElBQUosQ0FBU0MsU0FBVCxJQUFzQixFQUFyQztBQUNBWixJQUFBQSxLQUFLLEdBQUc7QUFBRSxjQUFRLE1BQVY7QUFBa0JjLE1BQUFBLEtBQUssRUFBRTtBQUFFQyxRQUFBQSxPQUFPLEVBQUVGO0FBQVg7QUFBekIsS0FBUjtBQUNIOztBQUVELE1BQUlHLE1BQU0sR0FBR25CLEdBQUcsQ0FBQ2MsSUFBSixDQUFTTSxNQUFULElBQW1CLEVBQWhDO0FBQ0F4QixFQUFBQSxRQUFRLENBQUNRLElBQVQsQ0FBY0QsS0FBZCxFQUFxQmtCLElBQXJCLENBQTBCRixNQUExQixFQUNLZCxJQURMLENBQ1dDLFFBQUQsSUFBYztBQUNoQkwsSUFBQUEsR0FBRyxDQUFDTSxVQUFKLEdBQWlCLEdBQWpCO0FBQ0FOLElBQUFBLEdBQUcsQ0FBQ08sU0FBSixDQUFjLGNBQWQsRUFBOEIsa0JBQTlCO0FBQ0FQLElBQUFBLEdBQUcsQ0FBQ1EsSUFBSixDQUFTO0FBQUVDLE1BQUFBLE9BQU8sRUFBRSxJQUFYO0FBQWlCSixNQUFBQSxRQUFRLEVBQUVBO0FBQTNCLEtBQVQ7QUFDSCxHQUxMLEVBS1FLLEdBQUQsSUFBU1QsSUFBSSxDQUFDUyxHQUFELENBTHBCLEVBTUtDLEtBTkwsQ0FNWUQsR0FBRCxJQUFTVCxJQUFJLENBQUNTLEdBQUQsQ0FOeEI7QUFPSCxDQWZEOztBQWlCQSxNQUFNVyxVQUFVLEdBQUcsT0FBT3RCLEdBQVAsRUFBWUMsR0FBWixFQUFpQkMsSUFBakIsS0FBMEI7QUFDekMsUUFBTXFCLGNBQWMsR0FBR3pCLEtBQUssQ0FBQzBCLGtCQUFOLENBQXlCLEVBQXpCLENBQXZCO0FBQ0EsTUFBSUMsT0FBTyxHQUFHO0FBQ1ZDLElBQUFBLFFBQVEsRUFBRTFCLEdBQUcsQ0FBQ2MsSUFBSixDQUFTYSxLQURUO0FBRVZDLElBQUFBLFNBQVMsRUFBRTVCLEdBQUcsQ0FBQ2MsSUFBSixDQUFTYyxTQUZWO0FBR1ZDLElBQUFBLFFBQVEsRUFBRTdCLEdBQUcsQ0FBQ2MsSUFBSixDQUFTZSxRQUhUO0FBSVZGLElBQUFBLEtBQUssRUFBRTNCLEdBQUcsQ0FBQ2MsSUFBSixDQUFTYSxLQUpOO0FBS1ZHLElBQUFBLE1BQU0sRUFBRTlCLEdBQUcsQ0FBQ2MsSUFBSixDQUFTZ0IsTUFMUDtBQU1WQyxJQUFBQSxJQUFJLEVBQUU7QUFOSSxHQUFkOztBQVFBLE1BQUk7QUFDQW5DLElBQUFBLFFBQVEsQ0FBQ29DLFFBQVQsQ0FBa0IsSUFBSXBDLFFBQUosQ0FBYTZCLE9BQWIsQ0FBbEIsRUFDSUYsY0FESixFQUNvQixDQUFDWixHQUFELEVBQU1jLE9BQU4sS0FBa0I7QUFDOUIsVUFBSWQsR0FBSixFQUFTO0FBQ0xWLFFBQUFBLEdBQUcsQ0FBQ00sVUFBSixHQUFpQixHQUFqQjtBQUNBTixRQUFBQSxHQUFHLENBQUNPLFNBQUosQ0FBYyxjQUFkLEVBQThCLGtCQUE5QjtBQUNBUCxRQUFBQSxHQUFHLENBQUNRLElBQUosQ0FBUztBQUFFQyxVQUFBQSxPQUFPLEVBQUUsS0FBWDtBQUFrQnVCLFVBQUFBLE9BQU8sRUFBRXRCLEdBQUcsQ0FBQ3NCO0FBQS9CLFNBQVQ7QUFDSCxPQUpELE1BS0s7QUFDRFIsUUFBQUEsT0FBTyxDQUFDUyxJQUFSLENBQWEsQ0FBQ3ZCLEdBQUQsRUFBTWMsT0FBTixLQUFrQjtBQUMzQixjQUFJZCxHQUFKLEVBQVM7QUFDTFYsWUFBQUEsR0FBRyxDQUFDTSxVQUFKLEdBQWlCLEdBQWpCO0FBQ0FOLFlBQUFBLEdBQUcsQ0FBQ08sU0FBSixDQUFjLGNBQWQsRUFBOEIsa0JBQTlCO0FBQ0NQLFlBQUFBLEdBQUcsQ0FBQ1EsSUFBSixDQUFTO0FBQUVDLGNBQUFBLE9BQU8sRUFBRSxLQUFYO0FBQWtCdUIsY0FBQUEsT0FBTyxFQUFFO0FBQTNCLGFBQVQ7QUFDSjs7QUFDRGhDLFVBQUFBLEdBQUcsQ0FBQ00sVUFBSixHQUFpQixHQUFqQjtBQUNBTixVQUFBQSxHQUFHLENBQUNPLFNBQUosQ0FBYyxjQUFkLEVBQThCLGtCQUE5QjtBQUNBUCxVQUFBQSxHQUFHLENBQUNRLElBQUosQ0FBUztBQUFFQyxZQUFBQSxPQUFPLEVBQUUsSUFBWDtBQUFpQmlCLFlBQUFBLEtBQUssRUFBRUYsT0FBTyxDQUFDRSxLQUFoQztBQUF1Q1EsWUFBQUEsUUFBUSxFQUFFWjtBQUFqRCxXQUFUO0FBQ0gsU0FURDtBQVVIO0FBQ0osS0FuQkw7QUFvQkgsR0FyQkQsQ0FxQkUsT0FBT2EsS0FBUCxFQUFjO0FBQ2JsQyxJQUFBQSxJQUFJLENBQUNTLEdBQUQsQ0FBSjtBQUNGO0FBQ0osQ0FsQ0Q7O0FBb0NBLE1BQU0wQixpQkFBaUIsR0FBRyxDQUFDckMsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDMUNOLEVBQUFBLFFBQVEsQ0FBQzBDLE1BQVQsQ0FBZ0I7QUFBRSxZQUFRO0FBQVYsR0FBaEIsRUFDS2pDLElBREwsQ0FDV2tDLElBQUQsSUFBVTtBQUNadEMsSUFBQUEsR0FBRyxDQUFDTSxVQUFKLEdBQWlCLEdBQWpCO0FBQ0FOLElBQUFBLEdBQUcsQ0FBQ08sU0FBSixDQUFjLGNBQWQsRUFBOEIsa0JBQTlCO0FBQ0FQLElBQUFBLEdBQUcsQ0FBQ1EsSUFBSixDQUFTO0FBQUVDLE1BQUFBLE9BQU8sRUFBRSxJQUFYO0FBQWlCOEIsTUFBQUEsUUFBUSxFQUFFRDtBQUEzQixLQUFUO0FBQ0gsR0FMTCxFQUtRNUIsR0FBRCxJQUFTVCxJQUFJLENBQUNTLEdBQUQsQ0FMcEIsRUFNS0MsS0FOTCxDQU1ZRCxHQUFELElBQVNULElBQUksQ0FBQ1MsR0FBRCxDQU54QjtBQU9ILENBUkQ7O0FBVUE4QixPQUFPLENBQUMxQyxjQUFSLEdBQXlCQSxjQUF6QjtBQUNBMEMsT0FBTyxDQUFDNUIsb0JBQVIsR0FBK0JBLG9CQUEvQjtBQUNBNEIsT0FBTyxDQUFDbkIsVUFBUixHQUFxQkEsVUFBckI7QUFDQW1CLE9BQU8sQ0FBQ0osaUJBQVIsR0FBNEJBLGlCQUE1QixDLENBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxNQUFNSyxxQkFBcUIsR0FBRyxDQUFDMUMsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDOUMsTUFBSXlDLFNBQVMsR0FBRzNDLEdBQUcsQ0FBQzRDLE1BQUosQ0FBV0QsU0FBM0I7QUFDQS9DLEVBQUFBLFFBQVEsQ0FBQ2lELFFBQVQsQ0FBa0JGLFNBQWxCLEVBQ0t0QyxJQURMLENBQ1dvQixPQUFELElBQWE7QUFDZnhCLElBQUFBLEdBQUcsQ0FBQ00sVUFBSixHQUFpQixHQUFqQjtBQUNBTixJQUFBQSxHQUFHLENBQUNPLFNBQUosQ0FBYyxjQUFkLEVBQThCLGtCQUE5QjtBQUNBUCxJQUFBQSxHQUFHLENBQUNRLElBQUosQ0FBUztBQUFFQyxNQUFBQSxPQUFPLEVBQUUsSUFBWDtBQUFpQmUsTUFBQUEsT0FBTyxFQUFFQTtBQUExQixLQUFUO0FBQ0gsR0FMTCxFQUtRZCxHQUFELElBQVM7QUFDUlYsSUFBQUEsR0FBRyxDQUFDTSxVQUFKLEdBQWlCLEdBQWpCO0FBQ0FOLElBQUFBLEdBQUcsQ0FBQ08sU0FBSixDQUFjLGNBQWQsRUFBOEIsa0JBQTlCO0FBQ0FQLElBQUFBLEdBQUcsQ0FBQ1EsSUFBSixDQUFTO0FBQUVDLE1BQUFBLE9BQU8sRUFBRSxLQUFYO0FBQWtCdUIsTUFBQUEsT0FBTyxFQUFFO0FBQTNCLEtBQVQ7QUFDSCxHQVRMLEVBVUtyQixLQVZMLENBVVlELEdBQUQsSUFBU1QsSUFBSSxDQUFDUyxHQUFELENBVnhCO0FBV0gsQ0FiRDs7QUFlQSxNQUFNbUMsd0JBQXdCLEdBQUcsQ0FBQzlDLEdBQUQsRUFBTUMsR0FBTixFQUFXQyxJQUFYLEtBQW9CO0FBRWpETixFQUFBQSxRQUFRLENBQUNtRCxpQkFBVCxDQUEyQi9DLEdBQUcsQ0FBQzRDLE1BQUosQ0FBV0QsU0FBdEMsRUFBaUQ7QUFDN0NLLElBQUFBLElBQUksRUFBRWhELEdBQUcsQ0FBQ2M7QUFEbUMsR0FBakQsRUFFRztBQUFFbUMsSUFBQUEsR0FBRyxFQUFFO0FBQVAsR0FGSCxFQUdLNUMsSUFITCxDQUdXb0IsT0FBRCxJQUFhO0FBQ2Z4QixJQUFBQSxHQUFHLENBQUNNLFVBQUosR0FBaUIsR0FBakI7QUFDQU4sSUFBQUEsR0FBRyxDQUFDTyxTQUFKLENBQWMsY0FBZCxFQUE4QixrQkFBOUI7QUFDQVAsSUFBQUEsR0FBRyxDQUFDUSxJQUFKLENBQVM7QUFBRUMsTUFBQUEsT0FBTyxFQUFFLElBQVg7QUFBaUJlLE1BQUFBLE9BQU8sRUFBRUE7QUFBMUIsS0FBVDtBQUNILEdBUEwsRUFPUWQsR0FBRCxJQUFVO0FBQ1RWLElBQUFBLEdBQUcsQ0FBQ00sVUFBSixHQUFpQixHQUFqQjtBQUNBTixJQUFBQSxHQUFHLENBQUNPLFNBQUosQ0FBYyxjQUFkLEVBQThCLGtCQUE5QjtBQUNBUCxJQUFBQSxHQUFHLENBQUNRLElBQUosQ0FBUztBQUFFQyxNQUFBQSxPQUFPLEVBQUUsS0FBWDtBQUFrQnVCLE1BQUFBLE9BQU8sRUFBRTtBQUEzQixLQUFUO0FBQ0gsR0FYTCxFQVlLckIsS0FaTCxDQVlZRCxHQUFELElBQVNULElBQUksQ0FBQ1MsR0FBRCxDQVp4QjtBQWFILENBZkQ7O0FBaUJBLE1BQU11QyxrQkFBa0IsR0FBRyxDQUFDbEQsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDM0NOLEVBQUFBLFFBQVEsQ0FBQ3VELGlCQUFULENBQTJCbkQsR0FBRyxDQUFDNEMsTUFBSixDQUFXRCxTQUF0QyxFQUNLdEMsSUFETCxDQUNXa0MsSUFBRCxJQUFVO0FBQ1p0QyxJQUFBQSxHQUFHLENBQUNNLFVBQUosR0FBaUIsR0FBakI7QUFDQU4sSUFBQUEsR0FBRyxDQUFDTyxTQUFKLENBQWMsY0FBZCxFQUE4QixrQkFBOUI7QUFDQVAsSUFBQUEsR0FBRyxDQUFDUSxJQUFKLENBQVM7QUFBRUMsTUFBQUEsT0FBTyxFQUFFLElBQVg7QUFBaUI4QixNQUFBQSxRQUFRLEVBQUVEO0FBQTNCLEtBQVQ7QUFDSCxHQUxMLEVBS1E1QixHQUFELElBQVNULElBQUksQ0FBQ1MsR0FBRCxDQUxwQixFQU1LQyxLQU5MLENBTVlELEdBQUQsSUFBU1QsSUFBSSxDQUFDUyxHQUFELENBTnhCO0FBT0gsQ0FSRDs7QUFVQThCLE9BQU8sQ0FBQ0MscUJBQVIsR0FBZ0NBLHFCQUFoQztBQUNBRCxPQUFPLENBQUNLLHdCQUFSLEdBQW1DQSx3QkFBbkM7QUFDQUwsT0FBTyxDQUFDUyxrQkFBUixHQUE2QkEsa0JBQTdCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgVG91cmlzdHMgPSByZXF1aXJlKCcuLi9tb2RlbHMvdXNlcnMnKTtcclxuY29uc3QgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscy91dGlscycpO1xyXG5cclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyBcclxuLy8gICAgICAgICAgICAgIFRvdXJpc3QgT3BlcmF0aW9ucyBcclxuLy8gXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbmNvbnN0IGdldEFsbFRvdXJpc3RzID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICB2YXIgcXVlcnkgPSB7IFwicm9sZVwiOiBcInVzZXJcIiB9O1xyXG4gICAgLy8gdmFyIG9iaiA9IE9iamVjdC5hc3NpZ24ocXVlcnksIHsgJHRleHQ6IHsgJHNlYXJjaDogc2VhcmNoQnkgfSB9KTtcclxuICAgICBUb3VyaXN0cy5maW5kKHF1ZXJ5KVxyXG4gICAgICAgIC50aGVuKCh0b3VyaXN0cykgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCB0b3VyaXN0czogdG91cmlzdHMgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpO1xyXG59XHJcblxyXG5jb25zdCBnZXRBbGxUb3VyaXN0c0J5TmFtZSA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgdmFyIHF1ZXJ5ID0geyBcInJvbGVcIjogXCJ1c2VyXCIgfTtcclxuICAgIGlmIChyZXEuYm9keS5zaW1pbGFyVG8pIHtcclxuICAgICAgICB2YXIgc2VhcmNoQnkgPSByZXEuYm9keS5zaW1pbGFyVG8gfHwge31cclxuICAgICAgICBxdWVyeSA9IHsgXCJyb2xlXCI6IFwidXNlclwiLCAkdGV4dDogeyAkc2VhcmNoOiBzZWFyY2hCeSB9IH1cclxuICAgIH1cclxuXHJcbiAgICB2YXIgc29ydGJ5ID0gcmVxLmJvZHkuc29ydEJ5IHx8IHt9O1xyXG4gICAgVG91cmlzdHMuZmluZChxdWVyeSkuc29ydChzb3J0YnkpXHJcbiAgICAgICAgLnRoZW4oKHRvdXJpc3RzKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHRvdXJpc3RzOiB0b3VyaXN0cyB9KTtcclxuICAgICAgICB9LCAoZXJyKSA9PiBuZXh0KGVycikpXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IG5leHQoZXJyKSk7XHJcbn1cclxuXHJcbmNvbnN0IGFkZFRvdXJpc3QgPSBhc3luYyAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIGNvbnN0IHJhbmRvbVBhc3N3b3JkID0gdXRpbHMucGFzc3dvcmRfZ2VuZXJhdG9yKDEwKTtcclxuICAgIHZhciB0b3VyaXN0ID0ge1xyXG4gICAgICAgIHVzZXJuYW1lOiByZXEuYm9keS5lbWFpbCxcclxuICAgICAgICBmaXJzdG5hbWU6IHJlcS5ib2R5LmZpcnN0bmFtZSxcclxuICAgICAgICBsYXN0bmFtZTogcmVxLmJvZHkubGFzdG5hbWUsXHJcbiAgICAgICAgZW1haWw6IHJlcS5ib2R5LmVtYWlsLFxyXG4gICAgICAgIG1vYmlsZTogcmVxLmJvZHkubW9iaWxlLFxyXG4gICAgICAgIHJvbGU6ICd1c2VyJ1xyXG4gICAgfVxyXG4gICAgdHJ5IHtcclxuICAgICAgICBUb3VyaXN0cy5yZWdpc3RlcihuZXcgVG91cmlzdHModG91cmlzdCksXHJcbiAgICAgICAgICAgIHJhbmRvbVBhc3N3b3JkLCAoZXJyLCB0b3VyaXN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IGZhbHNlLCBtZXNzYWdlOiBlcnIubWVzc2FnZSB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRvdXJpc3Quc2F2ZSgoZXJyLCB0b3VyaXN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNTAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IGZhbHNlLCBtZXNzYWdlOiAnRXJyb3Igd2hpbGUgU2F2aW5nIG5ldyB1c2VyLicgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgZW1haWw6IHRvdXJpc3QuZW1haWwsIHBhc3N3b3JkOiByYW5kb21QYXNzd29yZCB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgbmV4dChlcnIpO1xyXG4gICAgfVxyXG59XHJcblxyXG5jb25zdCBkZWxldGVBbGxUb3VyaXN0cyA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgVG91cmlzdHMucmVtb3ZlKHsgXCJyb2xlXCI6IFwidXNlclwiIH0pXHJcbiAgICAgICAgLnRoZW4oKHJlc3ApID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgcmVzcG9uc2U6IHJlc3AgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpO1xyXG59XHJcblxyXG5leHBvcnRzLmdldEFsbFRvdXJpc3RzID0gZ2V0QWxsVG91cmlzdHM7XHJcbmV4cG9ydHMuZ2V0QWxsVG91cmlzdHNCeU5hbWUgPSBnZXRBbGxUb3VyaXN0c0J5TmFtZTtcclxuZXhwb3J0cy5hZGRUb3VyaXN0ID0gYWRkVG91cmlzdDtcclxuZXhwb3J0cy5kZWxldGVBbGxUb3VyaXN0cyA9IGRlbGV0ZUFsbFRvdXJpc3RzO1xyXG5cclxuXHJcblxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbi8vIFxyXG4vLyAgICAgICAgICAgICAgVG91cmlzdCBPcGVyYXRpb25zIFNwZWNpZmllZCBieSBJRFxyXG4vLyBcclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuY29uc3QgZ2V0VG91cmlzdERldGFpbHNCeUlkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICB2YXIgdG91cmlzdElkID0gcmVxLnBhcmFtcy50b3VyaXN0SWQ7XHJcbiAgICBUb3VyaXN0cy5maW5kQnlJZCh0b3VyaXN0SWQpXHJcbiAgICAgICAgLnRoZW4oKHRvdXJpc3QpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgdG91cmlzdDogdG91cmlzdCB9KTtcclxuICAgICAgICB9LCAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNDA0O1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IGZhbHNlLCBtZXNzYWdlOiAnQ291bGQgbm90IGZpbmQgdG91cmlzdCB3aXRoIGdpdmVuIElEJyB9KTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpOyBcclxufVxyXG5cclxuY29uc3QgdXBkYXRlVG91cmlzdERldGFpbHNCeUlkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICBcclxuICAgIFRvdXJpc3RzLmZpbmRCeUlkQW5kVXBkYXRlKHJlcS5wYXJhbXMudG91cmlzdElkLCB7XHJcbiAgICAgICAgJHNldDogcmVxLmJvZHlcclxuICAgIH0sIHsgbmV3OiB0cnVlIH0pXHJcbiAgICAgICAgLnRoZW4oKHRvdXJpc3QpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgdG91cmlzdDogdG91cmlzdCB9KTtcclxuICAgICAgICB9LCAoZXJyKSA9PiAge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwNDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogJ0NvdWxkIG5vdCBmaW5kIHRvdXJpc3Qgd2l0aCBnaXZlbiBJRCcgfSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuY29uc3QgZGVsZXRlQVRvdXJpc3RCeUlkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICBUb3VyaXN0cy5maW5kQnlJZEFuZFJlbW92ZShyZXEucGFyYW1zLnRvdXJpc3RJZClcclxuICAgICAgICAudGhlbigocmVzcCkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCByZXNwb25zZTogcmVzcCB9KTtcclxuICAgICAgICB9LCAoZXJyKSA9PiBuZXh0KGVycikpXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IG5leHQoZXJyKSk7XHJcbn1cclxuXHJcbmV4cG9ydHMuZ2V0VG91cmlzdERldGFpbHNCeUlkID0gZ2V0VG91cmlzdERldGFpbHNCeUlkO1xyXG5leHBvcnRzLnVwZGF0ZVRvdXJpc3REZXRhaWxzQnlJZCA9IHVwZGF0ZVRvdXJpc3REZXRhaWxzQnlJZDtcclxuZXhwb3J0cy5kZWxldGVBVG91cmlzdEJ5SWQgPSBkZWxldGVBVG91cmlzdEJ5SWQ7XHJcblxyXG5cclxuIl19\",\"originalCode\":\"const Tourists = require('../models/users');\\r\\nconst utils = require('../utils/utils');\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Tourist Operations \\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nconst getAllTourists = (req, res, next) => {\\r\\n var query = { \\\"role\\\": \\\"user\\\" };\\r\\n // var obj = Object.assign(query, { $text: { $search: searchBy } });\\r\\n Tourists.find(query)\\r\\n .then((tourists) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, tourists: tourists });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst getAllTouristsByName = (req, res, next) => {\\r\\n var query = { \\\"role\\\": \\\"user\\\" };\\r\\n if (req.body.similarTo) {\\r\\n var searchBy = req.body.similarTo || {}\\r\\n query = { \\\"role\\\": \\\"user\\\", $text: { $search: searchBy } }\\r\\n }\\r\\n\\r\\n var sortby = req.body.sortBy || {};\\r\\n Tourists.find(query).sort(sortby)\\r\\n .then((tourists) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, tourists: tourists });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst addTourist = async (req, res, next) => {\\r\\n const randomPassword = utils.password_generator(10);\\r\\n var tourist = {\\r\\n username: req.body.email,\\r\\n firstname: req.body.firstname,\\r\\n lastname: req.body.lastname,\\r\\n email: req.body.email,\\r\\n mobile: req.body.mobile,\\r\\n role: 'user'\\r\\n }\\r\\n try {\\r\\n Tourists.register(new Tourists(tourist),\\r\\n randomPassword, (err, tourist) => {\\r\\n if (err) {\\r\\n res.statusCode = 403;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: err.message });\\r\\n }\\r\\n else {\\r\\n tourist.save((err, tourist) => {\\r\\n if (err) {\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Error while Saving new user.' });\\r\\n }\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, email: tourist.email, password: randomPassword });\\r\\n });\\r\\n }\\r\\n });\\r\\n } catch (error) {\\r\\n next(err);\\r\\n }\\r\\n}\\r\\n\\r\\nconst deleteAllTourists = (req, res, next) => {\\r\\n Tourists.remove({ \\\"role\\\": \\\"user\\\" })\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, response: resp });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nexports.getAllTourists = getAllTourists;\\r\\nexports.getAllTouristsByName = getAllTouristsByName;\\r\\nexports.addTourist = addTourist;\\r\\nexports.deleteAllTourists = deleteAllTourists;\\r\\n\\r\\n\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Tourist Operations Specified by ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nconst getTouristDetailsById = (req, res, next) => {\\r\\n var touristId = req.params.touristId;\\r\\n Tourists.findById(touristId)\\r\\n .then((tourist) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, tourist: tourist });\\r\\n }, (err) => {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Could not find tourist with given ID' });\\r\\n })\\r\\n .catch((err) => next(err)); \\r\\n}\\r\\n\\r\\nconst updateTouristDetailsById = (req, res, next) => {\\r\\n \\r\\n Tourists.findByIdAndUpdate(req.params.touristId, {\\r\\n $set: req.body\\r\\n }, { new: true })\\r\\n .then((tourist) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, tourist: tourist });\\r\\n }, (err) => {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Could not find tourist with given ID' });\\r\\n })\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst deleteATouristById = (req, res, next) => {\\r\\n Tourists.findByIdAndRemove(req.params.touristId)\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, response: resp });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nexports.getTouristDetailsById = getTouristDetailsById;\\r\\nexports.updateTouristDetailsById = updateTouristDetailsById;\\r\\nexports.deleteATouristById = deleteATouristById;\\r\\n\\r\\n\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/ff/touristController_ff3455758448d6e0c4e2be11f313067b.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2546\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\touristController.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":20391,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":20388,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"getAllTourists\",\"ranges\":[{\"startOffset\":417,\"endOffset\":790,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getAllTouristsByName\",\"ranges\":[{\"startOffset\":822,\"endOffset\":1347,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"addTourist\",\"ranges\":[{\"startOffset\":1369,\"endOffset\":2534,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"deleteAllTourists\",\"ranges\":[{\"startOffset\":2563,\"endOffset\":2839,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getTouristDetailsById\",\"ranges\":[{\"startOffset\":3278,\"endOffset\":3762,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"updateTouristDetailsById\",\"ranges\":[{\"startOffset\":3798,\"endOffset\":4309,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"deleteATouristById\",\"ranges\":[{\"startOffset\":4339,\"endOffset\":4622,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const express = require('express');\\n\\nconst bodyParser = require('body-parser');\\n\\nconst cors = require('./cors');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nconst dashboardController = require('../controllers/dashboardController');\\n\\nconst dashboardRouter = express.Router();\\ndashboardRouter.use(bodyParser.json());\\ndashboardRouter.route('/admin').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, authenticate.verifyAdmin, dashboardController.getDashboard);\\nmodule.exports = dashboardRouter;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRhc2hib2FyZFJvdXRlci5qcyJdLCJuYW1lcyI6WyJleHByZXNzIiwicmVxdWlyZSIsImJvZHlQYXJzZXIiLCJjb3JzIiwiYXV0aGVudGljYXRlIiwiZGFzaGJvYXJkQ29udHJvbGxlciIsImRhc2hib2FyZFJvdXRlciIsIlJvdXRlciIsInVzZSIsImpzb24iLCJyb3V0ZSIsIm9wdGlvbnMiLCJjb3JzV2l0aE9wdGlvbnMiLCJyZXEiLCJyZXMiLCJzZW5kU3RhdHVzIiwiZ2V0IiwidmVyaWZ5VXNlciIsInZlcmlmeUFkbWluIiwiZ2V0RGFzaGJvYXJkIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsT0FBTyxHQUFHQyxPQUFPLENBQUMsU0FBRCxDQUF2Qjs7QUFDQSxNQUFNQyxVQUFVLEdBQUdELE9BQU8sQ0FBQyxhQUFELENBQTFCOztBQUVBLE1BQU1FLElBQUksR0FBR0YsT0FBTyxDQUFDLFFBQUQsQ0FBcEI7O0FBQ0EsSUFBSUcsWUFBWSxHQUFHSCxPQUFPLENBQUMsNEJBQUQsQ0FBMUI7O0FBQ0EsTUFBTUksbUJBQW1CLEdBQUdKLE9BQU8sQ0FBQyxvQ0FBRCxDQUFuQzs7QUFFQSxNQUFNSyxlQUFlLEdBQUdOLE9BQU8sQ0FBQ08sTUFBUixFQUF4QjtBQUVBRCxlQUFlLENBQUNFLEdBQWhCLENBQW9CTixVQUFVLENBQUNPLElBQVgsRUFBcEI7QUFFQUgsZUFBZSxDQUFDSSxLQUFoQixDQUFzQixRQUF0QixFQUNLQyxPQURMLENBQ2FSLElBQUksQ0FBQ1MsZUFEbEIsRUFDbUMsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEtBQWM7QUFBRUEsRUFBQUEsR0FBRyxDQUFDQyxVQUFKLENBQWUsR0FBZjtBQUFzQixDQUR6RSxFQUVLQyxHQUZMLENBRVNiLElBQUksQ0FBQ0EsSUFGZCxFQUVtQkMsWUFBWSxDQUFDYSxVQUZoQyxFQUU0Q2IsWUFBWSxDQUFDYyxXQUZ6RCxFQUVzRWIsbUJBQW1CLENBQUNjLFlBRjFGO0FBSUFDLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQmYsZUFBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBleHByZXNzID0gcmVxdWlyZSgnZXhwcmVzcycpO1xyXG5jb25zdCBib2R5UGFyc2VyID0gcmVxdWlyZSgnYm9keS1wYXJzZXInKTtcclxuXHJcbmNvbnN0IGNvcnMgPSByZXF1aXJlKCcuL2NvcnMnKTtcclxudmFyIGF1dGhlbnRpY2F0ZSA9IHJlcXVpcmUoJy4uL21pZGRsZXdhcmUvYXV0aGVudGljYXRlJyk7XHJcbmNvbnN0IGRhc2hib2FyZENvbnRyb2xsZXIgPSByZXF1aXJlKCcuLi9jb250cm9sbGVycy9kYXNoYm9hcmRDb250cm9sbGVyJyk7XHJcblxyXG5jb25zdCBkYXNoYm9hcmRSb3V0ZXIgPSBleHByZXNzLlJvdXRlcigpO1xyXG5cclxuZGFzaGJvYXJkUm91dGVyLnVzZShib2R5UGFyc2VyLmpzb24oKSk7XHJcblxyXG5kYXNoYm9hcmRSb3V0ZXIucm91dGUoJy9hZG1pbicpXHJcbiAgICAub3B0aW9ucyhjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcbiAgICAuZ2V0KGNvcnMuY29ycyxhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeUFkbWluLCBkYXNoYm9hcmRDb250cm9sbGVyLmdldERhc2hib2FyZCk7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IGRhc2hib2FyZFJvdXRlcjsiXX0=\",\"originalCode\":\"const express = require('express');\\r\\nconst bodyParser = require('body-parser');\\r\\n\\r\\nconst cors = require('./cors');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\nconst dashboardController = require('../controllers/dashboardController');\\r\\n\\r\\nconst dashboardRouter = express.Router();\\r\\n\\r\\ndashboardRouter.use(bodyParser.json());\\r\\n\\r\\ndashboardRouter.route('/admin')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors,authenticate.verifyUser, authenticate.verifyAdmin, dashboardController.getDashboard);\\r\\n\\r\\nmodule.exports = dashboardRouter;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/07/dashboardRouter_0791a49f2f45fc0f57ade98f27175c5c.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2547\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\dashboardRouter.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":2824,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":2821,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":482,\"endOffset\":522,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const Place = require('../models/visitingPlaces');\\n\\nconst User = require('../models/users');\\n\\nconst Schedule = require('../models/schedules');\\n\\nexports.getDashboard = async (req, res, next) => {\\n try {\\n const users_count = (await User.find().countDocuments()) - 1;\\n const tourist_count_total = await User.find({\\n \\\"role\\\": \\\"user\\\"\\n }).countDocuments();\\n const assistant_count_total = await User.find({\\n \\\"role\\\": \\\"moderater\\\"\\n }).countDocuments();\\n const tourist_count_in = await User.find({\\n \\\"role\\\": \\\"user\\\",\\n \\\"userstate\\\": \\\"in\\\"\\n }).countDocuments();\\n const place_count = await Place.find().countDocuments();\\n const place_names = await Place.find({}, {\\n _id: 0,\\n name: 1\\n });\\n const place_locations = await Place.find({}, {\\n _id: 0,\\n \\\"location.coordinates\\\": 1\\n });\\n var locations = [];\\n place_locations.forEach(element => {\\n var longitude = element.location.coordinates[0];\\n var latitude = element.location.coordinates[1];\\n locations.push({\\n longitude,\\n latitude\\n });\\n });\\n const schedules_count_total = await Schedule.find().countDocuments();\\n const schedules_count_new = await Schedule.find({\\n \\\"state\\\": \\\"new\\\"\\n }).countDocuments();\\n const schedules_count_canceled = await Schedule.find({\\n \\\"state\\\": \\\"cancled\\\"\\n }).countDocuments();\\n const schedules_count_notcompleted = await Schedule.find({\\n \\\"state\\\": \\\"notcompleted\\\"\\n }).countDocuments();\\n const schedules_count_completed = await Schedule.find({\\n \\\"state\\\": \\\"completed\\\"\\n }).countDocuments();\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n dashboardValues: {\\n users_count: users_count,\\n tourist_count_total: tourist_count_total,\\n assistant_count_total: assistant_count_total,\\n tourist_count_in: tourist_count_in,\\n place_count: place_count,\\n place_names: place_names,\\n place_locations: locations,\\n schedules_count_total: schedules_count_total,\\n schedules_count_new: schedules_count_new,\\n schedules_count_canceled: schedules_count_canceled,\\n schedules_count_notcompleted: schedules_count_notcompleted,\\n schedules_count_completed: schedules_count_completed\\n }\\n });\\n } catch (err) {\\n next(err);\\n }\\n};\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRhc2hib2FyZENvbnRyb2xsZXIuanMiXSwibmFtZXMiOlsiUGxhY2UiLCJyZXF1aXJlIiwiVXNlciIsIlNjaGVkdWxlIiwiZXhwb3J0cyIsImdldERhc2hib2FyZCIsInJlcSIsInJlcyIsIm5leHQiLCJ1c2Vyc19jb3VudCIsImZpbmQiLCJjb3VudERvY3VtZW50cyIsInRvdXJpc3RfY291bnRfdG90YWwiLCJhc3Npc3RhbnRfY291bnRfdG90YWwiLCJ0b3VyaXN0X2NvdW50X2luIiwicGxhY2VfY291bnQiLCJwbGFjZV9uYW1lcyIsIl9pZCIsIm5hbWUiLCJwbGFjZV9sb2NhdGlvbnMiLCJsb2NhdGlvbnMiLCJmb3JFYWNoIiwiZWxlbWVudCIsImxvbmdpdHVkZSIsImxvY2F0aW9uIiwiY29vcmRpbmF0ZXMiLCJsYXRpdHVkZSIsInB1c2giLCJzY2hlZHVsZXNfY291bnRfdG90YWwiLCJzY2hlZHVsZXNfY291bnRfbmV3Iiwic2NoZWR1bGVzX2NvdW50X2NhbmNlbGVkIiwic2NoZWR1bGVzX2NvdW50X25vdGNvbXBsZXRlZCIsInNjaGVkdWxlc19jb3VudF9jb21wbGV0ZWQiLCJzdGF0dXNDb2RlIiwic2V0SGVhZGVyIiwianNvbiIsInN1Y2Nlc3MiLCJkYXNoYm9hcmRWYWx1ZXMiLCJlcnIiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLEtBQUssR0FBR0MsT0FBTyxDQUFDLDBCQUFELENBQXJCOztBQUNBLE1BQU1DLElBQUksR0FBR0QsT0FBTyxDQUFDLGlCQUFELENBQXBCOztBQUNBLE1BQU1FLFFBQVEsR0FBR0YsT0FBTyxDQUFDLHFCQUFELENBQXhCOztBQUVBRyxPQUFPLENBQUNDLFlBQVIsR0FBdUIsT0FBT0MsR0FBUCxFQUFZQyxHQUFaLEVBQWlCQyxJQUFqQixLQUEwQjtBQUM3QyxNQUFJO0FBQ0EsVUFBTUMsV0FBVyxHQUFHLE9BQU1QLElBQUksQ0FBQ1EsSUFBTCxHQUFZQyxjQUFaLEVBQU4sSUFBcUMsQ0FBekQ7QUFDQSxVQUFNQyxtQkFB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QUFFQSw0QkFYRjtBQVk1QkMsUUFBQUEseUJBQXlCLEVBQUVBO0FBWkM7QUFEM0IsS0FBVDtBQWdCSCxHQXRDRCxDQXNDRSxPQUFPTSxHQUFQLEVBQVk7QUFDVjlCLElBQUFBLElBQUksQ0FBQzhCLEdBQUQsQ0FBSjtBQUNIO0FBQ0osQ0ExQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBQbGFjZSA9IHJlcXVpcmUoJy4uL21vZGVscy92aXNpdGluZ1BsYWNlcycpO1xyXG5jb25zdCBVc2VyID0gcmVxdWlyZSgnLi4vbW9kZWxzL3VzZXJzJyk7XHJcbmNvbnN0IFNjaGVkdWxlID0gcmVxdWlyZSgnLi4vbW9kZWxzL3NjaGVkdWxlcycpO1xyXG5cclxuZXhwb3J0cy5nZXREYXNoYm9hcmQgPSBhc3luYyAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgICAgY29uc3QgdXNlcnNfY291bnQgPSBhd2FpdCBVc2VyLmZpbmQoKS5jb3VudERvY3VtZW50cygpIC0gMTtcclxuICAgICAgICBjb25zdCB0b3VyaXN0X2NvdW50X3RvdGFsID0gYXdhaXQgVXNlci5maW5kKHsgXCJyb2xlXCI6IFwidXNlclwiIH0pLmNvdW50RG9jdW1lbnRzKCk7XHJcbiAgICAgICAgY29uc3QgYXNzaXN0YW50X2NvdW50X3RvdGFsID0gYXdhaXQgVXNlci5maW5kKHsgXCJyb2xlXCI6IFwibW9kZXJhdGVyXCIgfSkuY291bnREb2N1bWVudHMoKTtcclxuICAgICAgICBjb25zdCB0b3VyaXN0X2NvdW50X2luID0gYXdhaXQgVXNlci5maW5kKHsgXCJyb2xlXCI6IFwidXNlclwiLCBcInVzZXJzdGF0ZVwiOiBcImluXCIgfSkuY291bnREb2N1bWVudHMoKTtcclxuICAgICAgICBjb25zdCBwbGFjZV9jb3VudCA9IGF3YWl0IFBsYWNlLmZpbmQoKS5jb3VudERvY3VtZW50cygpO1xyXG4gICAgICAgIGNvbnN0IHBsYWNlX25hbWVzID0gYXdhaXQgUGxhY2UuZmluZCh7fSwgeyBfaWQ6IDAsIG5hbWU6IDEgfSk7XHJcbiAgICAgICAgY29uc3QgcGxhY2VfbG9jYXRpb25zID0gYXdhaXQgUGxhY2UuZmluZCh7fSwgeyBfaWQ6IDAsIFwibG9jYXRpb24uY29vcmRpbmF0ZXNcIjogMSB9KTtcclxuICAgICAgICB2YXIgbG9jYXRpb25zID0gW107XHJcbiAgICAgICAgcGxhY2VfbG9jYXRpb25zLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICAgIHZhciBsb25naXR1ZGUgPSBlbGVtZW50LmxvY2F0aW9uLmNvb3JkaW5hdGVzWzBdO1xyXG4gICAgICAgICAgICB2YXIgbGF0aXR1ZGUgPSBlbGVtZW50LmxvY2F0aW9uLmNvb3JkaW5hdGVzWzFdO1xyXG4gICAgICAgICAgICBsb2NhdGlvbnMucHVzaCh7IGxvbmdpdHVkZSwgbGF0aXR1ZGUgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgY29uc3Qgc2NoZWR1bGVzX2NvdW50X3RvdGFsID0gYXdhaXQgU2NoZWR1bGUuZmluZCgpLmNvdW50RG9jdW1lbnRzKCk7XHJcbiAgICAgICAgY29uc3Qgc2NoZWR1bGVzX2NvdW50X25ldyA9IGF3YWl0IFNjaGVkdWxlLmZpbmQoeyBcInN0YXRlXCI6IFwibmV3XCIgfSkuY291bnREb2N1bWVudHMoKTtcclxuICAgICAgICBjb25zdCBzY2hlZHVsZXNfY291bnRfY2FuY2VsZWQgPSBhd2FpdCBTY2hlZHVsZS5maW5kKHsgXCJzdGF0ZVwiOiBcImNhbmNsZWRcIiB9KS5jb3VudERvY3VtZW50cygpO1xyXG4gICAgICAgIGNvbnN0IHNjaGVkdWxlc19jb3VudF9ub3Rjb21wbGV0ZWQgPSBhd2FpdCBTY2hlZHVsZS5maW5kKHsgXCJzdGF0ZVwiOiBcIm5vdGNvbXBsZXRlZFwiIH0pLmNvdW50RG9jdW1lbnRzKCk7XHJcbiAgICAgICAgY29uc3Qgc2NoZWR1bGVzX2NvdW50X2NvbXBsZXRlZCA9IGF3YWl0IFNjaGVkdWxlLmZpbmQoeyBcInN0YXRlXCI6IFwiY29tcGxldGVkXCIgfSkuY291bnREb2N1bWVudHMoKTtcclxuXHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICByZXMuanNvbih7XHJcbiAgICAgICAgICAgIHN1Y2Nlc3M6IHRydWUsIGRhc2hib2FyZFZhbHVlczoge1xyXG4gICAgICAgICAgICAgICAgdXNlcnNfY291bnQ6IHVzZXJzX2NvdW50LFxyXG4gICAgICAgICAgICAgICAgdG91cmlzdF9jb3VudF90b3RhbDogdG91cmlzdF9jb3VudF90b3RhbCxcclxuICAgICAgICAgICAgICAgIGFzc2lzdGFudF9jb3VudF90b3RhbDogYXNzaXN0YW50X2NvdW50X3RvdGFsLFxyXG4gICAgICAgICAgICAgICAgdG91cmlzdF9jb3VudF9pbjogdG91cmlzdF9jb3VudF9pbixcclxuICAgICAgICAgICAgICAgIHBsYWNlX2NvdW50OiBwbGFjZV9jb3VudCxcclxuICAgICAgICAgICAgICAgIHBsYWNlX25hbWVzOiBwbGFjZV9uYW1lcyxcclxuICAgICAgICAgICAgICAgIHBsYWNlX2xvY2F0aW9uczogbG9jYXRpb25zLFxyXG4gICAgICAgICAgICAgICAgc2NoZWR1bGVzX2NvdW50X3RvdGFsOiBzY2hlZHVsZXNfY291bnRfdG90YWwsXHJcbiAgICAgICAgICAgICAgICBzY2hlZHVsZXNfY291bnRfbmV3OiBzY2hlZHVsZXNfY291bnRfbmV3LFxyXG4gICAgICAgICAgICAgICAgc2NoZWR1bGVzX2NvdW50X2NhbmNlbGVkOiBzY2hlZHVsZXNfY291bnRfY2FuY2VsZWQsXHJcbiAgICAgICAgICAgICAgICBzY2hlZHVsZXNfY291bnRfbm90Y29tcGxldGVkOiBzY2hlZHVsZXNfY291bnRfbm90Y29tcGxldGVkLFxyXG4gICAgICAgICAgICAgICAgc2NoZWR1bGVzX2NvdW50X2NvbXBsZXRlZDogc2NoZWR1bGVzX2NvdW50X2NvbXBsZXRlZFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICBuZXh0KGVycik7XHJcbiAgICB9XHJcbn1cclxuXHJcbiJdfQ==\",\"originalCode\":\"const Place = require('../models/visitingPlaces');\\r\\nconst User = require('../models/users');\\r\\nconst Schedule = require('../models/schedules');\\r\\n\\r\\nexports.getDashboard = async (req, res, next) => {\\r\\n try {\\r\\n const users_count = await User.find().countDocuments() - 1;\\r\\n const tourist_count_total = await User.find({ \\\"role\\\": \\\"user\\\" }).countDocuments();\\r\\n const assistant_count_total = await User.find({ \\\"role\\\": \\\"moderater\\\" }).countDocuments();\\r\\n const tourist_count_in = await User.find({ \\\"role\\\": \\\"user\\\", \\\"userstate\\\": \\\"in\\\" }).countDocuments();\\r\\n const place_count = await Place.find().countDocuments();\\r\\n const place_names = await Place.find({}, { _id: 0, name: 1 });\\r\\n const place_locations = await Place.find({}, { _id: 0, \\\"location.coordinates\\\": 1 });\\r\\n var locations = [];\\r\\n place_locations.forEach(element => {\\r\\n var longitude = element.location.coordinates[0];\\r\\n var latitude = element.location.coordinates[1];\\r\\n locations.push({ longitude, latitude });\\r\\n });\\r\\n const schedules_count_total = await Schedule.find().countDocuments();\\r\\n const schedules_count_new = await Schedule.find({ \\\"state\\\": \\\"new\\\" }).countDocuments();\\r\\n const schedules_count_canceled = await Schedule.find({ \\\"state\\\": \\\"cancled\\\" }).countDocuments();\\r\\n const schedules_count_notcompleted = await Schedule.find({ \\\"state\\\": \\\"notcompleted\\\" }).countDocuments();\\r\\n const schedules_count_completed = await Schedule.find({ \\\"state\\\": \\\"completed\\\" }).countDocuments();\\r\\n\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({\\r\\n success: true, dashboardValues: {\\r\\n users_count: users_count,\\r\\n tourist_count_total: tourist_count_total,\\r\\n assistant_count_total: assistant_count_total,\\r\\n tourist_count_in: tourist_count_in,\\r\\n place_count: place_count,\\r\\n place_names: place_names,\\r\\n place_locations: locations,\\r\\n schedules_count_total: schedules_count_total,\\r\\n schedules_count_new: schedules_count_new,\\r\\n schedules_count_canceled: schedules_count_canceled,\\r\\n schedules_count_notcompleted: schedules_count_notcompleted,\\r\\n schedules_count_completed: schedules_count_completed\\r\\n }\\r\\n });\\r\\n } catch (err) {\\r\\n next(err);\\r\\n }\\r\\n}\\r\\n\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/34/dashboardController_34872bbac017cfae6fcc33926d204118.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2548\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\dashboardController.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":9854,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":9851,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
.exports.getDashboard\",\"ranges\":[{\"startOffset\":256,\"endOffset\":2463,\"count\":1},{\"startOffset\":2429,\"endOffset\":2461,\"count\":0}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":976,\"endOffset\":1172,\"count\":3}],\"isBlockCoverage\":true}]}},{\"codeTransformResult\":{\"code\":\"const app = require('../../app');\\n\\nconst server = require(\\\"supertest\\\")(app);\\n\\nconst jwt_decode = require('jwt-decode');\\n\\nconst Users = require('../../models/users');\\n\\nvar userToken;\\nvar assistantToken;\\nvar adminToken;\\nvar passwordAssistant;\\nvar passwordUser;\\nconst admin = {\\n \\\"firstname\\\": \\\"Admin\\\",\\n \\\"lastname\\\": \\\"Admin\\\",\\n \\\"email\\\": \\\"admin@gmail.com\\\",\\n \\\"password\\\": \\\"admin-password\\\"\\n};\\nconst assistant = {\\n \\\"firstname\\\": \\\"Pasan\\\",\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\n \\\"email\\\": \\\"pasanFernamdo@gmail.com\\\"\\n};\\nconst tourist = {\\n \\\"firstname\\\": \\\"Sunil\\\",\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\n \\\"email\\\": \\\"sunilFernamdo@gmail.com\\\"\\n};\\n\\nconst signupAdmin = async () => {\\n await Users.deleteMany({});\\n await server.post(\\\"/users/signup/admin\\\").send(admin);\\n};\\n\\nconst getAdminToken = async () => {\\n if (adminToken) {\\n return adminToken;\\n }\\n\\n await signupAdmin();\\n var creds = {\\n username: admin.email,\\n password: admin.password\\n };\\n const response = await server.post(\\\"/users/login\\\").send(creds);\\n adminToken = response.body.token;\\n return adminToken;\\n};\\n\\nconst addAssistant = async () => {\\n if (!adminToken) {\\n await getAdminToken();\\n }\\n\\n const response = await server.post(\\\"/employees\\\").set(\\\"Authorization\\\", `Bearer ${adminToken}`).send(assistant).expect(200);\\n passwordAssistant = response.body.password;\\n};\\n\\nconst getAssistantToken = async () => {\\n if (assistantToken) {\\n return assistantToken;\\n }\\n\\n if (passwordAssistant == null) {\\n await addAssistant();\\n }\\n\\n var creds = {\\n username: assistant.email,\\n password: passwordAssistant\\n };\\n const response = await server.post(\\\"/users/login\\\").send(creds);\\n assistantToken = response.body.token;\\n return assistantToken;\\n};\\n\\nconst addTourist = async () => {\\n if (!assistantToken) {\\n await getAssistantToken();\\n }\\n\\n const response = await server.post(\\\"/tourists\\\").set(\\\"Authorization\\\", `Bearer ${assistantToken}`).send(tourist).expect(200);\\n passwordUser = response.body.password;\\n};\\n\\nconst getTouristToken = async () => {\\n if (userToken) {\\n return userToken;\\n }\\n\\n if (passwordUser == null) {\\n await addTourist();\\n }\\n\\n var creds = {\\n username: tourist.email,\\n password: passwordUser\\n };\\n const response = await server.post(\\\"/users/login\\\").send(creds);\\n userToken = response.body.token;\\n return userToken;\\n};\\n\\nconst getExistingId = async () => {\\n const newTourist = {\\n \\\"firstname\\\": \\\"Namal\\\",\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\n \\\"email\\\": \\\"namalfernamdo@gmail.com\\\",\\n \\\"mobile\\\": \\\"981114844\\\",\\n \\\"rommnumber\\\": \\\"41\\\"\\n };\\n const tourist = new Users(newTourist);\\n await tourist.save();\\n return tourist._id.toString();\\n};\\n\\nconst getNonExistingId = async () => {\\n const newTourist = {\\n \\\"firstname\\\": \\\"Kamal\\\",\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\n \\\"email\\\": \\\"kamalfernamdo@gmail.com\\\",\\n \\\"username\\\": \\\"kamalfernamdo@gmail.com\\\"\\n };\\n const tourist = new Users(newTourist);\\n await tourist.save();\\n await tourist.remove();\\n return tourist._id.toString();\\n};\\n\\nconst getExistingIdAssistanct = async () => {\\n const newAssistant = {\\n \\\"firstname\\\": \\\"Kasun\\\",\\n \\\"lastname\\\": \\\"Perera\\\",\\n \\\"email\\\": \\\"kasun@gmail.com\\\"\\n };\\n const assistant = new Users(newAssistant);\\n await assistant.save();\\n return assistant._id.toString();\\n};\\n\\nconst getNonExistingIdAssistant = async () => {\\n const newAssistant = {\\n \\\"firstname\\\": \\\"Kamal\\\",\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\n \\\"email\\\": \\\"kamalfernamdo@gmail.com\\\"\\n };\\n const assistant = new Users(newAssistant);\\n await assistant.save();\\n await assistant.remove();\\n return assistant._id.toString();\\n};\\n\\nconst decodeToken = token => {\\n var decoded = jwt_decode(token);\\n return decoded;\\n};\\n\\nmodule.exports = {\\n getAdminToken,\\n getAssistantToken,\\n getTouristToken,\\n decodeToken,\\n addTourist,\\n getTouristToken,\\n getExistingId,\\n getNonExistingId,\\n getExistingIdAssistanct,\\n getNonExistingIdAssistant,\\n addAssistant\\n};\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVzZXJfaGVscGVyLmpzIl0sIm5hbWVzIjpbImFwcCIsInJlcXVpcmUiLCJzZXJ2ZXIiLCJqd3RfZGVjb2RlIiwiVXNlcnMiLCJ1c2VyVG9rZW4iLCJhc3Npc3RhbnRUb2tlbiIsImFkbWluVG9rZW4iLCJwYXNzd29yZEFzc2lzdGFudCIsInBhc3N3b3JkVXNlciIsImFkbWluIiwiYXNzaXN0YW50IiwidG91cmlzdCIsInNpZ251cEFkbWluIiwiZGVsZXRlTWFueSIsInBvc3QiLCJzZW5kIiwiZ2V0QWRtaW5Ub2tlbiIsImNyZWRzIiwidXNlcm5hbWUiLCJlbWFpbCIsInBhc3N3b3JkIiwicmVzcG9uc2UiLCJib2R5IiwidG9rZW4iLCJhZGRBc3Npc3RhbnQiLCJzZXQiLCJleHBlY3QiLCJnZXRBc3Npc3RhbnRUb2tlbiIsImFkZFRvdXJpc3QiLCJnZXRUb3VyaXN0VG9rZW4iLCJnZXRFeGlzdGluZ0lkIiwibmV3VG91cmlzdCIsInNhdmUiLCJfaWQiLCJ0b1N0cmluZyIsImdldE5vbkV4aXN0aW5nSWQiLCJyZW1vdmUiLCJnZXRFeGlzdGluZ0lkQXNzaXN0YW5jdCIsIm5ld0Fzc2lzdGFudCIsImdldE5vbkV4aXN0aW5nSWRBc3Npc3RhbnQiLCJkZWNvZGVUb2tlbiIsImRlY29kZWQiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxHQUFHLEdBQUdDLE9BQU8sQ0FBQyxXQUFELENBQW5COztBQUNBLE1BQU1DLE1BQU0sR0FBR0QsT0FBTyxDQUFDLFdBQUQsQ0FBUCxDQUFxQkQsR0FBckIsQ0FBZjs7QUFDQSxNQUFNRyxVQUFVLEdBQUdGLE9BQU8sQ0FBQyxZQUFELENBQTFCOztBQUNBLE1BQU1HLEtBQUssR0FBR0gsT0FBTyxDQUFDLG9CQUFELENBQXJCOztBQUVBLElBQUlJLFNBQUo7QUFDQSxJQUFJQyxjQUFKO0FBQ0EsSUFBSUMsVUFBSjtBQUNBLElBQUlDLGlCQUFKO0FBQ0EsSUFBSUMsWUFBSjtBQUVBLE1BQU1DLEtB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dGVudCI6WyJjb25zdCBhcHAgPSByZXF1aXJlKCcuLi8uLi9hcHAnKTtcclxuY29uc3Qgc2VydmVyID0gcmVxdWlyZShcInN1cGVydGVzdFwiKShhcHApO1xyXG5jb25zdCBqd3RfZGVjb2RlID0gcmVxdWlyZSgnand0LWRlY29kZScpO1xyXG5jb25zdCBVc2VycyA9IHJlcXVpcmUoJy4uLy4uL21vZGVscy91c2VycycpO1xyXG5cclxudmFyIHVzZXJUb2tlbjtcclxudmFyIGFzc2lzdGFudFRva2VuO1xyXG52YXIgYWRtaW5Ub2tlbjtcclxudmFyIHBhc3N3b3JkQXNzaXN0YW50O1xyXG52YXIgcGFzc3dvcmRVc2VyO1xyXG5cclxuY29uc3QgYWRtaW4gPSB7XHJcbiAgICBcImZpcnN0bmFtZVwiOiBcIkFkbWluXCIsXHJcbiAgICBcImxhc3RuYW1lXCI6IFwiQWRtaW5cIixcclxuICAgIFwiZW1haWxcIjogXCJhZG1pbkBnbWFpbC5jb21cIixcclxuICAgIFwicGFzc3dvcmRcIjogXCJhZG1pbi1wYXNzd29yZFwiXHJcbn07XHJcbmNvbnN0IGFzc2lzdGFudCA9IHtcclxuICAgIFwiZmlyc3RuYW1lXCI6IFwiUGFzYW5cIixcclxuICAgIFwibGFzdG5hbWVcIjogXCJGZXJuYW1kb1wiLFxyXG4gICAgXCJlbWFpbFwiOiBcInBhc2FuRmVybmFtZG9AZ21haWwuY29tXCJcclxufTtcclxuY29uc3QgdG91cmlzdCA9IHtcclxuICAgIFwiZmlyc3RuYW1lXCI6IFwiU3VuaWxcIixcclxuICAgIFwibGFzdG5hbWVcIjogXCJGZXJuYW1kb1wiLFxyXG4gICAgXCJlbWFpbFwiOiBcInN1bmlsRmVybmFtZG9AZ21haWwuY29tXCJcclxufTtcclxuXHJcbmNvbnN0IHNpZ251cEFkbWluID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgYXdhaXQgVXNlcnMuZGVsZXRlTWFueSh7fSk7XHJcbiAgICBhd2FpdCBzZXJ2ZXJcclxuICAgICAgICAucG9zdChcIi91c2Vycy9zaWdudXAvYWRtaW5cIilcclxuICAgICAgICAuc2VuZChhZG1pbik7XHJcbn07XHJcblxyXG5jb25zdCBnZXRBZG1pblRva2VuID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgaWYgKGFkbWluVG9rZW4pIHtcclxuICAgICAgICByZXR1cm4gYWRtaW5Ub2tlbjtcclxuICAgIH1cclxuICAgIGF3YWl0IHNpZ251cEFkbWluKCk7XHJcbiAgICB2YXIgY3JlZHMgPSB7XHJcbiAgICAgICAgdXNlcm5hbWU6IGFkbWluLmVtYWlsLFxyXG4gICAgICAgIHBhc3N3b3JkOiBhZG1pbi5wYXNzd29yZCxcclxuICAgIH07XHJcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHNlcnZlclxyXG4gICAgICAgIC5wb3N0KFwiL3VzZXJzL2xvZ2luXCIpXHJcbiAgICAgICAgLnNlbmQoY3JlZHMpO1xyXG4gICAgYWRtaW5Ub2tlbiA9IHJlc3BvbnNlLmJvZHkudG9rZW47XHJcbiAgICByZXR1cm4gYWRtaW5Ub2tlbjtcclxufVxyXG5cclxuY29uc3QgYWRkQXNzaXN0YW50ID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgaWYgKCFhZG1pblRva2VuKSB7XHJcbiAgICAgICAgYXdhaXQgZ2V0QWRtaW5Ub2tlbigpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBzZXJ2ZXJcclxuICAgICAgICAucG9zdChcIi9lbXBsb3llZXNcIilcclxuICAgICAgICAuc2V0KFwiQXV0aG9yaXphdGlvblwiLCBgQmVhcmVyICR7YWRtaW5Ub2tlbn1gKVxyXG4gICAgICAgIC5zZW5kKGFzc2lzdGFudClcclxuICAgICAgICAuZXhwZWN0KDIwMCk7XHJcbiAgICAgICAgICAgXHJcbiAgICBwYXNzd29yZEFzc2lzdGFudCA9ICByZXNwb25zZS5ib2R5LnBhc3N3b3JkO1xyXG59O1xyXG5cclxuY29uc3QgZ2V0QXNzaXN0YW50VG9rZW4gPSBhc3luYyAoKSA9PiB7XHJcbiAgICBpZiAoYXNzaXN0YW50VG9rZW4pIHtcclxuICAgICAgICByZXR1cm4gYXNzaXN0YW50VG9rZW47XHJcbiAgICB9XHJcbiAgICBpZihwYXNzd29yZEFzc2lzdGFudD09bnVsbCl7YXdhaXQgYWRkQXNzaXN0YW50KCk7fVxyXG4gICAgdmFyIGNyZWRzID0ge1xyXG4gICAgICAgIHVzZXJuYW1lOiBhc3Npc3RhbnQuZW1haWwsXHJcbiAgICAgICAgcGFzc3dvcmQ6IHBhc3N3b3JkQXNzaXN0YW50LFxyXG4gICAgfTtcclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgc2VydmVyXHJcbiAgICAgICAgLnBvc3QoXCIvdXNlcnMvbG9naW5cIilcclxuICAgICAgICAuc2VuZChjcmVkcyk7XHJcbiAgICBhc3Npc3RhbnRUb2tlbiA9IHJlc3BvbnNlLmJvZHkudG9rZW47XHJcbiAgICByZXR1cm4gYXNzaXN0YW50VG9rZW47XHJcbn1cclxuXHJcbmNvbnN0IGFkZFRvdXJpc3QgPSBhc3luYyAoKSA9PiB7XHJcbiAgICBpZiAoIWFzc2lzdGFudFRva2VuKSB7XHJcbiAgICAgICAgYXdhaXQgZ2V0QXNzaXN0YW50VG9rZW4oKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgc2VydmVyXHJcbiAgICAgICAgLnBvc3QoXCIvdG91cmlzdHNcIilcclxuICAgICAgICAuc2V0KFwiQXV0aG9yaXphdGlvblwiLCBgQmVhcmVyICR7YXNzaXN0YW50VG9rZW59YClcclxuICAgICAgICAuc2VuZCh0b3VyaXN0KVxyXG4gICAgICAgIC5leHBlY3QoMjAwKTtcclxuICAgIHBhc3N3b3JkVXNlcj0gIHJlc3BvbnNlLmJvZHkucGFzc3dvcmQ7XHJcbn07XHJcbiBcclxuXHJcbmNvbnN0IGdldFRvdXJpc3RUb2tlbiA9IGFzeW5jICgpID0+IHtcclxuICAgIGlmICh1c2VyVG9rZW4pIHtcclxuICAgICAgICByZXR1cm4gdXNlclRva2VuO1xyXG4gICAgfVxyXG4gICAgaWYocGFzc3dvcmRVc2VyID09IG51bGwpIHsgYXdhaXQgYWRkVG91cmlzdCgpO31cclxuICAgIHZhciBjcmVkcyA9IHtcclxuICAgICAgICB1c2VybmFtZTogdG91cmlzdC5lbWFpbCxcclxuICAgICAgICBwYXNzd29yZDogcGFzc3dvcmRVc2VyLFxyXG4gICAgfTtcclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgc2VydmVyXHJcbiAgICAgICAgLnBvc3QoXCIvdXNlcnMvbG9naW5cIilcclxuICAgICAgICAuc2VuZChjcmVkcyk7XHJcbiAgICB1c2VyVG9rZW4gPSByZXNwb25zZS5ib2R5LnRva2VuO1xyXG4gICAgcmV0dXJuIHVzZXJUb2tlbjtcclxufVxyXG5cclxuY29uc3QgZ2V0RXhpc3RpbmdJZCA9IGFzeW5jICgpID0+IHtcclxuICAgIGNvbnN0IG5ld1RvdXJpc3QgPSB7XHJcbiAgICAgICAgXCJmaXJzdG5hbWVcIjogXCJOYW1hbFwiLFxyXG4gICAgICAgIFwibGFzdG5hbWVcIjogXCJGZXJuYW1kb1wiLFxyXG4gICAgICAgIFwiZW1haWxcIjogXCJuYW1hbGZlcm5hbWRvQGdtYWlsLmNvbVwiLFxyXG4gICAgICAgIFwibW9iaWxlXCI6IFwiOTgxMTE0ODQ0XCIsXHJcbiAgICAgICAgXCJyb21tbnVtYmVyXCIgOiBcIjQxXCIsXHJcblxyXG4gICAgfVxyXG4gICAgY29uc3QgdG91cmlzdCA9IG5ldyBVc2VycyhuZXdUb3VyaXN0KTtcclxuICAgIGF3YWl0IHRvdXJpc3Quc2F2ZSgpO1xyXG5cclxuICAgIHJldHVybiB0b3VyaXN0Ll9pZC50b1N0cmluZygpO1xyXG5cclxuICAgIFxyXG59XHJcblxyXG5jb25zdCBnZXROb25FeGlzdGluZ0lkID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgY29uc3QgbmV3VG91cmlzdCA9IHtcclxuICAgICAgICBcImZpcnN0bmFtZVwiOiBcIkthbWFsXCIsXHJcbiAgICAgICAgXCJsYXN0bmFtZVwiOiBcIkZlcm5hbWRvXCIsXHJcbiAgICAgICAgXCJlbWFpbFwiOiBcImthbWFsZmVybmFtZG9AZ21haWwuY29tXCIsXHJcbiAgICAgICAgXCJ1c2VybmFtZVwiOiBcImthbWFsZmVybmFtZG9AZ21haWwuY29tXCJcclxuICAgIH1cclxuICAgIGNvbnN0IHRvdXJpc3QgPSBuZXcgVXNlcnMobmV3VG91cmlzdCk7XHJcbiAgICBhd2FpdCB0b3VyaXN0LnNhdmUoKTtcclxuICAgIGF3YWl0IHRvdXJpc3QucmVtb3ZlKCk7XHJcblxyXG4gICAgcmV0dXJuIHRvdXJpc3QuX2lkLnRvU3RyaW5nKCk7XHJcbn1cclxuXHJcbmNvbnN0IGdldEV4aXN0aW5nSWRBc3Npc3RhbmN0ID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgY29uc3QgbmV3QXNzaXN0YW50ID0ge1xyXG4gICAgICAgIFwiZmlyc3RuYW1lXCI6IFwiS2FzdW5cIixcclxuICAgICAgICBcImxhc3RuYW1lXCI6IFwiUGVyZXJhXCIsXHJcbiAgICAgICAgXCJlbWFpbFwiOiBcImthc3VuQGdtYWlsLmNvbVwiLFxyXG4gICAgfVxyXG4gICAgY29uc3QgYXNzaXN0YW50ID0gbmV3IFVzZXJzKG5ld0Fzc2lzdGFudCk7XHJcbiAgICBhd2FpdCBhc3Npc3RhbnQuc2F2ZSgpO1xyXG5cclxuICAgIHJldHVybiBhc3Npc3RhbnQuX2lkLnRvU3RyaW5nKCk7XHJcblxyXG4gICAgXHJcbn1cclxuXHJcbmNvbnN0IGdldE5vbkV4aXN0aW5nSWRBc3Npc3RhbnQgPSBhc3luYyAoKSA9PiB7XHJcbiAgICBjb25zdCBuZXdBc3Npc3RhbnQgPSB7XHJcbiAgICAgICAgXCJmaXJzdG5hbWVcIjogXCJLYW1hbFwiLFxyXG4gICAgICAgIFwibGFzdG5hbWVcIjogXCJGZXJuYW1kb1wiLFxyXG4gICAgICAgIFwiZW1haWxcIjogXCJrYW1hbGZlcm5hbWRvQGdtYWlsLmNvbVwiXHJcbiAgICB9XHJcbiAgICBjb25zdCBhc3Npc3RhbnQgPSBuZXcgVXNlcnMobmV3QXNzaXN0YW50KTtcclxuICAgIGF3YWl0IGFzc2lzdGFudC5zYXZlKCk7XHJcbiAgICBhd2FpdCBhc3Npc3RhbnQucmVtb3ZlKCk7XHJcblxyXG4gICAgcmV0dXJuIGFzc2lzdGFudC5faWQudG9TdHJpbmcoKTtcclxufVxyXG5cclxuY29uc3QgZGVjb2RlVG9rZW4gPSAodG9rZW4pID0+IHtcclxuICAgIHZhciBkZWNvZGVkID0gand0X2RlY29kZSh0b2tlbik7XHJcbiAgICByZXR1cm4gZGVjb2RlZDtcclxufVxyXG5cclxubW9kdWxlLmV4cG9ydHMgPSB7XHJcbiAgICBnZXRBZG1pblRva2VuLCBnZXRBc3Npc3RhbnRUb2tlbiwgZ2V0VG91cmlzdFRva2VuLCBkZWNvZGVUb2tlbiwgYWRkVG91cmlzdCwgZ2V0VG91cmlzdFRva2VuICxnZXRFeGlzdGluZ0lkICxnZXROb25FeGlzdGluZ0lkLCBnZXRFeGlzdGluZ0lkQXNzaXN0YW5jdCwgZ2V0Tm9uRXhpc3RpbmdJZEFzc2lzdGFudCwgYWRkQXNzaXN0YW50XHJcbn1cclxuIl19\",\"originalCode\":\"const app = require('../../app');\\r\\nconst server = require(\\\"supertest\\\")(app);\\r\\nconst jwt_decode = require('jwt-decode');\\r\\nconst Users = require('../../models/users');\\r\\n\\r\\nvar userToken;\\r\\nvar assistantToken;\\r\\nvar adminToken;\\r\\nvar passwordAssistant;\\r\\nvar passwordUser;\\r\\n\\r\\nconst admin = {\\r\\n \\\"firstname\\\": \\\"Admin\\\",\\r\\n \\\"lastname\\\": \\\"Admin\\\",\\r\\n \\\"email\\\": \\\"admin@gmail.com\\\",\\r\\n \\\"password\\\": \\\"admin-password\\\"\\r\\n};\\r\\nconst assistant = {\\r\\n \\\"firstname\\\": \\\"Pasan\\\",\\r\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\r\\n \\\"email\\\": \\\"pasanFernamdo@gmail.com\\\"\\r\\n};\\r\\nconst tourist = {\\r\\n \\\"firstname\\\": \\\"Sunil\\\",\\r\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\r\\n \\\"email\\\": \\\"sunilFernamdo@gmail.com\\\"\\r\\n};\\r\\n\\r\\nconst signupAdmin = async () => {\\r\\n await Users.deleteMany({});\\r\\n await server\\r\\n .post(\\\"/users/signup/admin\\\")\\r\\n .send(admin);\\r\\n};\\r\\n\\r\\nconst getAdminToken = async () => {\\r\\n if (adminToken) {\\r\\n return adminToken;\\r\\n }\\r\\n await signupAdmin();\\r\\n var creds = {\\r\\n username: admin.email,\\r\\n password: admin.password,\\r\\n };\\r\\n const response = await server\\r\\n .post(\\\"/users/login\\\")\\r\\n .send(creds);\\r\\n adminToken = response.body.token;\\r\\n return adminToken;\\r\\n}\\r\\n\\r\\nconst addAssistant = async () => {\\r\\n if (!adminToken) {\\r\\n await getAdminToken();\\r\\n }\\r\\n const response = await server\\r\\n .post(\\\"/employees\\\")\\r\\n .set(\\\"Authorization\\\", `Bearer ${adminToken}`)\\r\\n .send(assistant)\\r\\n .expect(200);\\r\\n \\r\\n passwordAssistant = response.body.password;\\r\\n};\\r\\n\\r\\nconst getAssistantToken = async () => {\\r\\n if (assistantToken) {\\r\\n return assistantToken;\\r\\n }\\r\\n if(passwordAssistant==null){await addAssistant();}\\r\\n var creds = {\\r\\n username: assistant.email,\\r\\n password: passwordAssistant,\\r\\n };\\r\\n const response = await server\\r\\n .post(\\\"/users/login\\\")\\r\\n .send(creds);\\r\\n assistantToken = response.body.token;\\r\\n return assistantToken;\\r\\n}\\r\\n\\r\\nconst addTourist = async () => {\\r\\n if (!assistantToken) {\\r\\n await getAssistantToken();\\r\\n }\\r\\n const response = await server\\r\\n .post(\\\"/tourists\\\")\\r\\n .set(\\\"Authorization\\\", `Bearer ${assistantToken}`)\\r\\n .send(tourist)\\r\\n .expect(200);\\r\\n passwordUser= response.body.password;\\r\\n};\\r\\n \\r\\n\\r\\nconst getTouristToken = async () => {\\r\\n if (userToken) {\\r\\n return userToken;\\r\\n }\\r\\n if(passwordUser == null) { await addTourist();}\\r\\n var creds = {\\r\\n username: tourist.email,\\r\\n password: passwordUser,\\r\\n };\\r\\n const response = await server\\r\\n .post(\\\"/users/login\\\")\\r\\n .send(creds);\\r\\n userToken = response.body.token;\\r\\n return userToken;\\r\\n}\\r\\n\\r\\nconst getExistingId = async () => {\\r\\n const newTourist = {\\r\\n \\\"firstname\\\": \\\"Namal\\\",\\r\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\r\\n \\\"email\\\": \\\"namalfernamdo@gmail.com\\\",\\r\\n \\\"mobile\\\": \\\"981114844\\\",\\r\\n \\\"rommnumber\\\" : \\\"41\\\",\\r\\n\\r\\n }\\r\\n const tourist = new Users(newTourist);\\r\\n await tourist.save();\\r\\n\\r\\n return tourist._id.toString();\\r\\n\\r\\n \\r\\n}\\r\\n\\r\\nconst getNonExistingId = async () => {\\r\\n const newTourist = {\\r\\n \\\"firstname\\\": \\\"Kamal\\\",\\r\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\r\\n \\\"email\\\": \\\"kamalfernamdo@gmail.com\\\",\\r\\n \\\"username\\\": \\\"kamalfernamdo@gmail.com\\\"\\r\\n }\\r\\n const tourist = new Users(newTourist);\\r\\n await tourist.save();\\r\\n await tourist.remove();\\r\\n\\r\\n return tourist._id.toString();\\r\\n}\\r\\n\\r\\nconst getExistingIdAssistanct = async () => {\\r\\n const newAssistant = {\\r\\n \\\"firstname\\\": \\\"Kasun\\\",\\r\\n \\\"lastname\\\": \\\"Perera\\\",\\r\\n \\\"email\\\": \\\"kasun@gmail.com\\\",\\r\\n }\\r\\n const assistant = new Users(newAssistant);\\r\\n await assistant.save();\\r\\n\\r\\n return assistant._id.toString();\\r\\n\\r\\n \\r\\n}\\r\\n\\r\\nconst getNonExistingIdAssistant = async () => {\\r\\n const newAssistant = {\\r\\n \\\"firstname\\\": \\\"Kamal\\\",\\r\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\r\\n \\\"email\\\": \\\"kamalfernamdo@gmail.com\\\"\\r\\n }\\r\\n const assistant = new Users(newAssistant);\\r\\n await assistant.save();\\r\\n await assistant.remove();\\r\\n\\r\\n return assistant._id.toString();\\r\\n}\\r\\n\\r\\nconst decodeToken = (token) => {\\r\\n var decoded = jwt_decode(token);\\r\\n return decoded;\\r\\n}\\r\\n\\r\\nmodule.exports = {\\r\\n getAdminToken, getAssistantToken, getTouristToken, decodeToken, addTourist, getTouristToken ,getExistingId ,getNonExistingId, getExistingIdAssistanct, getNonExistingIdAssistant, addAssistant\\r\\n}\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/79/user_helper_79166e334a8b342d542dc0574b645dc7.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2692\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\tests\\\\helpers\\\\user_helper.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":16466,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":16463,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"signupAdmin\",\"ranges\":[{\"startOffset\":714,\"endOffset\":815,\"count\":3}],\"isBlockCoverage\":false},{\"functionName\":\"getAdminToken\",\"ranges\":[{\"startOffset\":840,\"endOffset\":1126,\"count\":3}],\"isBlockCoverage\":false},{\"functionName\":\"addAssistant\",\"ranges\":[{\"startOffset\":1150,\"endOffset\":1389,\"count\":2}],\"isBlockCoverage\":false},{\"functionName\":\"getAssistantToken\",\"ranges\":[{\"startOffset\":1418,\"endOffset\":1770,\"count\":3}],\"isBlockCoverage\":false},{\"functionName\":\"addTourist\",\"ranges\":[{\"startOffset\":1792,\"endOffset\":2035,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getTouristToken\",\"ranges\":[{\"startOffset\":2062,\"endOffset\":2380,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getExistingId\",\"ranges\":[{\"startOffset\":2405,\"endOffset\":2690,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getNonExistingId\",\"ranges\":[{\"startOffset\":2718,\"endOffset\":3021,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getExistingIdAssistanct\",\"ranges\":[{\"startOffset\":3056,\"endOffset\":3290,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getNonExistingIdAssistant\",\"ranges\":[{\"startOffset\":3327,\"endOffset\":3599,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"decodeToken\",\"ranges\":[{\"startOffset\":3622,\"endOffset\":3687,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const Places = require('../../models/visitingPlaces');\\n\\nconst mockPlaces = require('../mockData/places.data');\\n\\nconst initialPlaces = mockPlaces;\\n\\nconst addPlacesToDb = async () => {\\n const placeObjects = initialPlaces.map(place => new Places(place));\\n const promiseArray = placeObjects.map(place => place.save());\\n await Promise.all(promiseArray);\\n};\\n\\nconst getExistingId = async () => {\\n const newPlace = {\\n \\\"name\\\": \\\"Galle Dutch Fort\\\",\\n \\\"description\\\": \\\"Duis amet in ipsum ut consequat. Aliquip quis quis et laboris non mollit nisi ut mollit fugiat occaecat id nostrud. Mollit mollit aliquip reprehenderit voluptate commodo id nostrud non.\\\",\\n \\\"location\\\": {\\n coordinates: [6.02453869574481, 80.21798550785017]\\n },\\n \\\"distance\\\": \\\"20km\\\",\\n \\\"timeToReach\\\": \\\"30min\\\",\\n \\\"images\\\": [],\\n \\\"methods\\\": ['Car']\\n };\\n const place = new Places(newPlace);\\n await place.save();\\n return place._id.toString();\\n};\\n\\nconst getNonExistingId = async () => {\\n const newPlace = {\\n \\\"name\\\": \\\"To be deleted\\\",\\n \\\"description\\\": \\\"Duis amet in ipsum ut.\\\",\\n \\\"location\\\": {\\n coordinates: [6.02453869574481, 80.21798550785017]\\n },\\n \\\"distance\\\": \\\"10km\\\",\\n \\\"timeToReach\\\": \\\"20min\\\",\\n \\\"images\\\": [],\\n \\\"methods\\\": ['Foot']\\n };\\n const place = new Places(newPlace);\\n await place.save();\\n await place.remove();\\n return place._id.toString();\\n};\\n\\nconst placesInDb = async () => {\\n const places = await Note.find({});\\n return places;\\n};\\n\\nmodule.exports = {\\n initialPlaces,\\n addPlacesToDb,\\n getExistingId,\\n getNonExistingId,\\n placesInDb\\n};\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBsYWNlX2hlbHBlci5qcyJdLCJuYW1lcyI6WyJQbGFjZXMiLCJyZXF1aXJlIiwibW9ja1BsYWNlcyIsImluaXRpYWxQbGFjZXMiLCJhZGRQbGFjZXNUb0RiIiwicGxhY2VPYmplY3RzIiwibWFwIiwicGxhY2UiLCJwcm9taXNlQXJyYXkiLCJzYXZlIiwiUHJvbWlzZSIsImFsbCIsImdldEV4aXN0aW5nSWQiLCJuZXdQbGFjZSIsImNvb3JkaW5hdGVzIiwiX2lkIiwidG9TdHJpbmciLCJnZXROb25FeGlzdGluZ0lkIiwicmVtb3ZlIiwicGxhY2VzSW5EYiIsInBsYWNlcyIsIk5vdGUiLCJmaW5kIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsTUFBTSxHQUFHQyxPQUFPLENBQUMsNkJBQUQsQ0FBdEI7O0FBQ0EsTUFBTUMsVUFBVSxHQUFHRCxPQUFPLENBQUMseUJBQUQsQ0FBMUI7O0FBRUEsTUFBTUUsYUFBYSxHQUFHRCxVQUF0Qjs7QUFFQSxNQUFNRSxhQUFhLEdBQUcsWUFBWTtBQUM5QixRQUFNQyxZQUFZLEdBQUdGLGFBQWEsQ0FDN0JHLEdBRGdCLENBQ1pDLEtBQUssSUFBSSxJQUFJUCxNQUFKLENBQVdPLEtBQVgsQ0FERyxDQUFyQjtBQUVBLFFBQU1DLFlBQVksR0FBR0gsWUFBWSxDQUFDQyxHQUFiLENBQWlCQyxLQUFLLElBQUlBLEtBQUssQ0FBQ0UsSUFBTixFQUExQixDQUFyQjtBQUNBLFFBQU1DLE9BQU8sQ0FBQ0MsR0FBUixDQUFZSCxZQUFaLENBQU47QUFDSCxDQUxEOztBQU9BLE1BQU1JLGFBQWEsR0FBRyxZQUFZO0FBQzlCLFFBQU1DLFFBQVEsR0FBRztBQUNiLFlBQVEsa0JBREs7QUFFYixtQkFBZSwyTEFGRjtBQUdiLGdCQUFZO0FBQ1JDLE1BQUFBLFdBQVcsRUFBRSxDQUFDLGdCQUFELEVBQW1CLGlCQUFuQjtBQURMLEtBSEM7QUFNYixnQkFBWSxNQU5DO0FBT2IsbUJBQWUsT0FQRjtBQVFiLGNBQVUsRUFSRztBQVNiLGVBQVcsQ0FBQyxLQUFEO0FBVEUsR0FBakI7QUFXQSxRQUFNUCxLQUFLLEdBQUcsSUFBSVAsTUFBSixDQUFXYSxRQUFYLENBQWQ7QUFDQSxRQUFNTixLQUFLLENBQUNFLElBQU4sRUFBTjtBQUVBLFNBQU9GLEtBQUssQ0FBQ1EsR0FBTixDQUFVQyxRQUFWLEVBQVA7QUFDSCxDQWhCRDs7QUFrQkEsTUFBTUMsZ0JBQWdCLEdBQUcsWUFBWTtBQUNqQyxRQUFNSixRQUFRLEdBQUc7QUFDYixZQUFRLGVBREs7QUFFYixtQkFBZSx3QkFGRjtBQUdiLGdCQUFZO0FBQ1JDLE1BQUFBLFdBQVcsRUFBRSxDQUFDLGdCQUFELEVBQW1CLGlCQUFuQjtBQURMLEtBSEM7QUFNYixnQkFBWSxNQU5DO0FBT2IsbUJBQWUsT0FQRjtBQVFiLGNBQVUsRUFSRztBQVNiLGVBQVcsQ0FBQyxNQUFEO0FBVEUsR0FBakI7QUFXQSxRQUFNUCxLQUFLLEdBQUcsSUFBSVAsTUFBSixDQUFXYSxRQUFYLENBQWQ7QUFDQSxRQUFNTixLQUFLLENBQUNFLElBQU4sRUFBTjtBQUNBLFFBQU1GLEtBQUssQ0FBQ1csTUFBTixFQUFOO0FBRUEsU0FBT1gsS0FBSyxDQUFDUSxHQUFOLENBQVVDLFFBQVYsRUFBUDtBQUNILENBakJEOztBQW1CQSxNQUFNRyxVQUFVLEdBQUcsWUFBWTtBQUMzQixRQUFNQyxNQUFNLEdBQUcsTUFBTUMsSUFBSSxDQUFDQyxJQUFMLENBQVUsRUFBVixDQUFyQjtBQUNBLFNBQU9GLE1BQVA7QUFDSCxDQUhEOztBQUtBRyxNQUFNLENBQUNDLE9BQVAsR0FBaUI7QUFDYnJCLEVBQUFBLGFBRGE7QUFDRUMsRUFBQUEsYUFERjtBQUNpQlEsRUFBQUEsYUFEakI7QUFDZ0NLLEVBQUFBLGdCQURoQztBQUNrREUsRUFBQUE7QUFEbEQsQ0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBQbGFjZXMgPSByZXF1aXJlKCcuLi8uLi9tb2RlbHMvdmlzaXRpbmdQbGFjZXMnKTtcclxuY29uc3QgbW9ja1BsYWNlcyA9IHJlcXVpcmUoJy4uL21vY2tEYXRhL3BsYWNlcy5kYXRhJyk7XHJcblxyXG5jb25zdCBpbml0aWFsUGxhY2VzID0gbW9ja1BsYWNlcztcclxuXHJcbmNvbnN0IGFkZFBsYWNlc1RvRGIgPSBhc3luYyAoKSA9PiB7XHJcbiAgICBjb25zdCBwbGFjZU9iamVjdHMgPSBpbml0aWFsUGxhY2VzXHJcbiAgICAgICAgLm1hcChwbGFjZSA9PiBuZXcgUGxhY2VzKHBsYWNlKSk7XHJcbiAgICBjb25zdCBwcm9taXNlQXJyYXkgPSBwbGFjZU9iamVjdHMubWFwKHBsYWNlID0+IHBsYWNlLnNhdmUoKSk7XHJcbiAgICBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlQXJyYXkpO1xyXG59XHJcblxyXG5jb25zdCBnZXRFeGlzdGluZ0lkID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgY29uc3QgbmV3UGxhY2UgPSB7XHJcbiAgICAgICAgXCJuYW1lXCI6IFwiR2FsbGUgRHV0Y2ggRm9ydFwiLFxyXG4gICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJEdWlzIGFtZXQgaW4gaXBzdW0gdXQgY29uc2VxdWF0LiBBbGlxdWlwIHF1aXMgcXVpcyBldCBsYWJvcmlzIG5vbiBtb2xsaXQgbmlzaSB1dCBtb2xsaXQgZnVnaWF0IG9jY2FlY2F0IGlkIG5vc3RydWQuIE1vbGxpdCBtb2xsaXQgYWxpcXVpcCByZXByZWhlbmRlcml0IHZvbHVwdGF0ZSBjb21tb2RvIGlkIG5vc3RydWQgbm9uLlwiLFxyXG4gICAgICAgIFwibG9jYXRpb25cIjoge1xyXG4gICAgICAgICAgICBjb29yZGluYXRlczogWzYuMDI0NTM4Njk1NzQ0ODEsIDgwLjIxNzk4NTUwNzg1MDE3XVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgXCJkaXN0YW5jZVwiOiBcIjIwa21cIixcclxuICAgICAgICBcInRpbWVUb1JlYWNoXCI6IFwiMzBtaW5cIixcclxuICAgICAgICBcImltYWdlc1wiOiBbXSxcclxuICAgICAgICBcIm1ldGhvZHNcIjogWydDYXInXVxyXG4gICAgfTtcclxuICAgIGNvbnN0IHBsYWNlID0gbmV3IFBsYWNlcyhuZXdQbGFjZSk7XHJcbiAgICBhd2FpdCBwbGFjZS5zYXZlKCk7XHJcblxyXG4gICAgcmV0dXJuIHBsYWNlLl9pZC50b1N0cmluZygpO1xyXG59XHJcblxyXG5jb25zdCBnZXROb25FeGlzdGluZ0lkID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgY29uc3QgbmV3UGxhY2UgPSB7XHJcbiAgICAgICAgXCJuYW1lXCI6IFwiVG8gYmUgZGVsZXRlZFwiLFxyXG4gICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJEdWlzIGFtZXQgaW4gaXBzdW0gdXQuXCIsXHJcbiAgICAgICAgXCJsb2NhdGlvblwiOiB7XHJcbiAgICAgICAgICAgIGNvb3JkaW5hdGVzOiBbNi4wMjQ1Mzg2OTU3NDQ4MSwgODAuMjE3OTg1NTA3ODUwMTddXHJcbiAgICAgICAgfSxcclxuICAgICAgICBcImRpc3RhbmNlXCI6IFwiMTBrbVwiLFxyXG4gICAgICAgIFwidGltZVRvUmVhY2hcIjogXCIyMG1pblwiLFxyXG4gICAgICAgIFwiaW1hZ2VzXCI6IFtdLFxyXG4gICAgICAgIFwibWV0aG9kc1wiOiBbJ0Zvb3QnXVxyXG4gICAgfTtcclxuICAgIGNvbnN0IHBsYWNlID0gbmV3IFBsYWNlcyhuZXdQbGFjZSk7XHJcbiAgICBhd2FpdCBwbGFjZS5zYXZlKCk7XHJcbiAgICBhd2FpdCBwbGFjZS5yZW1vdmUoKTtcclxuXHJcbiAgICByZXR1cm4gcGxhY2UuX2lkLnRvU3RyaW5nKCk7XHJcbn1cclxuXHJcbmNvbnN0IHBsYWNlc0luRGIgPSBhc3luYyAoKSA9PiB7XHJcbiAgICBjb25zdCBwbGFjZXMgPSBhd2FpdCBOb3RlLmZpbmQoe30pO1xyXG4gICAgcmV0dXJuIHBsYWNlcztcclxufVxyXG5cclxubW9kdWxlLmV4cG9ydHMgPSB7XHJcbiAgICBpbml0aWFsUGxhY2VzLCBhZGRQbGFjZXNUb0RiLCBnZXRFeGlzdGluZ0lkLCBnZXROb25FeGlzdGluZ0lkLCBwbGFjZXNJbkRiXHJcbn0iXX0=\",\"originalCode\":\"const Places = require('../../models/visitingPlaces');\\r\\nconst mockPlaces = require('../mockData/places.data');\\r\\n\\r\\nconst initialPlaces = mockPlaces;\\r\\n\\r\\nconst addPlacesToDb = async () => {\\r\\n const placeObjects = initialPlaces\\r\\n .map(place => new Places(place));\\r\\n const promiseArray = placeObjects.map(place => place.save());\\r\\n await Promise.all(promiseArray);\\r\\n}\\r\\n\\r\\nconst getExistingId = async () => {\\r\\n const newPlace = {\\r\\n \\\"name\\\": \\\"Galle Dutch Fort\\\",\\r\\n \\\"description\\\": \\\"Duis amet in ipsum ut consequat. Aliquip quis quis et laboris non mollit nisi ut mollit fugiat occaecat id nostrud. Mollit mollit aliquip reprehenderit voluptate commodo id nostrud non.\\\",\\r\\n \\\"location\\\": {\\r\\n coordinates: [6.02453869574481, 80.21798550785017]\\r\\n },\\r\\n \\\"distance\\\": \\\"20km\\\",\\r\\n \\\"timeToReach\\\": \\\"30min\\\",\\r\\n \\\"images\\\": [],\\r\\n \\\"methods\\\": ['Car']\\r\\n };\\r\\n const place = new Places(newPlace);\\r\\n await place.save();\\r\\n\\r\\n return place._id.toString();\\r\\n}\\r\\n\\r\\nconst getNonExistingId = async () => {\\r\\n const newPlace = {\\r\\n \\\"name\\\": \\\"To be deleted\\\",\\r\\n \\\"description\\\": \\\"Duis amet in ipsum ut.\\\",\\r\\n \\\"location\\\": {\\r\\n coordinates: [6.02453869574481, 80.21798550785017]\\r\\n },\\r\\n \\\"distance\\\": \\\"10km\\\",\\r\\n \\\"timeToReach\\\": \\\"20min\\\",\\r\\n \\\"images\\\": [],\\r\\n \\\"methods\\\": ['Foot']\\r\\n };\\r\\n const place = new Places(newPlace);\\r\\n await place.save();\\r\\n await place.remove();\\r\\n\\r\\n return place._id.toString();\\r\\n}\\r\\n\\r\\nconst placesInDb = async () => {\\r\\n const places = await Note.find({});\\r\\n return places;\\r\\n}\\r\\n\\r\\nmodule.exports = {\\r\\n initialPlaces, addPlacesToDb, getExistingId, getNonExistingId, placesInDb\\r\\n}\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/f7/place_helper_f736d6463224b7f5175e218faaaa4ce9.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"3946\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\tests\\\\helpers\\\\place_helper.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":6530,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":6527,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"addPlacesToDb\",\"ranges\":[{\"startOffset\":258,\"endOffset\":442,\"count\":2}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":313,\"endOffset\":339,\"count\":3}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":382,\"endOffset\":403,\"count\":3}],\"isBlockCoverage\":false},{\"functionName\":\"getExistingId\",\"ranges\":[{\"startOffset\":467,\"endOffset\":1014,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getNonExistingId\",\"ranges\":[{\"startOffset\":1042,\"endOffset\":1448,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"placesInDb\",\"ranges\":[{\"startOffset\":1470,\"endOffset\":1540,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const places = [{\\n \\\"name\\\": \\\"Mirissa\\\",\\n \\\"description\\\": \\\"Duis amet in ipsum ut consequat. Aliquip quis quis et laboris non mollit nisi ut mollit fugiat occaecat id nostrud. Mollit mollit aliquip reprehenderit voluptate commodo id nostrud non.\\\",\\n \\\"location\\\": {\\n \\\"coordinates\\\": [5.9447392257447005, 80.45886764887479]\\n },\\n \\\"distance\\\": \\\"20km\\\",\\n \\\"timeToReach\\\": \\\"30min\\\",\\n \\\"images\\\": [],\\n \\\"methods\\\": ['Bus', 'Car', 'Foot']\\n}, {\\n \\\"name\\\": \\\"Unawatuna\\\",\\n \\\"description\\\": \\\"Duis amet in ipsum ut consequat. Aliquip quis quis et laboris non mollit nisi ut mollit fugiat occaecat id nostrud. Mollit mollit aliquip reprehenderit voluptate commodo id nostrud non.\\\",\\n \\\"location\\\": {\\n \\\"coordinates\\\": [6.009847327808601, 80.24929493589147]\\n },\\n \\\"distance\\\": \\\"20km\\\",\\n \\\"timeToReach\\\": \\\"30min\\\",\\n \\\"images\\\": [],\\n \\\"methods\\\": ['Bus', 'Foot']\\n}, {\\n \\\"name\\\": \\\"Jungle Beach\\\",\\n \\\"description\\\": \\\"Duis amet in ipsum ut consequat. Aliquip quis quis et laboris non mollit nisi ut mollit fugiat occaecat id nostrud. Mollit mollit aliquip reprehenderit voluptate commodo id nostrud non.\\\",\\n \\\"location\\\": {\\n \\\"coordinates\\\": [6.0175219725350635, 80.23893195618767]\\n },\\n \\\"distance\\\": \\\"20km\\\",\\n \\\"timeToReach\\\": \\\"30min\\\",\\n \\\"images\\\": [],\\n \\\"methods\\\": ['Foot']\\n}];\\nmodule.exports = places;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBsYWNlcy5kYXRhLmpzIl0sIm5hbWVzIjpbInBsYWNlcyIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE1BQU0sR0FBRyxDQUNYO0FBQ0ksVUFBUSxTQURaO0FBRUksaUJBQWUsMkxBRm5CO0FBR0ksY0FBWTtBQUNSLG1CQUFlLENBQUMsa0JBQUQsRUFBcUIsaUJBQXJCO0FBRFAsR0FIaEI7QUFNSSxjQUFZLE1BTmhCO0FBT0ksaUJBQWUsT0FQbkI7QUFRSSxZQUFVLEVBUmQ7QUFTSSxhQUFXLENBQUMsS0FBRCxFQUFRLEtBQVIsRUFBZSxNQUFmO0FBVGYsQ0FEVyxFQVlYO0FBQ0ksVUFBUSxXQURaO0FBRUksaUJBQWUsMkxBRm5CO0FBR0ksY0FBWTtBQUNSLG1CQUFlLENBQUMsaUJBQUQsRUFBb0IsaUJBQXBCO0FBRFAsR0FIaEI7QUFNSSxjQUFZLE1BTmhCO0FBT0ksaUJBQWUsT0FQbkI7QUFRSSxZQUFVLEVBUmQ7QUFTSSxhQUFXLENBQUMsS0FBRCxFQUFRLE1BQVI7QUFUZixDQVpXLEVBdUJYO0FBQ0ksVUFBUSxjQURaO0FBRUksaUJBQWUsMkxBRm5CO0FBR0ksY0FBWTtBQUNSLG1CQUFlLENBQUMsa0JBQUQsRUFBcUIsaUJBQXJCO0FBRFAsR0FIaEI7QUFNSSxjQUFZLE1BTmhCO0FBT0ksaUJBQWUsT0FQbkI7QUFRSSxZQUFVLEVBUmQ7QUFTSSxhQUFXLENBQUMsTUFBRDtBQVRmLENBdkJXLENBQWY7QUFvQ0FDLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQkYsTUFBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBwbGFjZXMgPSBbXHJcbiAgICB7XHJcbiAgICAgICAgXCJuYW1lXCI6IFwiTWlyaXNzYVwiLFxyXG4gICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJEdWlzIGFtZXQgaW4gaXBzdW0gdXQgY29uc2VxdWF0LiBBbGlxdWlwIHF1aXMgcXVpcyBldCBsYWJvcmlzIG5vbiBtb2xsaXQgbmlzaSB1dCBtb2xsaXQgZnVnaWF0IG9jY2FlY2F0IGlkIG5vc3RydWQuIE1vbGxpdCBtb2xsaXQgYWxpcXVpcCByZXByZWhlbmRlcml0IHZvbHVwdGF0ZSBjb21tb2RvIGlkIG5vc3RydWQgbm9uLlwiLFxyXG4gICAgICAgIFwibG9jYXRpb25cIjoge1xyXG4gICAgICAgICAgICBcImNvb3JkaW5hdGVzXCI6IFs1Ljk0NDczOTIyNTc0NDcwMDUsIDgwLjQ1ODg2NzY0ODg3NDc5XVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgXCJkaXN0YW5jZVwiOiBcIjIwa21cIixcclxuICAgICAgICBcInRpbWVUb1JlYWNoXCI6IFwiMzBtaW5cIixcclxuICAgICAgICBcImltYWdlc1wiOiBbXSxcclxuICAgICAgICBcIm1ldGhvZHNcIjogWydCdXMnLCAnQ2FyJywgJ0Zvb3QnXVxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgICBcIm5hbWVcIjogXCJVbmF3YXR1bmFcIixcclxuICAgICAgICBcImRlc2NyaXB0aW9uXCI6IFwiRHVpcyBhbWV0IGluIGlwc3VtIHV0IGNvbnNlcXVhdC4gQWxpcXVpcCBxdWlzIHF1aXMgZXQgbGFib3JpcyBub24gbW9sbGl0IG5pc2kgdXQgbW9sbGl0IGZ1Z2lhdCBvY2NhZWNhdCBpZCBub3N0cnVkLiBNb2xsaXQgbW9sbGl0IGFsaXF1aXAgcmVwcmVoZW5kZXJpdCB2b2x1cHRhdGUgY29tbW9kbyBpZCBub3N0cnVkIG5vbi5cIixcclxuICAgICAgICBcImxvY2F0aW9uXCI6IHtcclxuICAgICAgICAgICAgXCJjb29yZGluYXRlc1wiOiBbNi4wMDk4NDczMjc4MDg2MDEsIDgwLjI0OTI5NDkzNTg5MTQ3XVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgXCJkaXN0YW5jZVwiOiBcIjIwa21cIixcclxuICAgICAgICBcInRpbWVUb1JlYWNoXCI6IFwiMzBtaW5cIixcclxuICAgICAgICBcImltYWdlc1wiOiBbXSxcclxuICAgICAgICBcIm1ldGhvZHNcIjogWydCdXMnLCAnRm9vdCddXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICAgIFwibmFtZVwiOiBcIkp1bmdsZSBCZWFjaFwiLFxyXG4gICAgICAgIFwiZGVzY3JpcHRpb25cIjogXCJEdWlzIGFtZXQgaW4gaXBzdW0gdXQgY29uc2VxdWF0LiBBbGlxdWlwIHF1aXMgcXVpcyBldCBsYWJvcmlzIG5vbiBtb2xsaXQgbmlzaSB1dCBtb2xsaXQgZnVnaWF0IG9jY2FlY2F0IGlkIG5vc3RydWQuIE1vbGxpdCBtb2xsaXQgYWxpcXVpcCByZXByZWhlbmRlcml0IHZvbHVwdGF0ZSBjb21tb2RvIGlkIG5vc3RydWQgbm9uLlwiLFxyXG4gICAgICAgIFwibG9jYXRpb25cIjoge1xyXG4gICAgICAgICAgICBcImNvb3JkaW5hdGVzXCI6IFs2LjAxNzUyMTk3MjUzNTA2MzUsIDgwLjIzODkzMTk1NjE4NzY3XVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgXCJkaXN0YW5jZVwiOiBcIjIwa21cIixcclxuICAgICAgICBcInRpbWVUb1JlYWNoXCI6IFwiMzBtaW5cIixcclxuICAgICAgICBcImltYWdlc1wiOiBbXSxcclxuICAgICAgICBcIm1ldGhvZHNcIjogWydGb290J11cclxuICAgIH0sXHJcbl07XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IHBsYWNlczsiXX0=\",\"originalCode\":\"const places = [\\r\\n {\\r\\n \\\"name\\\": \\\"Mirissa\\\",\\r\\n \\\"description\\\": \\\"Duis amet in ipsum ut consequat. Aliquip quis quis et laboris non mollit nisi ut mollit fugiat occaecat id nostrud. Mollit mollit aliquip reprehenderit voluptate commodo id nostrud non.\\\",\\r\\n \\\"location\\\": {\\r\\n \\\"coordinates\\\": [5.9447392257447005, 80.45886764887479]\\r\\n },\\r\\n \\\"distance\\\": \\\"20km\\\",\\r\\n \\\"timeToReach\\\": \\\"30min\\\",\\r\\n \\\"images\\\": [],\\r\\n \\\"methods\\\": ['Bus', 'Car', 'Foot']\\r\\n },\\r\\n {\\r\\n \\\"name\\\": \\\"Unawatuna\\\",\\r\\n \\\"description\\\": \\\"Duis amet in ipsum ut consequat. Aliquip quis quis et laboris non mollit nisi ut mollit fugiat occaecat id nostrud. Mollit mollit aliquip reprehenderit voluptate commodo id nostrud non.\\\",\\r\\n \\\"location\\\": {\\r\\n \\\"coordinates\\\": [6.009847327808601, 80.24929493589147]\\r\\n },\\r\\n \\\"distance\\\": \\\"20km\\\",\\r\\n \\\"timeToReach\\\": \\\"30min\\\",\\r\\n \\\"images\\\": [],\\r\\n \\\"methods\\\": ['Bus', 'Foot']\\r\\n },\\r\\n {\\r\\n \\\"name\\\": \\\"Jungle Beach\\\",\\r\\n \\\"description\\\": \\\"Duis amet in ipsum ut consequat. Aliquip quis quis et laboris non mollit nisi ut mollit fugiat occaecat id nostrud. Mollit mollit aliquip reprehenderit voluptate commodo id nostrud non.\\\",\\r\\n \\\"location\\\": {\\r\\n \\\"coordinates\\\": [6.0175219725350635, 80.23893195618767]\\r\\n },\\r\\n \\\"distance\\\": \\\"20km\\\",\\r\\n \\\"timeToReach\\\": \\\"30min\\\",\\r\\n \\\"images\\\": [],\\r\\n \\\"methods\\\": ['Foot']\\r\\n },\\r\\n];\\r\\n\\r\\nmodule.exports = places;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/c7/placesdata_c7d929916abb793b06246bc83618a0c3.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"3947\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\tests\\\\mockData\\\\places.data.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":4573,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":4570,\"count\":1}],\"isBlockCoverage\":false}]}}]},{\"leaks\":false,\"numFailingTests\":0,\"numPassingTests\":8,\"numPendingTests\":0,\"numTodoTests\":0,\"openHandles\":[],\"perfStats\":{\"end\":1615204323625,\"runtime\":1821,\"slow\":false,\"start\":1615204321804},\"skipped\":false,\"snapshot\":{\"added\":0,\"fileDeleted\":false,\"matched\":0,\"unchecked\":0,\"unmatched\":0,\"updated\":0,\"uncheckedKeys\":[]},\"testFilePath\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\tests\\\\employee-id.test.js\",\"testResults\":[{\"ancestorTitles\":[\"GET /employees/:employeeId\"],\"duration\":8,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"GET /employees/:employeeId requires Authorization - 401\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"requires Authorization - 401\"},{\"ancestorTitles\":[\"GET /employees/:employeeId\"],\"duration\":20,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"GET /employees/:employeeId with Authorization - 200\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"with Authorization - 200\"},{\"ancestorTitles\":[\"GET /employees/:employeeId\"],\"duration\":16,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"GET /employees/:employeeId invalid employees id - 404\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"invalid employees id - 404\"},{\"ancestorTitles\":[\"POST /employees/:touristsId\"],\"duration\":8,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"POST /employees/:touristsId does not support - 403\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"does not support - 403\"},{\"ancestorTitles\":[\"PUT /employees/:employeeId\"],\"duration\":11,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"PUT /employees/:employeeId requires Authorization - 401\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"requires Authorization - 401\"},{\"ancestorTitles\":[\"PUT /employees/:employeeId\"],\"duration\":25,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"PUT /employees/:employeeId with Authorization - 200\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"with Authorization - 200\"},{\"ancestorTitles\":[\"DELETE /employees/:employeesId\"],\"duration\":8,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"DELETE /employees/:employeesId requires Authorization - 401\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"requires Authorization - 401\"},{\"ancestorTitles\":[\"DELETE /employees/:employeesId\"],\"duration\":20,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"DELETE /employees/:employeesId with Authorization - 200\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"with Authorization - 200\"}],\"failureMessage\":null,\"v8Coverage\":[{\"codeTransformResult\":{\"code\":\"var createError = require('http-errors');\\n\\nvar express = require('express');\\n\\nconst cors = require('cors');\\n\\nvar path = require('path');\\n\\nconst bodyParser = require('body-parser');\\n\\nconst expressValidator = require('express-validator');\\n\\nvar session = require('express-session');\\n\\nvar FileStore = require('session-file-store')(session);\\n\\nvar cookieParser = require('cookie-parser');\\n\\nvar logger = require('morgan');\\n\\nvar passport = require('passport');\\n\\nconst mongoose = require('mongoose');\\n\\nrequire('dotenv').config();\\n\\nvar userRouter = require('./routes/userRouter');\\n\\nvar employeeRouter = require('./routes/employeeRouter');\\n\\nvar placeRouter = require('./routes/placeRouter');\\n\\nvar scheduleRouter = require('./routes/scheduleRouter');\\n\\nvar touristRouter = require('./routes/touristRouter');\\n\\nvar dashboardRouter = require('./routes/dashboardRouter');\\n\\nvar app = express(); // view engine setup\\n\\napp.set('views', path.join(__dirname, 'views'));\\napp.set('view engine', 'jade');\\napp.use(cors());\\napp.use(passport.initialize());\\napp.use(bodyParser.json());\\napp.use(cookieParser('the-immortal-coils')); // app.use(logger('dev'));\\n\\napp.use(express.json());\\napp.use(express.urlencoded({\\n extended: false\\n}));\\napp.use(cookieParser()); // app.use(express.static('build'));\\n\\napp.use(express.static(path.join(__dirname, 'build')));\\nvar url = process.env.mongoUrl;\\n\\nif (process.env.NODE_ENV === 'test') {\\n url = process.env.testMongoUrl;\\n}\\n\\nmongoose.connect(url, {\\n useNewUrlParser: true,\\n useCreateIndex: true,\\n useUnifiedTopology: true\\n}).then(db => {}, err => {\\n if (err) {\\n console.log('👺 Error connecting to MongoDB');\\n } else {\\n console.log('✅ Connected to MongoDB');\\n }\\n});\\napp.use('/users', userRouter);\\napp.use('/employees', employeeRouter);\\napp.use('/places', placeRouter);\\napp.use('/schedules', scheduleRouter);\\napp.use('/tourists', touristRouter);\\napp.use('/dashboard', dashboardRouter); // catch 404 and forward to error handler\\n\\napp.use(function (req, res, next) {\\n next(createError(404));\\n}); // error handler\\n\\napp.use(function (err, req, res, next) {\\n // set locals, only providing error in development\\n res.locals.message = err.message;\\n res.locals.error = req.app.get('env') === 'development' ? err : {}; // render the error page\\n\\n res.status(err.status || 500);\\n res.render('error');\\n});\\nmodule.exports = app;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC5qcyJdLCJuYW1lcyI6WyJjcmVhdGVFcnJvciIsInJlcXVpcmUiLCJleHByZXNzIiwiY29ycyIsInBhdGgiLCJib2R5UGFyc2VyIiwiZXhwcmVzc1ZhbGlkYXRvciIsInNlc3Npb24iLCJGaWxlU3RvcmUiLCJjb29raWVQYXJzZXIiLCJsb2dnZXIiLCJwYXNzcG9ydCIsIm1vbmdvb3NlIiwiY29uZmlnIiwidXNlclJvdXRlciIsImVtcGxveWVlUm91dGVyIiwicGxhY2VSb3V0ZXIiLCJzY2hlZHVsZVJvdXRlciIsInRvdXJpc3RSb3V0ZXIiLCJkYXNoYm9hcmRSb3V0ZXIiLCJhcHAiLCJzZXQiLCJqb2luIiwiX19kaXJuYW1lIiwidXNlIiwiaW5pdGlhbGl6ZSIsImpzb24iLCJ1cmxlbmNvZGVkIiwiZXh0ZW5kZWQiLCJzdGF0aWMiLCJ1cmwiLCJwcm9jZXNzIiwiZW52IiwibW9uZ29VcmwiLCJOT0RFX0VOViIsInRlc3RNb25nb1VybCIsImNvbm5lY3QiLCJ1c2VOZXdVcmxQYXJzZXIiLCJ1c2VDcmVhdGVJbmRleCIsInVzZVVuaWZpZWRUb3BvbG9neSIsInRoZW4iLCJkYiIsImVyciIsImNvbnNvbGUiLCJsb2ciLCJyZXEiLCJyZXMiLCJuZXh0IiwibG9jYWxzIiwibWVzc2FnZSIsImVycm9yIiwiZ2V0Iiwic3RhdHVzIiwicmVuZGVyIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsSUFBSUEsV0FBVyxHQUFHQyxPQUFPLENBQUMsYUFBRCxDQUF6Qjs7QUFDQSxJQUFJQyxPQUFPLEdBQUdELE9BQU8sQ0FBQyxTQUFELENBQXJCOztBQUNBLE1BQU1FLElBQUksR0FBR0YsT0FBTyxDQUFDLE1BQUQsQ0FBcEI7O0FBQ0EsSUFBSUcsSUFBSSxHQUFHSCxPQUFPLENBQUMsTUFBRCxDQUFsQjs7QUFDQSxNQUFNSSxVQUFVLEdBQUdKLE9BQU8sQ0FBQyxhQUFELENBQTFCOztBQUNBLE1BQU1LLGdCQUFnQixHQUFHTCxPQUFPLENBQUMs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a0JWLFVBQWxCO0FBQ0FNLEdBQUcsQ0FBQ0ksR0FBSixDQUFRLFlBQVIsRUFBc0JULGNBQXRCO0FBQ0FLLEdBQUcsQ0FBQ0ksR0FBSixDQUFRLFNBQVIsRUFBbUJSLFdBQW5CO0FBQ0FJLEdBQUcsQ0FBQ0ksR0FBSixDQUFRLFlBQVIsRUFBc0JQLGNBQXRCO0FBQ0FHLEdBQUcsQ0FBQ0ksR0FBSixDQUFRLFdBQVIsRUFBcUJOLGFBQXJCO0FBQ0FFLEdBQUcsQ0FBQ0ksR0FBSixDQUFRLFlBQVIsRUFBc0JMLGVBQXRCLEUsQ0FFQTs7QUFDQUMsR0FBRyxDQUFDSSxHQUFKLENBQVEsVUFBVXFCLEdBQVYsRUFBZUMsR0FBZixFQUFvQkMsSUFBcEIsRUFBMEI7QUFDaENBLEVBQUFBLElBQUksQ0FBQy9DLFdBQVcsQ0FBQyxHQUFELENBQVosQ0FBSjtBQUNELENBRkQsRSxDQUlBOztBQUNBb0IsR0FBRyxDQUFDSSxHQUFKLENBQVEsVUFBVWtCLEdBQVYsRUFBZUcsR0FBZixFQUFvQkMsR0FBcEIsRUFBeUJDLElBQXpCLEVBQStCO0FBQ3JDO0FBQ0FELEVBQUFBLEdBQUcsQ0FBQ0UsTUFBSixDQUFXQyxPQUFYLEdBQXFCUCxHQUFHLENBQUNPLE9BQXpCO0FBQ0FILEVBQUFBLEdBQUcsQ0FBQ0UsTUFBSixDQUFXRSxLQUFYLEdBQW1CTCxHQUFHLENBQUN6QixHQUFKLENBQVErQixHQUFSLENBQVksS0FBWixNQUF1QixhQUF2QixHQUF1Q1QsR0FBdkMsR0FBNkMsRUFBaEUsQ0FIcUMsQ0FLckM7O0FBQ0FJLEVBQUFBLEdBQUcsQ0FBQ00sTUFBSixDQUFXVixHQUFHLENBQUNVLE1BQUosSUFBYyxHQUF6QjtBQUNBTixFQUFBQSxHQUFHLENBQUNPLE1BQUosQ0FBVyxPQUFYO0FBQ0QsQ0FSRDtBQVVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUJuQyxHQUFqQiIsInNvdXJjZXNDb250ZW50IjpbInZhciBjcmVhdGVFcnJvciA9IHJlcXVpcmUoJ2h0dHAtZXJyb3JzJyk7XHJcbnZhciBleHByZXNzID0gcmVxdWlyZSgnZXhwcmVzcycpO1xyXG5jb25zdCBjb3JzID0gcmVxdWlyZSgnY29ycycpO1xyXG52YXIgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcclxuY29uc3QgYm9keVBhcnNlciA9IHJlcXVpcmUoJ2JvZHktcGFyc2VyJylcclxuY29uc3QgZXhwcmVzc1ZhbGlkYXRvciA9IHJlcXVpcmUoJ2V4cHJlc3MtdmFsaWRhdG9yJylcclxudmFyIHNlc3Npb24gPSByZXF1aXJlKCdleHByZXNzLXNlc3Npb24nKTtcclxudmFyIEZpbGVTdG9yZSA9IHJlcXVpcmUoJ3Nlc3Npb24tZmlsZS1zdG9yZScpKHNlc3Npb24pO1xyXG52YXIgY29va2llUGFyc2VyID0gcmVxdWlyZSgnY29va2llLXBhcnNlcicpO1xyXG52YXIgbG9nZ2VyID0gcmVxdWlyZSgnbW9yZ2FuJyk7XHJcbnZhciBwYXNzcG9ydCA9IHJlcXVpcmUoJ3Bhc3Nwb3J0Jyk7XHJcbmNvbnN0IG1vbmdvb3NlID0gcmVxdWlyZSgnbW9uZ29vc2UnKTtcclxucmVxdWlyZSgnZG90ZW52JykuY29uZmlnKClcclxuXHJcbnZhciB1c2VyUm91dGVyID0gcmVxdWlyZSgnLi9yb3V0ZXMvdXNlclJvdXRlcicpO1xyXG52YXIgZW1wbG95ZWVSb3V0ZXIgPSByZXF1aXJlKCcuL3JvdXRlcy9lbXBsb3llZVJvdXRlcicpO1xyXG52YXIgcGxhY2VSb3V0ZXIgPSByZXF1aXJlKCcuL3JvdXRlcy9wbGFjZVJvdXRlcicpO1xyXG52YXIgc2NoZWR1bGVSb3V0ZXIgPSByZXF1aXJlKCcuL3JvdXRlcy9zY2hlZHVsZVJvdXRlcicpO1xyXG52YXIgdG91cmlzdFJvdXRlciA9IHJlcXVpcmUoJy4vcm91dGVzL3RvdXJpc3RSb3V0ZXInKTtcclxudmFyIGRhc2hib2FyZFJvdXRlciA9IHJlcXVpcmUoJy4vcm91dGVzL2Rhc2hib2FyZFJvdXRlcicpO1xyXG5cclxudmFyIGFwcCA9IGV4cHJlc3MoKTtcclxuXHJcbi8vIHZpZXcgZW5naW5lIHNldHVwXHJcbmFwcC5zZXQoJ3ZpZXdzJywgcGF0aC5qb2luKF9fZGlybmFtZSwgJ3ZpZXdzJykpO1xyXG5hcHAuc2V0KCd2aWV3IGVuZ2luZScsICdqYWRlJyk7XHJcbmFwcC51c2UoY29ycygpKTtcclxuYXBwLnVzZShwYXNzcG9ydC5pbml0aWFsaXplKCkpO1xyXG5cclxuYXBwLnVzZShib2R5UGFyc2VyLmpzb24oKSk7XHJcblxyXG5hcHAudXNlKGNvb2tpZVBhcnNlcigndGhlLWltbW9ydGFsLWNvaWxzJykpO1xyXG4vLyBhcHAudXNlKGxvZ2dlcignZGV2JykpO1xyXG5hcHAudXNlKGV4cHJlc3MuanNvbigpKTtcclxuYXBwLnVzZShleHByZXNzLnVybGVuY29kZWQoeyBleHRlbmRlZDogZmFsc2UgfSkpO1xyXG5hcHAudXNlKGNvb2tpZVBhcnNlcigpKTtcclxuLy8gYXBwLnVzZShleHByZXNzLnN0YXRpYygnYnVpbGQnKSk7XHJcbmFwcC51c2UoZXhwcmVzcy5zdGF0aWMocGF0aC5qb2luKF9fZGlybmFtZSwgJ2J1aWxkJykpKTtcclxuXHJcbnZhciB1cmwgPSBwcm9jZXNzLmVudi5tb25nb1VybDtcclxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAndGVzdCcpIHtcclxuICB1cmwgPSBwcm9jZXNzLmVudi50ZXN0TW9uZ29Vcmw7XHJcbn1cclxubW9uZ29vc2UuY29ubmVjdCh1cmwsIHsgdXNlTmV3VXJsUGFyc2VyOiB0cnVlLCB1c2VDcmVhdGVJbmRleDogdHJ1ZSwgdXNlVW5pZmllZFRvcG9sb2d5OiB0cnVlIH0pLnRoZW4oKGRiKSA9PiB7XHJcbn0sIChlcnIpID0+IHtcclxuICBpZiAoZXJyKSB7XHJcbiAgICBjb25zb2xlLmxvZygn8J+RuiAgRXJyb3IgY29ubmVjdGluZyB0byBNb25nb0RCJyk7XHJcbiAgfSBlbHNlIHtcclxuICAgIGNvbnNvbGUubG9nKCfinIUgIENvbm5lY3RlZCB0byBNb25nb0RCJyk7XHJcbiAgfVxyXG59KTtcclxuXHJcbmFwcC51c2UoJy91c2VycycsIHVzZXJSb3V0ZXIpO1xyXG5hcHAudXNlKCcvZW1wbG95ZWVzJywgZW1wbG95ZWVSb3V0ZXIpO1xyXG5hcHAudXNlKCcvcGxhY2VzJywgcGxhY2VSb3V0ZXIpO1xyXG5hcHAudXNlKCcvc2NoZWR1bGVzJywgc2NoZWR1bGVSb3V0ZXIpO1xyXG5hcHAudXNlKCcvdG91cmlzdHMnLCB0b3VyaXN0Um91dGVyKTtcclxuYXBwLnVzZSgnL2Rhc2hib2FyZCcsIGRhc2hib2FyZFJvdXRlcik7XHJcblxyXG4vLyBjYXRjaCA0MDQgYW5kIGZvcndhcmQgdG8gZXJyb3IgaGFuZGxlclxyXG5hcHAudXNlKGZ1bmN0aW9uIChyZXEsIHJlcywgbmV4dCkge1xyXG4gIG5leHQoY3JlYXRlRXJyb3IoNDA0KSk7XHJcbn0pO1xyXG5cclxuLy8gZXJyb3IgaGFuZGxlclxyXG5hcHAudXNlKGZ1bmN0aW9uIChlcnIsIHJlcSwgcmVzLCBuZXh0KSB7XHJcbiAgLy8gc2V0IGxvY2Fscywgb25seSBwcm92aWRpbmcgZXJyb3IgaW4gZGV2ZWxvcG1lbnRcclxuICByZXMubG9jYWxzLm1lc3NhZ2UgPSBlcnIubWVzc2FnZTtcclxuICByZXMubG9jYWxzLmVycm9yID0gcmVxLmFwcC5nZXQoJ2VudicpID09PSAnZGV2ZWxvcG1lbnQnID8gZXJyIDoge307XHJcblxyXG4gIC8vIHJlbmRlciB0aGUgZXJyb3IgcGFnZVxyXG4gIHJlcy5zdGF0dXMoZXJyLnN0YXR1cyB8fCA1MDApO1xyXG4gIHJlcy5yZW5kZXIoJ2Vycm9yJyk7XHJcbn0pO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBhcHA7XHJcbiJdfQ==\",\"originalCode\":\"var createError = require('http-errors');\\r\\nvar express = require('express');\\r\\nconst cors = require('cors');\\r\\nvar path = require('path');\\r\\nconst bodyParser = require('body-parser')\\r\\nconst expressValidator = require('express-validator')\\r\\nvar session = require('express-session');\\r\\nvar FileStore = require('session-file-store')(session);\\r\\nvar cookieParser = require('cookie-parser');\\r\\nvar logger = require('morgan');\\r\\nvar passport = require('passport');\\r\\nconst mongoose = require('mongoose');\\r\\nrequire('dotenv').config()\\r\\n\\r\\nvar userRouter = require('./routes/userRouter');\\r\\nvar employeeRouter = require('./routes/employeeRouter');\\r\\nvar placeRouter = require('./routes/placeRouter');\\r\\nvar scheduleRouter = require('./routes/scheduleRouter');\\r\\nvar touristRouter = require('./routes/touristRouter');\\r\\nvar dashboardRouter = require('./routes/dashboardRouter');\\r\\n\\r\\nvar app = express();\\r\\n\\r\\n// view engine setup\\r\\napp.set('views', path.join(__dirname, 'views'));\\r\\napp.set('view engine', 'jade');\\r\\napp.use(cors());\\r\\napp.use(passport.initialize());\\r\\n\\r\\napp.use(bodyParser.json());\\r\\n\\r\\napp.use(cookieParser('the-immortal-coils'));\\r\\n// app.use(logger('dev'));\\r\\napp.use(express.json());\\r\\napp.use(express.urlencoded({ extended: false }));\\r\\napp.use(cookieParser());\\r\\n// app.use(express.static('build'));\\r\\napp.use(express.static(path.join(__dirname, 'build')));\\r\\n\\r\\nvar url = process.env.mongoUrl;\\r\\nif (process.env.NODE_ENV === 'test') {\\r\\n url = process.env.testMongoUrl;\\r\\n}\\r\\nmongoose.connect(url, { useNewUrlParser: true, useCreateIndex: true, useUnifiedTopology: true }).then((db) => {\\r\\n}, (err) => {\\r\\n if (err) {\\r\\n console.log('👺 Error connecting to MongoDB');\\r\\n } else {\\r\\n console.log('✅ Connected to MongoDB');\\r\\n }\\r\\n});\\r\\n\\r\\napp.use('/users', userRouter);\\r\\napp.use('/employees', employeeRouter);\\r\\napp.use('/places', placeRouter);\\r\\napp.use('/schedules', scheduleRouter);\\r\\napp.use('/tourists', touristRouter);\\r\\napp.use('/dashboard', dashboardRouter);\\r\\n\\r\\n// catch 404 and forward to error handler\\r\\napp.use(function (req, res, next) {\\r\\n next(createError(404));\\r\\n});\\r\\n\\r\\n// error handler\\r\\napp.use(function (err, req, res, next) {\\r\\n // set locals, only providing error in development\\r\\n res.locals.message = err.message;\\r\\n res.locals.error = req.app.get('env') === 'development' ? err : {};\\r\\n\\r\\n // render the error page\\r\\n res.status(err.status || 500);\\r\\n res.render('error');\\r\\n});\\r\\n\\r\\nmodule.exports = app;\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/01/app_010e21b7416079df77678cc6cb70a530.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"1596\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\app.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":10626,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":10623,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1632,\"endOffset\":1640,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1642,\"endOffset\":1776,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":2049,\"endOffset\":2104,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":2133,\"endOffset\":2408,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"var express = require('express');\\n\\nvar userRouter = express.Router();\\n\\nconst bodyParser = require('body-parser');\\n\\nvar upload = require('../controllers/upload');\\n\\nconst {\\n checkSchema\\n} = require('express-validator');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nvar validationRules = require('../middleware/validation');\\n\\nvar userController = require('../controllers/userController');\\n\\nconst cors = require('./cors');\\n\\nuserRouter.use(bodyParser.json());\\nuserRouter.options('*', cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n});\\nuserRouter.post('/signup/admin', cors.corsWithOptions, userController.signupAdmin);\\nuserRouter.post('/login', cors.corsWithOptions, userController.login);\\nuserRouter.post('/changepassoword/:id', authenticate.verifyUser, userController.changePassoword);\\nuserRouter.post(\\\"/updateprofilepicture/:id\\\", authenticate.verifyUser, upload.UploadUserImage);\\nuserRouter.get('/logout', authenticate.verifyUser, userController.logout);\\nmodule.exports = userRouter;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVzZXJSb3V0ZXIuanMiXSwibmFtZXMiOlsiZXhwcmVzcyIsInJlcXVpcmUiLCJ1c2VyUm91dGVyIiwiUm91dGVyIiwiYm9keVBhcnNlciIsInVwbG9hZCIsImNoZWNrU2NoZW1hIiwiYXV0aGVudGljYXRlIiwidmFsaWRhdGlvblJ1bGVzIiwidXNlckNvbnRyb2xsZXIiLCJjb3JzIiwidXNlIiwianNvbiIsIm9wdGlvbnMiLCJjb3JzV2l0aE9wdGlvbnMiLCJyZXEiLCJyZXMiLCJzZW5kU3RhdHVzIiwicG9zdCIsInNpZ251cEFkbWluIiwibG9naW4iLCJ2ZXJpZnlVc2VyIiwiY2hhbmdlUGFzc293b3JkIiwiVXBsb2FkVXNlckltYWdlIiwiZ2V0IiwibG9nb3V0IiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsSUFBSUEsT0FBTyxHQUFHQyxPQUFPLENBQUMsU0FBRCxDQUFyQjs7QUFDQSxJQUFJQyxVQUFVLEdBQUdGLE9BQU8sQ0FBQ0csTUFBUixFQUFqQjs7QUFFQSxNQUFNQyxVQUFVLEdBQUdILE9BQU8sQ0FBQyxhQUFELENBQTFCOztBQUNBLElBQUlJLE1BQU0sR0FBR0osT0FBTyxDQUFDLHVCQUFELENBQXBCOztBQUNBLE1BQU07QUFBRUssRUFBQUE7QUFBRixJQUFrQkwsT0FBTyxDQUFDLG1CQUFELENBQS9COztBQUNBLElBQUlNLFlBQVksR0FBR04sT0FBTyxDQUFDLDRCQUFELENBQTFCOztBQUNBLElBQUlPLGVBQWUsR0FBR1AsT0FBTyxDQUFDLDBCQUFELENBQTdCOztBQUNBLElBQUlRLGNBQWMsR0FBR1IsT0FBTyxDQUFDLCtCQUFELENBQTVCOztBQUNBLE1BQU1TLElBQUksR0FBR1QsT0FBTyxDQUFDLFFBQUQsQ0FBcEI7O0FBRUFDLFVBQVUsQ0FBQ1MsR0FBWCxDQUFlUCxVQUFVLENBQUNRLElBQVgsRUFBZjtBQUVBVixVQUFVLENBQUNXLE9BQVgsQ0FBbUIsR0FBbkIsRUFBd0JILElBQUksQ0FBQ0ksZUFBN0IsRUFBOEMsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEtBQWM7QUFBRUEsRUFBQUEsR0FBRyxDQUFDQyxVQUFKLENBQWUsR0FBZjtBQUFzQixDQUFwRjtBQUVBZixVQUFVLENBQUNnQixJQUFYLENBQWdCLGVBQWhCLEVBQWlDUixJQUFJLENBQUNJLGVBQXRDLEVBQXVETCxjQUFjLENBQUNVLFdBQXRFO0FBRUFqQixVQUFVLENBQUNnQixJQUFYLENBQWdCLFFBQWhCLEVBQTBCUixJQUFJLENBQUNJLGVBQS9CLEVBQWdETCxjQUFjLENBQUNXLEtBQS9EO0FBRUFsQixVQUFVLENBQUNnQixJQUFYLENBQWdCLHNCQUFoQixFQUF1Q1gsWUFBWSxDQUFDYyxVQUFwRCxFQUFnRVosY0FBYyxDQUFDYSxlQUEvRTtBQUVBcEIsVUFBVSxDQUFDZ0IsSUFBWCxDQUFnQiwyQkFBaEIsRUFBNENYLFlBQVksQ0FBQ2MsVUFBekQsRUFBcUVoQixNQUFNLENBQUNrQixlQUE1RTtBQUVBckIsVUFBVSxDQUFDc0IsR0FBWCxDQUFlLFNBQWYsRUFBeUJqQixZQUFZLENBQUNjLFVBQXRDLEVBQWtEWixjQUFjLENBQUNnQixNQUFqRTtBQUVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUJ6QixVQUFqQiIsInNvdXJjZXNDb250ZW50IjpbInZhciBleHByZXNzID0gcmVxdWlyZSgnZXhwcmVzcycpO1xyXG52YXIgdXNlclJvdXRlciA9IGV4cHJlc3MuUm91dGVyKCk7XHJcblxyXG5jb25zdCBib2R5UGFyc2VyID0gcmVxdWlyZSgnYm9keS1wYXJzZXInKTtcclxudmFyIHVwbG9hZCA9IHJlcXVpcmUoJy4uL2NvbnRyb2xsZXJzL3VwbG9hZCcpO1xyXG5jb25zdCB7IGNoZWNrU2NoZW1hIH0gPSByZXF1aXJlKCdleHByZXNzLXZhbGlkYXRvcicpO1xyXG52YXIgYXV0aGVudGljYXRlID0gcmVxdWlyZSgnLi4vbWlkZGxld2FyZS9hdXRoZW50aWNhdGUnKTtcclxudmFyIHZhbGlkYXRpb25SdWxlcyA9IHJlcXVpcmUoJy4uL21pZGRsZXdhcmUvdmFsaWRhdGlvbicpO1xyXG52YXIgdXNlckNvbnRyb2xsZXIgPSByZXF1aXJlKCcuLi9jb250cm9sbGVycy91c2VyQ29udHJvbGxlcicpO1xyXG5jb25zdCBjb3JzID0gcmVxdWlyZSgnLi9jb3JzJyk7XHJcblxyXG51c2VyUm91dGVyLnVzZShib2R5UGFyc2VyLmpzb24oKSk7XHJcblxyXG51c2VyUm91dGVyLm9wdGlvbnMoJyonLCBjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcblxyXG51c2VyUm91dGVyLnBvc3QoJy9zaWdudXAvYWRtaW4nLCBjb3JzLmNvcnNXaXRoT3B0aW9ucywgdXNlckNvbnRyb2xsZXIuc2lnbnVwQWRtaW4pO1xyXG5cclxudXNlclJvdXRlci5wb3N0KCcvbG9naW4nLCBjb3JzLmNvcnNXaXRoT3B0aW9ucywgdXNlckNvbnRyb2xsZXIubG9naW4pO1xyXG5cclxudXNlclJvdXRlci5wb3N0KCcvY2hhbmdlcGFzc293b3JkLzppZCcsYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIHVzZXJDb250cm9sbGVyLmNoYW5nZVBhc3Nvd29yZCk7XHJcblxyXG51c2VyUm91dGVyLnBvc3QoXCIvdXBkYXRlcHJvZmlsZXBpY3R1cmUvOmlkXCIsYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIHVwbG9hZC5VcGxvYWRVc2VySW1hZ2UpO1xyXG5cclxudXNlclJvdXRlci5nZXQoJy9sb2dvdXQnLGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCB1c2VyQ29udHJvbGxlci5sb2dvdXQpO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSB1c2VyUm91dGVyO1xyXG4iXX0=\",\"originalCode\":\"var express = require('express');\\r\\nvar userRouter = express.Router();\\r\\n\\r\\nconst bodyParser = require('body-parser');\\r\\nvar upload = require('../controllers/upload');\\r\\nconst { checkSchema } = require('express-validator');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\nvar validationRules = require('../middleware/validation');\\r\\nvar userController = require('../controllers/userController');\\r\\nconst cors = require('./cors');\\r\\n\\r\\nuserRouter.use(bodyParser.json());\\r\\n\\r\\nuserRouter.options('*', cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n\\r\\nuserRouter.post('/signup/admin', cors.corsWithOptions, userController.signupAdmin);\\r\\n\\r\\nuserRouter.post('/login', cors.corsWithOptions, userController.login);\\r\\n\\r\\nuserRouter.post('/changepassoword/:id',authenticate.verifyUser, userController.changePassoword);\\r\\n\\r\\nuserRouter.post(\\\"/updateprofilepicture/:id\\\",authenticate.verifyUser, upload.UploadUserImage);\\r\\n\\r\\nuserRouter.get('/logout',authenticate.verifyUser, userController.logout);\\r\\n\\r\\nmodule.exports = userRouter;\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/a6/userRouter_a6221ff3be20743fe1c0fd1dc9fd8435.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2377\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\userRouter.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":4566,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":4563,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":606,\"endOffset\":646,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const sharp = require('sharp');\\n\\nconst uid = require('uid');\\n\\nconst fs = require('fs');\\n\\nconst Users = require('../models/users');\\n\\nconst Places = require('../models/visitingPlaces');\\n\\nconst uploadFile = async (req, res) => {\\n try {\\n await upload(req, res);\\n\\n if (req.file == undefined) {\\n return res.send(`You must select a file.`);\\n }\\n\\n return res.send(`File has been uploaded.`);\\n } catch (error) {\\n return res.send(`Error when trying upload image: ${error}`);\\n }\\n};\\n\\nconst UploadUserImage = async (req, res, next) => {\\n try {\\n const user_id = req.params._id;\\n const user = await Users.findById(user_id);\\n console.log(req);\\n let imageUrl;\\n\\n if (req.file) {\\n imageUrl = `${uid()}__${req.file.originalname}`;\\n let filename = `images/userImages/${imageUrl}`;\\n let previousImagePath = `images/userImages/${user.image}`;\\n const imageExist = fs.existsSync(previousImagePath);\\n\\n if (imageExist) {\\n deleteImage(previousImagePath);\\n }\\n\\n await sharp(req.file.path).rotate().resize(500, 500).toFile(filename);\\n fs.unlink(req.file.path, err => {\\n if (err) {}\\n });\\n } else {\\n imageUrl = 'profile.png';\\n }\\n\\n user.image = imageUrl;\\n await user.save();\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n message: 'Successfully updated profile picture'\\n });\\n } catch (err) {\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Error while updating profile picture'\\n });\\n }\\n};\\n\\nconst uploadPlaceImage = async (req, res, next) => {\\n try {\\n const place_id = req.params._id;\\n const place = await Places.findById(place_id);\\n let imageUrl;\\n\\n if (req.file) {\\n imageUrl = `${uid()}__${req.file.originalname}`;\\n let filename = `images/placeImages/${imageUrl}`;\\n let previousImagePath = `images/placeImages/${place.image}`;\\n const imageExist = fs.existsSync(previousImagePath);\\n\\n if (imageExist) {\\n deleteImage(previousImagePath);\\n }\\n\\n await sharp(req.file.path).rotate().resize(500, 500).toFile(filename);\\n fs.unlink(req.file.path, err => {\\n if (err) {}\\n });\\n } else {\\n imageUrl = 'image.png';\\n }\\n\\n place.image = imageUrl;\\n await place.save();\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n message: 'Successfully updated profile picture'\\n });\\n } catch (err) {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Error while updating profile picture'\\n });\\n }\\n};\\n\\nexports.UploadUserImage = UploadUserImage;\\nexports.uploadFile = uploadFile;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVwbG9hZC5qcyJdLCJuYW1lcyI6WyJzaGFycCIsInJlcXVpcmUiLCJ1aWQiLCJmcyIsIlVzZXJzIiwiUGxhY2VzIiwidXBsb2FkRmlsZSIsInJlcSIsInJlcyIsInVwbG9hZCIsImZpbGUiLCJ1bmRlZmluZWQiLCJzZW5kIiwiZXJyb3IiLCJVcGxvYWRVc2VySW1hZ2UiLCJuZXh0IiwidXNlcl9pZCIsInBhcmFtcyIsIl9pZCIsInVzZXIiLCJmaW5kQnlJZCIsImNvbnNvbGUiLCJsb2ciLCJpbWFnZVVybCIsIm9yaWdpbmFsbmFtZSIsImZpbGVuYW1lIiwicHJldmlvdXNJbWFnZVBhdGgiLCJpbWFnZSIsImltYWdlRXhpc3QiLCJleGlzdHNTeW5jIiwiZGVsZXRlSW1hZ2UiLCJwYXRoIiwicm90YXRlIiwicmVzaXplIiwidG9GaWxlIiwidW5saW5rIiwiZXJyIiwic2F2ZSIsInN0YXR1c0NvZGUiLCJzZXRIZWFkZXIiLCJqc29uIiwic3VjY2VzcyIsIm1lc3NhZ2UiLCJ1cGxvYWRQbGFjZUltYWdlIiwicGxhY2VfaWQiLCJwbGFjZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLEtBQUssR0FBR0MsT0FBTyxDQUFDLE9BQUQsQ0FBckI7O0FBQ0EsTUFBTUMsR0FBRyxHQUFHRCxPQUFPLENBQUMsS0FBRCxDQUFuQjs7QUFDQSxNQUFNRSxFQUFFLEdBQUdGLE9BQU8sQ0FBQyxJQUFELENBQWxCOztBQUNBLE1BQU1HLEtBQUssR0FBR0gsT0FBTyxDQUFDLGlCQUFELENBQXJCOztBQUNBLE1BQU1JLE1BQU0sR0FBR0osT0FBTyxDQUFDLDBCQUFELENBQXRCOztBQUVBLE1BQU1LLFVBQVUsR0FBRyxPQUFPQyxHQUFQLEVBQVlDLEdBQVosS0FBb0I7QUFDbkMsTUFBSTtBQUNBLFVBQU1DLE1BQU0sQ0FBQ0YsR0FBRCxFQUFNQyxHQUFOLENBQVo7O0FBRUEsUUFBSUQsR0FBRyxDQUFDRyxJQUFKLElBQVlDLFNBQWhCLEVBQTJCO0FBQ3ZCLGFBQU9I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Q0FBQzhCLFVBQUosR0FBaUIsR0FBakI7QUFDQTlCLElBQUFBLEdBQUcsQ0FBQytCLFNBQUosQ0FBYyxjQUFkLEVBQThCLGtCQUE5QjtBQUNBL0IsSUFBQUEsR0FBRyxDQUFDZ0MsSUFBSixDQUFTO0FBQUVDLE1BQUFBLE9BQU8sRUFBRSxLQUFYO0FBQWtCQyxNQUFBQSxPQUFPLEVBQUU7QUFBM0IsS0FBVDtBQUNIO0FBQ0osQ0F6Q0Q7O0FBMkNBSSxPQUFPLENBQUNoQyxlQUFSLEdBQTBCQSxlQUExQjtBQUNBZ0MsT0FBTyxDQUFDeEMsVUFBUixHQUFxQkEsVUFBckIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBzaGFycCA9IHJlcXVpcmUoJ3NoYXJwJyk7XHJcbmNvbnN0IHVpZCA9IHJlcXVpcmUoJ3VpZCcpO1xyXG5jb25zdCBmcyA9IHJlcXVpcmUoJ2ZzJyk7XHJcbmNvbnN0IFVzZXJzID0gcmVxdWlyZSgnLi4vbW9kZWxzL3VzZXJzJyk7XHJcbmNvbnN0IFBsYWNlcyA9IHJlcXVpcmUoJy4uL21vZGVscy92aXNpdGluZ1BsYWNlcycpXHJcblxyXG5jb25zdCB1cGxvYWRGaWxlID0gYXN5bmMgKHJlcSwgcmVzKSA9PiB7XHJcbiAgICB0cnkge1xyXG4gICAgICAgIGF3YWl0IHVwbG9hZChyZXEsIHJlcyk7XHJcblxyXG4gICAgICAgIGlmIChyZXEuZmlsZSA9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlcy5zZW5kKGBZb3UgbXVzdCBzZWxlY3QgYSBmaWxlLmApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHJlcy5zZW5kKGBGaWxlIGhhcyBiZWVuIHVwbG9hZGVkLmApO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICByZXR1cm4gcmVzLnNlbmQoYEVycm9yIHdoZW4gdHJ5aW5nIHVwbG9hZCBpbWFnZTogJHtlcnJvcn1gKTtcclxuICAgIH1cclxufTtcclxuXHJcbmNvbnN0IFVwbG9hZFVzZXJJbWFnZSA9IGFzeW5jIChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgICBjb25zdCB1c2VyX2lkID0gcmVxLnBhcmFtcy5faWQ7XHJcbiAgICAgICAgY29uc3QgdXNlciA9IGF3YWl0IFVzZXJzLmZpbmRCeUlkKHVzZXJfaWQpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKHJlcSk7XHJcblxyXG4gICAgICAgIGxldCBpbWFnZVVybDtcclxuICAgICAgICBpZiAocmVxLmZpbGUpIHtcclxuICAgICAgICAgICAgaW1hZ2VVcmwgPSBgJHt1aWQoKX1fXyR7cmVxLmZpbGUub3JpZ2luYWxuYW1lfWA7XHJcbiAgICAgICAgICAgIGxldCBmaWxlbmFtZSA9IGBpbWFnZXMvdXNlckltYWdlcy8ke2ltYWdlVXJsfWA7XHJcbiAgICAgICAgICAgIGxldCBwcmV2aW91c0ltYWdlUGF0aCA9IGBpbWFnZXMvdXNlckltYWdlcy8ke3VzZXIuaW1hZ2V9YDtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGltYWdlRXhpc3QgPSBmcy5leGlzdHNTeW5jKHByZXZpb3VzSW1hZ2VQYXRoKTtcclxuICAgICAgICAgICAgaWYgKGltYWdlRXhpc3QpIHtcclxuICAgICAgICAgICAgICAgIGRlbGV0ZUltYWdlKHByZXZpb3VzSW1hZ2VQYXRoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBhd2FpdCBzaGFycChyZXEuZmlsZS5wYXRoKVxyXG4gICAgICAgICAgICAgICAgLnJvdGF0ZSgpXHJcbiAgICAgICAgICAgICAgICAucmVzaXplKDUwMCwgNTAwKVxyXG4gICAgICAgICAgICAgICAgLnRvRmlsZShmaWxlbmFtZSk7XHJcblxyXG4gICAgICAgICAgICBmcy51bmxpbmsocmVxLmZpbGUucGF0aCwgKGVycikgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGltYWdlVXJsID0gJ3Byb2ZpbGUucG5nJztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHVzZXIuaW1hZ2UgPSBpbWFnZVVybDtcclxuICAgICAgICBhd2FpdCB1c2VyLnNhdmUoKTtcclxuXHJcblxyXG4gICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCBtZXNzYWdlOiAnU3VjY2Vzc2Z1bGx5IHVwZGF0ZWQgcHJvZmlsZSBwaWN0dXJlJyB9KTtcclxuXHJcbiAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDUwMDtcclxuICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogZmFsc2UsIG1lc3NhZ2U6ICdFcnJvciB3aGlsZSB1cGRhdGluZyBwcm9maWxlIHBpY3R1cmUnIH0pO1xyXG4gICAgfVxyXG59O1xyXG5cclxuY29uc3QgdXBsb2FkUGxhY2VJbWFnZSA9IGFzeW5jIChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgICBjb25zdCBwbGFjZV9pZCA9IHJlcS5wYXJhbXMuX2lkO1xyXG4gICAgICAgIGNvbnN0IHBsYWNlID0gYXdhaXQgUGxhY2VzLmZpbmRCeUlkKHBsYWNlX2lkKTtcclxuXHJcbiAgICAgICAgbGV0IGltYWdlVXJsO1xyXG4gICAgICAgIGlmIChyZXEuZmlsZSkge1xyXG4gICAgICAgICAgICBpbWFnZVVybCA9IGAke3VpZCgpfV9fJHtyZXEuZmlsZS5vcmlnaW5hbG5hbWV9YDtcclxuICAgICAgICAgICAgbGV0IGZpbGVuYW1lID0gYGltYWdlcy9wbGFjZUltYWdlcy8ke2ltYWdlVXJsfWA7XHJcbiAgICAgICAgICAgIGxldCBwcmV2aW91c0ltYWdlUGF0aCA9IGBpbWFnZXMvcGxhY2VJbWFnZXMvJHtwbGFjZS5pbWFnZX1gO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgaW1hZ2VFeGlzdCA9IGZzLmV4aXN0c1N5bmMocHJldmlvdXNJbWFnZVBhdGgpO1xyXG4gICAgICAgICAgICBpZiAoaW1hZ2VFeGlzdCkge1xyXG4gICAgICAgICAgICAgICAgZGVsZXRlSW1hZ2UocHJldmlvdXNJbWFnZVBhdGgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGF3YWl0IHNoYXJwKHJlcS5maWxlLnBhdGgpXHJcbiAgICAgICAgICAgICAgICAucm90YXRlKClcclxuICAgICAgICAgICAgICAgIC5yZXNpemUoNTAwLCA1MDApXHJcbiAgICAgICAgICAgICAgICAudG9GaWxlKGZpbGVuYW1lKTtcclxuXHJcbiAgICAgICAgICAgIGZzLnVubGluayhyZXEuZmlsZS5wYXRoLCAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaW1hZ2VVcmwgPSAnaW1hZ2UucG5nJztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHBsYWNlLmltYWdlID0gaW1hZ2VVcmw7XHJcbiAgICAgICAgYXdhaXQgcGxhY2Uuc2F2ZSgpO1xyXG5cclxuXHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA1MDA7XHJcbiAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIG1lc3NhZ2U6ICdTdWNjZXNzZnVsbHkgdXBkYXRlZCBwcm9maWxlIHBpY3R1cmUnIH0pO1xyXG5cclxuICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogJ0Vycm9yIHdoaWxlIHVwZGF0aW5nIHByb2ZpbGUgcGljdHVyZScgfSk7XHJcbiAgICB9XHJcbn07XHJcblxyXG5leHBvcnRzLlVwbG9hZFVzZXJJbWFnZSA9IFVwbG9hZFVzZXJJbWFnZTtcclxuZXhwb3J0cy51cGxvYWRGaWxlID0gdXBsb2FkRmlsZTsiXX0=\",\"originalCode\":\"const sharp = require('sharp');\\r\\nconst uid = require('uid');\\r\\nconst fs = require('fs');\\r\\nconst Users = require('../models/users');\\r\\nconst Places = require('../models/visitingPlaces')\\r\\n\\r\\nconst uploadFile = async (req, res) => {\\r\\n try {\\r\\n await upload(req, res);\\r\\n\\r\\n if (req.file == undefined) {\\r\\n return res.send(`You must select a file.`);\\r\\n }\\r\\n\\r\\n return res.send(`File has been uploaded.`);\\r\\n } catch (error) {\\r\\n return res.send(`Error when trying upload image: ${error}`);\\r\\n }\\r\\n};\\r\\n\\r\\nconst UploadUserImage = async (req, res, next) => {\\r\\n try {\\r\\n const user_id = req.params._id;\\r\\n const user = await Users.findById(user_id);\\r\\n console.log(req);\\r\\n\\r\\n let imageUrl;\\r\\n if (req.file) {\\r\\n imageUrl = `${uid()}__${req.file.originalname}`;\\r\\n let filename = `images/userImages/${imageUrl}`;\\r\\n let previousImagePath = `images/userImages/${user.image}`;\\r\\n\\r\\n const imageExist = fs.existsSync(previousImagePath);\\r\\n if (imageExist) {\\r\\n deleteImage(previousImagePath);\\r\\n }\\r\\n await sharp(req.file.path)\\r\\n .rotate()\\r\\n .resize(500, 500)\\r\\n .toFile(filename);\\r\\n\\r\\n fs.unlink(req.file.path, (err) => {\\r\\n if (err) {\\r\\n }\\r\\n })\\r\\n } else {\\r\\n imageUrl = 'profile.png';\\r\\n }\\r\\n\\r\\n user.image = imageUrl;\\r\\n await user.save();\\r\\n\\r\\n\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, message: 'Successfully updated profile picture' });\\r\\n\\r\\n } catch (err) {\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Error while updating profile picture' });\\r\\n }\\r\\n};\\r\\n\\r\\nconst uploadPlaceImage = async (req, res, next) => {\\r\\n try {\\r\\n const place_id = req.params._id;\\r\\n const place = await Places.findById(place_id);\\r\\n\\r\\n let imageUrl;\\r\\n if (req.file) {\\r\\n imageUrl = `${uid()}__${req.file.originalname}`;\\r\\n let filename = `images/placeImages/${imageUrl}`;\\r\\n let previousImagePath = `images/placeImages/${place.image}`;\\r\\n\\r\\n const imageExist = fs.existsSync(previousImagePath);\\r\\n if (imageExist) {\\r\\n deleteImage(previousImagePath);\\r\\n }\\r\\n await sharp(req.file.path)\\r\\n .rotate()\\r\\n .resize(500, 500)\\r\\n .toFile(filename);\\r\\n\\r\\n fs.unlink(req.file.path, (err) => {\\r\\n if (err) {\\r\\n }\\r\\n })\\r\\n } else {\\r\\n imageUrl = 'image.png';\\r\\n }\\r\\n\\r\\n place.image = imageUrl;\\r\\n await place.save();\\r\\n\\r\\n\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, message: 'Successfully updated profile picture' });\\r\\n\\r\\n } catch (err) {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Error while updating profile picture' });\\r\\n }\\r\\n};\\r\\n\\r\\nexports.UploadUserImage = UploadUserImage;\\r\\nexports.uploadFile = uploadFile;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/7c/upload_7c4638f764653e4bdd79a0ce3f99ff41.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2378\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\upload.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":12934,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":12931,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"uploadFile\",\"ranges\":[{\"startOffset\":293,\"endOffset\":580,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"UploadUserImage\",\"ranges\":[{\"startOffset\":607,\"endOffset\":1726,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"uploadPlaceImage\",\"ranges\":[{\"startOffset\":1754,\"endOffset\":2858,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"var mongoose = require('mongoose');\\n\\nvar Schema = mongoose.Schema;\\n\\nvar passportLocalMongoose = require('passport-local-mongoose');\\n\\nvar User = new Schema({\\n firstname: {\\n type: String,\\n required: true\\n },\\n lastname: {\\n type: String,\\n required: true\\n },\\n email: {\\n type: String,\\n required: true,\\n unique: true\\n },\\n mobile: {\\n type: String\\n },\\n role: {\\n type: String,\\n default: \\\"user\\\",\\n enum: ['user', 'moderater', 'admin']\\n },\\n image: {\\n type: String\\n },\\n suite: {\\n type: String,\\n enum: ['gold', 'luxury', 'platinum']\\n },\\n rommnumber: {\\n type: String\\n },\\n userstate: {\\n type: String,\\n default: \\\"in\\\",\\n enum: ['in', 'out']\\n }\\n}, {\\n timestamps: true\\n});\\nUser.plugin(passportLocalMongoose);\\nUser.index({\\n '$**': 'text'\\n});\\nvar Users = mongoose.model('User', User);\\nmodule.exports = Users;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVzZXJzLmpzIl0sIm5hbWVzIjpbIm1vbmdvb3NlIiwicmVxdWlyZSIsIlNjaGVtYSIsInBhc3Nwb3J0TG9jYWxNb25nb29zZSIsIlVzZXIiLCJmaXJzdG5hbWUiLCJ0eXBlIiwiU3RyaW5nIiwicmVxdWlyZWQiLCJsYXN0bmFtZSIsImVtYWlsIiwidW5pcXVlIiwibW9iaWxlIiwicm9sZSIsImRlZmF1bHQiLCJlbnVtIiwiaW1hZ2UiLCJzdWl0ZSIsInJvbW1udW1iZXIiLCJ1c2Vyc3RhdGUiLCJ0aW1lc3RhbXBzIiwicGx1Z2luIiwiaW5kZXgiLCJVc2VycyIsIm1vZGVsIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsSUFBSUEsUUFBUSxHQUFHQyxPQUFPLENBQUMsVUFBRCxDQUF0Qjs7QUFDQSxJQUFJQyxNQUFNLEdBQUdGLFFBQVEsQ0FBQ0UsTUFBdEI7O0FBRUEsSUFBSUMscUJBQXFCLEdBQUdGLE9BQU8sQ0FBQyx5QkFBRCxDQUFuQzs7QUFFQSxJQUFJRyxJQUFJLEdBQUcsSUFBSUYsTUFBSixDQUFXO0FBQ2xCRyxFQUFBQSxTQUFTLEVBQUU7QUFDUEMsSUFBQUEsSUFBSSxFQUFFQyxNQURDO0FBRVBDLElBQUFBLFFBQVEsRUFBRTtBQUZILEdBRE87QUFLbEJDLEVBQUFBLFFBQVEsRUFBRTtBQUNOSCxJQUFBQSxJQUFJLEVBQUVDLE1BREE7QUFFTkMsSUFBQUEsUUFBUSxFQUFFO0FBRkosR0FMUTtBQVNsQkUsRUFBQUEsS0FBSyxFQUFFO0FBQ0hKLElBQUFBLElBQUksRUFBRUMsTUFESDtBQUVIQyxJQUFBQSxRQUFRLEVBQUUsSUFGUDtBQUdIRyxJQUFBQSxNQUFNLEVBQUU7QUFITCxHQVRXO0FBY2xCQyxFQUFBQSxNQUFNLEVBQUM7QUFDSE4sSUFBQUEsSUFBSSxFQUFFQztBQURILEdBZFc7QUFpQmxCTSxFQUFBQSxJQUFJLEVBQ0o7QUFDSVAsSUFBQUEsSUFBSSxFQUFFQyxNQURWO0FBRUlPLElBQUFBLE9BQU8sRUFBRSxNQUZiO0FBR0lDLElBQUFBLElBQUksRUFBQyxDQUFDLE1BQUQsRUFBUSxXQUFSLEVBQW9CLE9BQXBCO0FBSFQsR0FsQmtCO0FBdUJsQkMsRUFBQUEsS0FBSyxFQUFFO0FBQ0hWLElBQUFBLElBQUksRUFBRUM7QUFESCxHQXZCVztBQTBCbEJVLEVBQUFBLEtBQUssRUFBQztBQUNGWCxJQUFBQSxJQUFJLEVBQUVDLE1BREo7QUFFRlEsSUFBQUEsSUFBSSxFQUFDLENBQUMsTUFBRCxFQUFRLFFBQVIsRUFBaUIsVUFBakI7QUFGSCxHQTFCWTtBQThCbEJHLEVBQUFBLFVBQVUsRUFBQztBQUNQWixJQUFBQSxJQUFJLEVBQUVDO0FBREMsR0E5Qk87QUFpQ2xCWSxFQUFBQSxTQUFTLEVBQUM7QUFDTmIsSUFBQUEsSUFBSSxFQUFFQyxNQURBO0FBRU5PLElBQUFBLE9BQU8sRUFBRSxJQUZIO0FBR05DLElBQUFBLElBQUksRUFBQyxDQUFDLElBQUQsRUFBTSxLQUFOO0FBSEM7QUFqQ1EsQ0FBWCxFQXNDUjtBQUNDSyxFQUFBQSxVQUFVLEVBQUU7QUFEYixDQXRDUSxDQUFYO0FBMENBaEIsSUFBSSxDQUFDaUIsTUFBTCxDQUFZbEIscUJBQVo7QUFDQUMsSUFBSSxDQUFDa0IsS0FBTCxDQUFXO0FBQUMsU0FBTTtBQUFQLENBQVg7QUFDQSxJQUFJQyxLQUFLLEdBQUd2QixRQUFRLENBQUN3QixLQUFULENBQWUsTUFBZixFQUF1QnBCLElBQXZCLENBQVo7QUFFQXFCLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQkgsS0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgbW9uZ29vc2UgPSByZXF1aXJlKCdtb25nb29zZScpO1xyXG52YXIgU2NoZW1hID0gbW9uZ29vc2UuU2NoZW1hO1xyXG5cclxudmFyIHBhc3Nwb3J0TG9jYWxNb25nb29zZSA9IHJlcXVpcmUoJ3Bhc3Nwb3J0LWxvY2FsLW1vbmdvb3NlJyk7XHJcblxyXG52YXIgVXNlciA9IG5ldyBTY2hlbWEoe1xyXG4gICAgZmlyc3RuYW1lOiB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlXHJcbiAgICB9LFxyXG4gICAgbGFzdG5hbWU6IHtcclxuICAgICAgICB0eXBlOiBTdHJpbmcsXHJcbiAgICAgICAgcmVxdWlyZWQ6IHRydWVcclxuICAgIH0sXHJcbiAgICBlbWFpbDoge1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgICB1bmlxdWU6IHRydWVcclxuICAgIH0sXHJcbiAgICBtb2JpbGU6e1xyXG4gICAgICAgIHR5cGU6IFN0cmluZ1xyXG4gICAgfSxcclxuICAgIHJvbGU6XHJcbiAgICB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICAgIGRlZmF1bHQ6IFwidXNlclwiLFxyXG4gICAgICAgIGVudW06Wyd1c2VyJywnbW9kZXJhdGVyJywnYWRtaW4nXVxyXG4gICAgfSxcclxuICAgIGltYWdlOiB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nXHJcbiAgICB9LFxyXG4gICAgc3VpdGU6e1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICBlbnVtOlsnZ29sZCcsJ2x1eHVyeScsJ3BsYXRpbnVtJ11cclxuICAgIH0sXHJcbiAgICByb21tbnVtYmVyOntcclxuICAgICAgICB0eXBlOiBTdHJpbmdcclxuICAgIH0sXHJcbiAgICB1c2Vyc3RhdGU6e1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICBkZWZhdWx0OiBcImluXCIsXHJcbiAgICAgICAgZW51bTpbJ2luJywnb3V0J11cclxuICAgIH1cclxufSwge1xyXG4gICAgdGltZXN0YW1wczogdHJ1ZVxyXG59KTtcclxuXHJcblVzZXIucGx1Z2luKHBhc3Nwb3J0TG9jYWxNb25nb29zZSk7XHJcblVzZXIuaW5kZXgoeyckKionOid0ZXh0J30pO1xyXG52YXIgVXNlcnMgPSBtb25nb29zZS5tb2RlbCgnVXNlcicsIFVzZXIpO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBVc2VyczsiXX0=\",\"originalCode\":\"var mongoose = require('mongoose');\\r\\nvar Schema = mongoose.Schema;\\r\\n\\r\\nvar passportLocalMongoose = require('passport-local-mongoose');\\r\\n\\r\\nvar User = new Schema({\\r\\n firstname: {\\r\\n type: String,\\r\\n required: true\\r\\n },\\r\\n lastname: {\\r\\n type: String,\\r\\n required: true\\r\\n },\\r\\n email: {\\r\\n type: String,\\r\\n required: true,\\r\\n unique: true\\r\\n },\\r\\n mobile:{\\r\\n type: String\\r\\n },\\r\\n role:\\r\\n {\\r\\n type: String,\\r\\n default: \\\"user\\\",\\r\\n enum:['user','moderater','admin']\\r\\n },\\r\\n image: {\\r\\n type: String\\r\\n },\\r\\n suite:{\\r\\n type: String,\\r\\n enum:['gold','luxury','platinum']\\r\\n },\\r\\n rommnumber:{\\r\\n type: String\\r\\n },\\r\\n userstate:{\\r\\n type: String,\\r\\n default: \\\"in\\\",\\r\\n enum:['in','out']\\r\\n }\\r\\n}, {\\r\\n timestamps: true\\r\\n});\\r\\n\\r\\nUser.plugin(passportLocalMongoose);\\r\\nUser.index({'$**':'text'});\\r\\nvar Users = mongoose.model('User', User);\\r\\n\\r\\nmodule.exports = Users;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/fa/users_fa250a82bd410ffb1909f920e93eed19.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2448\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\models\\\\users.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":4633,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":4630,\"count\":1}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const mongoose = require('mongoose');\\n\\nconst Schema = mongoose.Schema;\\nconst pointSchema = new Schema({\\n type: {\\n type: String,\\n enum: ['Point'],\\n required: true,\\n default: 'Point'\\n },\\n coordinates: {\\n type: [Number],\\n required: true\\n }\\n});\\nconst placeSchema = new Schema({\\n name: {\\n type: String,\\n required: true,\\n unique: true\\n },\\n description: {\\n type: String,\\n required: true\\n },\\n location: {\\n type: pointSchema,\\n index: '2dsphere',\\n required: true\\n },\\n distance: {\\n type: String,\\n required: true\\n },\\n timeToReach: {\\n type: String,\\n required: true\\n },\\n image: {\\n type: String\\n },\\n travellingMethods: [{\\n type: String,\\n enum: ['Bus', 'Car', 'Train', 'Threewheeler', 'Foot']\\n }]\\n}, {\\n timestamps: true\\n});\\nplaceSchema.index({\\n '$**': 'text'\\n});\\nvar Places = mongoose.model('Place', placeSchema);\\nmodule.exports = Places;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInZpc2l0aW5nUGxhY2VzLmpzIl0sIm5hbWVzIjpbIm1vbmdvb3NlIiwicmVxdWlyZSIsIlNjaGVtYSIsInBvaW50U2NoZW1hIiwidHlwZSIsIlN0cmluZyIsImVudW0iLCJyZXF1aXJlZCIsImRlZmF1bHQiLCJjb29yZGluYXRlcyIsIk51bWJlciIsInBsYWNlU2NoZW1hIiwibmFtZSIsInVuaXF1ZSIsImRlc2NyaXB0aW9uIiwibG9jYXRpb24iLCJpbmRleCIsImRpc3RhbmNlIiwidGltZVRvUmVhY2giLCJpbWFnZSIsInRyYXZlbGxpbmdNZXRob2RzIiwidGltZXN0YW1wcyIsIlBsYWNlcyIsIm1vZGVsIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsUUFBUSxHQUFHQyxPQUFPLENBQUMsVUFBRCxDQUF4Qjs7QUFDQSxNQUFNQyxNQUFNLEdBQUdGLFFBQVEsQ0FBQ0UsTUFBeEI7QUFFQSxNQUFNQyxXQUFXLEdBQUcsSUFBSUQsTUFBSixDQUFXO0FBQzNCRSxFQUFBQSxJQUFJLEVBQUU7QUFDRkEsSUFBQUEsSUFBSSxFQUFFQyxNQURKO0FBRUZDLElBQUFBLElBQUksRUFBRSxDQUFDLE9BQUQsQ0FGSjtBQUdGQyxJQUFBQSxRQUFRLEVBQUUsSUFIUjtBQUlGQyxJQUFBQSxPQUFPLEVBQUU7QUFKUCxHQURxQjtBQU8zQkMsRUFBQUEsV0FBVyxFQUFFO0FBQ1RMLElBQUFBLElBQUksRUFBRSxDQUFDTSxNQUFELENBREc7QUFFVEgsSUFBQUEsUUFBUSxFQUFFO0FBRkQ7QUFQYyxDQUFYLENBQXBCO0FBYUEsTUFBTUksV0FBVyxHQUFHLElBQUlULE1BQUosQ0FBVztBQUMzQlUsRUFBQUEsSUFBSSxFQUFFO0FBQ0ZSLElBQUFBLElBQUksRUFBRUMsTUFESjtBQUVGRSxJQUFBQSxRQUFRLEVBQUUsSUFGUjtBQUdGTSxJQUFBQSxNQUFNLEVBQUU7QUFITixHQURxQjtBQU0zQkMsRUFBQUEsV0FBVyxFQUFFO0FBQ1RWLElBQUFBLElBQUksRUFBRUMsTUFERztBQUVURSxJQUFBQSxRQUFRLEVBQUU7QUFGRCxHQU5jO0FBVTNCUSxFQUFBQSxRQUFRLEVBQUU7QUFDTlgsSUFBQUEsSUFBSSxFQUFFRCxXQURBO0FBRU5hLElBQUFBLEtBQUssRUFBRSxVQUZEO0FBR05ULElBQUFBLFFBQVEsRUFBRTtBQUhKLEdBVmlCO0FBZTNCVSxFQUFBQSxRQUFRLEVBQUU7QUFDTmIsSUFBQUEsSUFBSSxFQUFFQyxNQURBO0FBRU5FLElBQUFBLFFBQVEsRUFBRTtBQUZKLEdBZmlCO0FBbUIzQlcsRUFBQUEsV0FBVyxFQUFFO0FBQ1RkLElBQUFBLElBQUksRUFBRUMsTUFERztBQUVURSxJQUFBQSxRQUFRLEVBQUU7QUFGRCxHQW5CYztBQXVCM0JZLEVBQUFBLEtBQUssRUFDTDtBQUNJZixJQUFBQSxJQUFJLEVBQUVDO0FBRFYsR0F4QjJCO0FBMkIzQmUsRUFBQUEsaUJBQWlCLEVBQUUsQ0FDZjtBQUNJaEIsSUFBQUEsSUFBSSxFQUFFQyxNQURWO0FBRUlDLElBQUFBLElBQUksRUFBRSxDQUFDLEtBQUQsRUFBUSxLQUFSLEVBQWUsT0FBZixFQUF3QixjQUF4QixFQUF3QyxNQUF4QztBQUZWLEdBRGU7QUEzQlEsQ0FBWCxFQWlDakI7QUFDQ2UsRUFBQUEsVUFBVSxFQUFFO0FBRGIsQ0FqQ2lCLENBQXBCO0FBcUNBVixXQUFXLENBQUNLLEtBQVosQ0FBa0I7QUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJTSxNQUFNLEdBQUd0QixRQUFRLENBQUN1QixLQUFULENBQWUsT0FBZixFQUF3QlosV0FBeEIsQ0FBYjtBQUVBYSxNQUFNLENBQUNDLE9BQVAsR0FBaUJILE1BQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgbW9uZ29vc2UgPSByZXF1aXJlKCdtb25nb29zZScpO1xyXG5jb25zdCBTY2hlbWEgPSBtb25nb29zZS5TY2hlbWE7XHJcblxyXG5jb25zdCBwb2ludFNjaGVtYSA9IG5ldyBTY2hlbWEoe1xyXG4gICAgdHlwZToge1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICBlbnVtOiBbJ1BvaW50J10sXHJcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXHJcbiAgICAgICAgZGVmYXVsdDogJ1BvaW50J1xyXG4gICAgfSxcclxuICAgIGNvb3JkaW5hdGVzOiB7XHJcbiAgICAgICAgdHlwZTogW051bWJlcl0sXHJcbiAgICAgICAgcmVxdWlyZWQ6IHRydWVcclxuICAgIH1cclxufSk7XHJcblxyXG5jb25zdCBwbGFjZVNjaGVtYSA9IG5ldyBTY2hlbWEoe1xyXG4gICAgbmFtZToge1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgICB1bmlxdWU6IHRydWVcclxuICAgIH0sXHJcbiAgICBkZXNjcmlwdGlvbjoge1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICByZXF1aXJlZDogdHJ1ZVxyXG4gICAgfSxcclxuICAgIGxvY2F0aW9uOiB7XHJcbiAgICAgICAgdHlwZTogcG9pbnRTY2hlbWEsXHJcbiAgICAgICAgaW5kZXg6ICcyZHNwaGVyZScsXHJcbiAgICAgICAgcmVxdWlyZWQ6IHRydWVcclxuICAgIH0sXHJcbiAgICBkaXN0YW5jZToge1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICByZXF1aXJlZDogdHJ1ZVxyXG4gICAgfSxcclxuICAgIHRpbWVUb1JlYWNoOiB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlXHJcbiAgICB9LFxyXG4gICAgaW1hZ2U6XHJcbiAgICB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgfSxcclxuICAgIHRyYXZlbGxpbmdNZXRob2RzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXHJcbiAgICAgICAgICAgIGVudW06IFsnQnVzJywgJ0NhcicsICdUcmFpbicsICdUaHJlZXdoZWVsZXInLCAnRm9vdCddXHJcbiAgICAgICAgfVxyXG4gICAgXVxyXG59LCB7XHJcbiAgICB0aW1lc3RhbXBzOiB0cnVlXHJcbn0pO1xyXG5cclxucGxhY2VTY2hlbWEuaW5kZXgoeyAnJCoqJzogJ3RleHQnIH0pO1xyXG52YXIgUGxhY2VzID0gbW9uZ29vc2UubW9kZWwoJ1BsYWNlJywgcGxhY2VTY2hlbWEpO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBQbGFjZXM7Il19\",\"originalCode\":\"const mongoose = require('mongoose');\\r\\nconst Schema = mongoose.Schema;\\r\\n\\r\\nconst pointSchema = new Schema({\\r\\n type: {\\r\\n type: String,\\r\\n enum: ['Point'],\\r\\n required: true,\\r\\n default: 'Point'\\r\\n },\\r\\n coordinates: {\\r\\n type: [Number],\\r\\n required: true\\r\\n }\\r\\n});\\r\\n\\r\\nconst placeSchema = new Schema({\\r\\n name: {\\r\\n type: String,\\r\\n required: true,\\r\\n unique: true\\r\\n },\\r\\n description: {\\r\\n type: String,\\r\\n required: true\\r\\n },\\r\\n location: {\\r\\n type: pointSchema,\\r\\n index: '2dsphere',\\r\\n required: true\\r\\n },\\r\\n distance: {\\r\\n type: String,\\r\\n required: true\\r\\n },\\r\\n timeToReach: {\\r\\n type: String,\\r\\n required: true\\r\\n },\\r\\n image:\\r\\n {\\r\\n type: String,\\r\\n },\\r\\n travellingMethods: [\\r\\n {\\r\\n type: String,\\r\\n enum: ['Bus', 'Car', 'Train', 'Threewheeler', 'Foot']\\r\\n }\\r\\n ]\\r\\n}, {\\r\\n timestamps: true\\r\\n});\\r\\n\\r\\nplaceSchema.index({ '$**': 'text' });\\r\\nvar Places = mongoose.model('Place', placeSchema);\\r\\n\\r\\nmodule.exports = Places;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/c4/visitingPlaces_c4ccc91c117df8c4aeada72a82534688.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2459\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\models\\\\visitingPlaces.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":4920,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":4917,\"count\":1}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"var passport = require('passport');\\n\\nvar LocalStrategy = require('passport-local').Strategy;\\n\\nvar User = require('../models/users');\\n\\nvar JwtStrategy = require('passport-jwt').Strategy;\\n\\nvar ExtractJwt = require('passport-jwt').ExtractJwt;\\n\\nvar jwt = require('jsonwebtoken');\\n\\npassport.use(new LocalStrategy(User.authenticate()));\\npassport.serializeUser(User.serializeUser());\\npassport.deserializeUser(User.deserializeUser());\\n\\nexports.getToken = user => {\\n return jwt.sign(user, process.env.secretKey, {\\n expiresIn: 3600\\n });\\n};\\n\\nvar opts = {};\\nopts.jwtFromRequest = ExtractJwt.fromAuthHeaderAsBearerToken();\\nopts.secretOrKey = process.env.secretKey;\\nexports.jwtPassport = passport.use(new JwtStrategy(opts, (jwt_payload, done) => {\\n User.findOne({\\n _id: jwt_payload._id\\n }, (err, user) => {\\n if (err) {\\n return done(err, false);\\n } else if (user) {\\n return done(null, user);\\n } else {\\n return done(null, false);\\n }\\n });\\n}));\\nexports.verifyUser = passport.authenticate('jwt', {\\n session: false\\n});\\n\\nexports.verifyAdmin = (req, res, next) => {\\n if (req.user.role == 'admin') {\\n return next();\\n } else if (req.user.role != 'admin') {\\n err = new Error('You are not authorized to perform this operation!');\\n err.status = 403;\\n return next(err);\\n } else {\\n err = new Error('Admin Verification Failed!');\\n err.status = 500;\\n return next(err);\\n }\\n};\\n\\nexports.verifyModerater = (req, res, next) => {\\n if (req.user.role != 'user') {\\n return next();\\n } else if (req.user.role == 'user') {\\n err = new Error('You are not authorized to perform this operation!');\\n err.status = 403;\\n return next(err);\\n }\\n};\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF1dGhlbnRpY2F0ZS5qcyJdLCJuYW1lcyI6WyJwYXNzcG9ydCIsInJlcXVpcmUiLCJMb2NhbFN0cmF0ZWd5IiwiU3RyYXRlZ3kiLCJVc2VyIiwiSnd0U3RyYXRlZ3kiLCJFeHRyYWN0Snd0Iiwiand0IiwidXNlIiwiYXV0aGVudGljYXRlIiwic2VyaWFsaXplVXNlciIsImRlc2VyaWFsaXplVXNlciIsImV4cG9ydHMiLCJnZXRUb2tlbiIsInVzZXIiLCJzaWduIiwicHJvY2VzcyIsImVudiIsInNlY3JldEtleSIsImV4cGlyZXNJbiIsIm9wdHMiLCJqd3RGcm9tUmVxdWVzdCIsImZyb21BdXRoSGVhZGVyQXNCZWFyZXJUb2tlbiIsInNlY3JldE9yS2V5Iiwiand0UGFzc3BvcnQiLCJqd3RfcGF5bG9hZCIsImRvbmUiLCJmaW5kT25lIiwiX2lkIiwiZXJyIiwidmVyaWZ5VXNlciIsInNlc3Npb24iLCJ2ZXJpZnlBZG1pbiIsInJlcSIsInJlcyIsIm5leHQiLCJyb2xlIiwiRXJyb3IiLCJzdGF0dXMiLCJ2ZXJpZnlNb2RlcmF0ZXIiXSwibWFwcGluZ3MiOiJBQUFBLElBQUlBLFFBQVEsR0FBR0MsT0FBTyxDQUFDLFVBQUQsQ0FBdEI7O0FBQ0EsSUFBSUMsYUFBYSxHQUFHRCxPQUFPLENBQUMsZ0JBQUQsQ0FBUCxDQUEwQkUsUUFBOUM7O0FBQ0EsSUFBSUMsSUFBSSxHQUFHSCxPQUFPLENBQUMsaUJBQUQsQ0FBbEI7O0FBRUEsSUFBSUksV0FBVyxHQUFHSixPQUFPLENBQUMsY0FBRCxDQUFQLENBQXdCRSxRQUExQzs7QUFDQSxJQUFJRyxVQUFVLEdBQUdMLE9BQU8sQ0FBQyxjQUFELENBQVAsQ0FBd0JLLFVBQXpDOztBQUNBLElBQUlDLEdBQUcsR0FBR04sT0FBTyxDQUFDLGNBQUQsQ0FBakI7O0FBR0FELFFBQVEsQ0FBQ1EsR0FBVCxDQUFhLElBQUlOLGFBQUosQ0FBa0JFLElBQUksQ0FBQ0ssWUFBTCxFQUFsQixDQUFiO0FBQ0FULFFBQVEsQ0FBQ1UsYUFB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dCI6WyJ2YXIgcGFzc3BvcnQgPSByZXF1aXJlKCdwYXNzcG9ydCcpO1xyXG52YXIgTG9jYWxTdHJhdGVneSA9IHJlcXVpcmUoJ3Bhc3Nwb3J0LWxvY2FsJykuU3RyYXRlZ3k7XHJcbnZhciBVc2VyID0gcmVxdWlyZSgnLi4vbW9kZWxzL3VzZXJzJyk7XHJcblxyXG52YXIgSnd0U3RyYXRlZ3kgPSByZXF1aXJlKCdwYXNzcG9ydC1qd3QnKS5TdHJhdGVneTtcclxudmFyIEV4dHJhY3RKd3QgPSByZXF1aXJlKCdwYXNzcG9ydC1qd3QnKS5FeHRyYWN0Snd0O1xyXG52YXIgand0ID0gcmVxdWlyZSgnanNvbndlYnRva2VuJyk7XHJcblxyXG5cclxucGFzc3BvcnQudXNlKG5ldyBMb2NhbFN0cmF0ZWd5KFVzZXIuYXV0aGVudGljYXRlKCkpKTtcclxucGFzc3BvcnQuc2VyaWFsaXplVXNlcihVc2VyLnNlcmlhbGl6ZVVzZXIoKSk7XHJcbnBhc3Nwb3J0LmRlc2VyaWFsaXplVXNlcihVc2VyLmRlc2VyaWFsaXplVXNlcigpKTtcclxuXHJcbmV4cG9ydHMuZ2V0VG9rZW4gPSAodXNlcikgPT4ge1xyXG4gICAgcmV0dXJuIGp3dC5zaWduKHVzZXIsIHByb2Nlc3MuZW52LnNlY3JldEtleSxcclxuICAgICAgICB7IGV4cGlyZXNJbjogMzYwMCB9KTtcclxufTtcclxuXHJcbnZhciBvcHRzID0ge307XHJcbm9wdHMuand0RnJvbVJlcXVlc3QgPSBFeHRyYWN0Snd0LmZyb21BdXRoSGVhZGVyQXNCZWFyZXJUb2tlbigpO1xyXG5vcHRzLnNlY3JldE9yS2V5ID0gcHJvY2Vzcy5lbnYuc2VjcmV0S2V5O1xyXG5cclxuZXhwb3J0cy5qd3RQYXNzcG9ydCA9IHBhc3Nwb3J0LnVzZShuZXcgSnd0U3RyYXRlZ3kob3B0cyxcclxuICAgIChqd3RfcGF5bG9hZCwgZG9uZSkgPT4ge1xyXG4gICAgICAgIFVzZXIuZmluZE9uZSh7IF9pZDogand0X3BheWxvYWQuX2lkIH0sIChlcnIsIHVzZXIpID0+IHtcclxuICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRvbmUoZXJyLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAodXNlcikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRvbmUobnVsbCwgdXNlcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZG9uZShudWxsLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH0pKTtcclxuXHJcbmV4cG9ydHMudmVyaWZ5VXNlciA9IHBhc3Nwb3J0LmF1dGhlbnRpY2F0ZSgnand0JywgeyBzZXNzaW9uOiBmYWxzZSB9KTtcclxuXHJcbmV4cG9ydHMudmVyaWZ5QWRtaW4gPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIGlmIChyZXEudXNlci5yb2xlID09ICdhZG1pbicpIHtcclxuICAgICAgICByZXR1cm4gbmV4dCgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAocmVxLnVzZXIucm9sZSAhPSAnYWRtaW4nKSB7XHJcbiAgICAgICAgZXJyID0gbmV3IEVycm9yKCdZb3UgYXJlIG5vdCBhdXRob3JpemVkIHRvIHBlcmZvcm0gdGhpcyBvcGVyYXRpb24hJyk7XHJcbiAgICAgICAgZXJyLnN0YXR1cyA9IDQwMztcclxuICAgICAgICByZXR1cm4gbmV4dChlcnIpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgZXJyID0gbmV3IEVycm9yKCdBZG1pbiBWZXJpZmljYXRpb24gRmFpbGVkIScpO1xyXG4gICAgICAgIGVyci5zdGF0dXMgPSA1MDA7XHJcbiAgICAgICAgcmV0dXJuIG5leHQoZXJyKTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0cy52ZXJpZnlNb2RlcmF0ZXIgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIGlmIChyZXEudXNlci5yb2xlICE9ICd1c2VyJykge1xyXG4gICAgICAgIHJldHVybiBuZXh0KCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChyZXEudXNlci5yb2xlID09ICd1c2VyJykge1xyXG4gICAgICAgIGVyciA9IG5ldyBFcnJvcignWW91IGFyZSBub3QgYXV0aG9yaXplZCB0byBwZXJmb3JtIHRoaXMgb3BlcmF0aW9uIScpO1xyXG4gICAgICAgIGVyci5zdGF0dXMgPSA0MDM7XHJcbiAgICAgICAgcmV0dXJuIG5leHQoZXJyKTtcclxuICAgIH1cclxufVxyXG4iXX0=\",\"originalCode\":\"var passport = require('passport');\\r\\nvar LocalStrategy = require('passport-local').Strategy;\\r\\nvar User = require('../models/users');\\r\\n\\r\\nvar JwtStrategy = require('passport-jwt').Strategy;\\r\\nvar ExtractJwt = require('passport-jwt').ExtractJwt;\\r\\nvar jwt = require('jsonwebtoken');\\r\\n\\r\\n\\r\\npassport.use(new LocalStrategy(User.authenticate()));\\r\\npassport.serializeUser(User.serializeUser());\\r\\npassport.deserializeUser(User.deserializeUser());\\r\\n\\r\\nexports.getToken = (user) => {\\r\\n return jwt.sign(user, process.env.secretKey,\\r\\n { expiresIn: 3600 });\\r\\n};\\r\\n\\r\\nvar opts = {};\\r\\nopts.jwtFromRequest = ExtractJwt.fromAuthHeaderAsBearerToken();\\r\\nopts.secretOrKey = process.env.secretKey;\\r\\n\\r\\nexports.jwtPassport = passport.use(new JwtStrategy(opts,\\r\\n (jwt_payload, done) => {\\r\\n User.findOne({ _id: jwt_payload._id }, (err, user) => {\\r\\n if (err) {\\r\\n return done(err, false);\\r\\n }\\r\\n else if (user) {\\r\\n return done(null, user);\\r\\n }\\r\\n else {\\r\\n return done(null, false);\\r\\n }\\r\\n });\\r\\n }));\\r\\n\\r\\nexports.verifyUser = passport.authenticate('jwt', { session: false });\\r\\n\\r\\nexports.verifyAdmin = (req, res, next) => {\\r\\n if (req.user.role == 'admin') {\\r\\n return next();\\r\\n }\\r\\n else if (req.user.role != 'admin') {\\r\\n err = new Error('You are not authorized to perform this operation!');\\r\\n err.status = 403;\\r\\n return next(err);\\r\\n }\\r\\n else {\\r\\n err = new Error('Admin Verification Failed!');\\r\\n err.status = 500;\\r\\n return next(err);\\r\\n }\\r\\n}\\r\\n\\r\\nexports.verifyModerater = (req, res, next) => {\\r\\n if (req.user.role != 'user') {\\r\\n return next();\\r\\n }\\r\\n else if (req.user.role == 'user') {\\r\\n err = new Error('You are not authorized to perform this operation!');\\r\\n err.status = 403;\\r\\n return next(err);\\r\\n }\\r\\n}\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/17/authenticate_1749ed24acd3b9174e3e8d9c003de68d.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2460\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\middleware\\\\authenticate.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":8164,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":8161,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
.exports.getToken\",\"ranges\":[{\"startOffset\":536,\"endOffset\":622,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":803,\"endOffset\":1050,\"count\":5}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":875,\"endOffset\":1046,\"count\":5}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
.exports.verifyAdmin\",\"ranges\":[{\"startOffset\":1150,\"endOffset\":1495,\"count\":5}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
.exports.verifyModerater\",\"ranges\":[{\"startOffset\":1524,\"endOffset\":1761,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"var validationRules = {\\n id: {\\n in: ['params', 'query'],\\n errorMessage: 'ID is wrong',\\n isInt: true,\\n toInt: true\\n },\\n name: {\\n errorMessage: 'Name should be at least 2 chars long and maximum of 50 chars',\\n isLength: {\\n options: {\\n min: 2,\\n max: 50\\n }\\n },\\n trim: true\\n },\\n description: {\\n errorMessage: 'Description should be at least 2 chars long and maximum of 200 chars',\\n isLength: {\\n options: {\\n min: 2,\\n max: 200\\n }\\n },\\n trim: true\\n },\\n distance: {\\n errorMessage: 'Distance should be at least 1 chars long and maximum of 200 chars',\\n isLength: {\\n options: {\\n min: 1,\\n max: 200\\n }\\n },\\n trim: true\\n },\\n timeToReach: {\\n errorMessage: 'Time To Reach should be at least 2 chars long and maximum of 200 chars',\\n isLength: {\\n options: {\\n min: 2,\\n max: 200\\n }\\n },\\n trim: true\\n },\\n firstname: {\\n errorMessage: 'First Name should be at least 3 chars long and maximum of 50 chars',\\n isLength: {\\n options: {\\n min: 3,\\n max: 50\\n }\\n },\\n trim: true\\n },\\n lastname: {\\n errorMessage: 'Last Name should be at least 3 chars long and maximum of 50 chars',\\n isLength: {\\n options: {\\n min: 3,\\n max: 50\\n }\\n },\\n trim: true\\n },\\n email: {\\n errorMessage: 'Please enter a valid email address',\\n isEmail: true,\\n trim: true\\n },\\n mobile: {\\n errorMessage: 'Please enter Phone Number in 10 digits',\\n isLength: {\\n options: {\\n min: 10,\\n max: 10\\n }\\n },\\n matches: {\\n options: [/^\\\\d{10}$/],\\n errorMessage: \\\"Please enter digits\\\"\\n },\\n trim: true\\n },\\n password: {\\n isLength: {\\n errorMessage: 'Password should be at least 6 chars long',\\n options: {\\n min: 6\\n }\\n }\\n },\\n confirm_password: {\\n errorMessage: 'Must have the same value as the password field',\\n custom: {\\n options: (value, {\\n req\\n }) => value === req.body.password\\n }\\n },\\n suite: {\\n errorMessage: 'Please select suite type',\\n isIn: {\\n options: [['gold', 'luxury', 'platinum']]\\n }\\n },\\n roomnumber: {\\n errorMessage: 'Room Number should be at least 3 chars long and maximum of 50 chars',\\n isLength: {\\n options: {\\n min: 3,\\n max: 50\\n }\\n },\\n trim: true\\n },\\n state: {\\n errorMessage: 'Please select correct state',\\n isIn: {\\n options: [[\\\"new\\\", \\\"not-completed\\\", \\\"canceled\\\", \\\"completed\\\"]]\\n }\\n },\\n method: {\\n errorMessage: 'Please select correct travelling method',\\n isIn: {\\n options: [['Bus', 'Car', 'Train', 'Threewheeler', 'Foot']]\\n }\\n }\\n};\\nexports.validationRules = validationRules;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInZhbGlkYXRpb24uanMiXSwibmFtZXMiOlsidmFsaWRhdGlvblJ1bGVzIiwiaWQiLCJpbiIsImVycm9yTWVzc2FnZSIsImlzSW50IiwidG9JbnQiLCJuYW1lIiwiaXNMZW5ndGgiLCJvcHRpb25zIiwibWluIiwibWF4IiwidHJpbSIsImRlc2NyaXB0aW9uIiwiZGlzdGFuY2UiLCJ0aW1lVG9SZWFjaCIsImZpcnN0bmFtZSIsImxhc3RuYW1lIiwiZW1haWwiLCJpc0VtYWlsIiwibW9iaWxlIiwibWF0Y2hlcyIsInBhc3N3b3JkIiwiY29uZmlybV9wYXNzd29yZCIsImN1c3RvbSIsInZhbHVlIiwicmVxIiwiYm9keSIsInN1aXRlIiwiaXNJbiIsInJvb21udW1iZXIiLCJzdGF0ZSIsIm1ldGhvZCIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLElBQUlBLGVBQWUsR0FBRztBQUNsQkMsRUFBQUEsRUFBRSxFQUFFO0FBQ0FDLElBQUFBLEVBQUUsRUFBRSxDQUFDLFFBQUQsRUFBVyxPQUFYLENBREo7QUFFQUMsSUFBQUEsWUFBWSxFQUFFLGFBRmQ7QUFHQUMsSUFBQUEsS0FBSyxFQUFFLElBSFA7QUFJQUMsSUFBQUEsS0FBSyxFQUFFO0FBSlAsR0FEYztBQU9sQkMsRUFBQUEsSUFBSSxFQUFFO0FBQ0ZILElBQUFBLFlBQVksRUFBRSw4REFEWjtBQUVGSSxJQUFBQSxRQUFRLEVBQUU7QUFDTkMsTUFBQUEsT0FBTyxFQUFFO0FBQUVDLFFBQUFBLEdBQUcsRUFBRSxDQUFQO0FBQVVDLFFBQUFBLEdBQUcsRUFBRTtBQUFmO0FBREgsS0FGUjtBQUtGQyxJQUFBQSxJQUFJLEVBQUU7QUFMSixHQVBZO0FBY2xCQyxFQUFBQSxXQUFXLEVBQUU7QUFDVFQsSUFBQUEsWUFBWSxFQUFFLHNFQURMO0FBRVRJLElBQUFBLFFBQVEsRUFBRTtBQUNOQyxNQUFBQSxPQUFPLEVBQUU7QUFBRUMsUUFBQUEsR0FBRyxFQUFFLENBQVA7QUFBVUMsUUFBQUEsR0FBRyxFQUFFO0FBQWY7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RTtBQUFFQyxRQUFBQSxHQUFHLEVBQUUsQ0FBUDtBQUFVQyxRQUFBQSxHQUFHLEVBQUU7QUFBZjtBQURILEtBRkY7QUFLUkMsSUFBQUEsSUFBSSxFQUFFO0FBTEUsR0FuRk07QUEwRmxCbUIsRUFBQUEsS0FBSyxFQUFFO0FBQ0gzQixJQUFBQSxZQUFZLEVBQUUsNkJBRFg7QUFFSHlCLElBQUFBLElBQUksRUFBRTtBQUNGcEIsTUFBQUEsT0FBTyxFQUFFLENBQUMsQ0FBQyxLQUFELEVBQVEsZUFBUixFQUF5QixVQUF6QixFQUFxQyxXQUFyQyxDQUFEO0FBRFA7QUFGSCxHQTFGVztBQWdHbEJ1QixFQUFBQSxNQUFNLEVBQUU7QUFDSjVCLElBQUFBLFlBQVksRUFBRSx5Q0FEVjtBQUVKeUIsSUFBQUEsSUFBSSxFQUFFO0FBQ0ZwQixNQUFBQSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEtBQUQsRUFBUSxLQUFSLEVBQWUsT0FBZixFQUF3QixjQUF4QixFQUF3QyxNQUF4QyxDQUFEO0FBRFA7QUFGRjtBQWhHVSxDQUF0QjtBQXdHQXdCLE9BQU8sQ0FBQ2hDLGVBQVIsR0FBMEJBLGVBQTFCIiwic291cmNlc0NvbnRlbnQiOlsidmFyIHZhbGlkYXRpb25SdWxlcyA9IHtcclxuICAgIGlkOiB7XHJcbiAgICAgICAgaW46IFsncGFyYW1zJywgJ3F1ZXJ5J10sXHJcbiAgICAgICAgZXJyb3JNZXNzYWdlOiAnSUQgaXMgd3JvbmcnLFxyXG4gICAgICAgIGlzSW50OiB0cnVlLFxyXG4gICAgICAgIHRvSW50OiB0cnVlLFxyXG4gICAgfSxcclxuICAgIG5hbWU6IHtcclxuICAgICAgICBlcnJvck1lc3NhZ2U6ICdOYW1lIHNob3VsZCBiZSBhdCBsZWFzdCAyIGNoYXJzIGxvbmcgYW5kIG1heGltdW0gb2YgNTAgY2hhcnMnLFxyXG4gICAgICAgIGlzTGVuZ3RoOiB7XHJcbiAgICAgICAgICAgIG9wdGlvbnM6IHsgbWluOiAyLCBtYXg6IDUwIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHRyaW06IHRydWVcclxuICAgIH0sXHJcbiAgICBkZXNjcmlwdGlvbjoge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ0Rlc2NyaXB0aW9uIHNob3VsZCBiZSBhdCBsZWFzdCAyIGNoYXJzIGxvbmcgYW5kIG1heGltdW0gb2YgMjAwIGNoYXJzJyxcclxuICAgICAgICBpc0xlbmd0aDoge1xyXG4gICAgICAgICAgICBvcHRpb25zOiB7IG1pbjogMiwgbWF4OiAyMDAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHJpbTogdHJ1ZVxyXG4gICAgfSxcclxuICAgIGRpc3RhbmNlOiB7XHJcbiAgICAgICAgZXJyb3JNZXNzYWdlOiAnRGlzdGFuY2Ugc2hvdWxkIGJlIGF0IGxlYXN0IDEgY2hhcnMgbG9uZyBhbmQgbWF4aW11bSBvZiAyMDAgY2hhcnMnLFxyXG4gICAgICAgIGlzTGVuZ3RoOiB7XHJcbiAgICAgICAgICAgIG9wdGlvbnM6IHsgbWluOiAxLCBtYXg6IDIwMCB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICB0cmltOiB0cnVlXHJcbiAgICB9LFxyXG4gICAgdGltZVRvUmVhY2g6IHtcclxuICAgICAgICBlcnJvck1lc3NhZ2U6ICdUaW1lIFRvIFJlYWNoIHNob3VsZCBiZSBhdCBsZWFzdCAyIGNoYXJzIGxvbmcgYW5kIG1heGltdW0gb2YgMjAwIGNoYXJzJyxcclxuICAgICAgICBpc0xlbmd0aDoge1xyXG4gICAgICAgICAgICBvcHRpb25zOiB7IG1pbjogMiwgbWF4OiAyMDAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHJpbTogdHJ1ZVxyXG4gICAgfSxcclxuICAgIGZpcnN0bmFtZToge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ0ZpcnN0IE5hbWUgc2hvdWxkIGJlIGF0IGxlYXN0IDMgY2hhcnMgbG9uZyBhbmQgbWF4aW11bSBvZiA1MCBjaGFycycsXHJcbiAgICAgICAgaXNMZW5ndGg6IHtcclxuICAgICAgICAgICAgb3B0aW9uczogeyBtaW46IDMsIG1heDogNTAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHJpbTogdHJ1ZVxyXG4gICAgfSxcclxuICAgIGxhc3RuYW1lOiB7XHJcbiAgICAgICAgZXJyb3JNZXNzYWdlOiAnTGFzdCBOYW1lIHNob3VsZCBiZSBhdCBsZWFzdCAzIGNoYXJzIGxvbmcgYW5kIG1heGltdW0gb2YgNTAgY2hhcnMnLFxyXG4gICAgICAgIGlzTGVuZ3RoOiB7XHJcbiAgICAgICAgICAgIG9wdGlvbnM6IHsgbWluOiAzLCBtYXg6IDUwIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHRyaW06IHRydWVcclxuICAgIH0sXHJcbiAgICBlbWFpbDoge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ1BsZWFzZSBlbnRlciBhIHZhbGlkIGVtYWlsIGFkZHJlc3MnLFxyXG4gICAgICAgIGlzRW1haWw6IHRydWUsXHJcbiAgICAgICAgdHJpbTogdHJ1ZSxcclxuICAgIH0sXHJcbiAgICBtb2JpbGU6IHtcclxuICAgICAgICBlcnJvck1lc3NhZ2U6ICdQbGVhc2UgZW50ZXIgUGhvbmUgTnVtYmVyIGluIDEwIGRpZ2l0cycsXHJcbiAgICAgICAgaXNMZW5ndGg6IHtcclxuICAgICAgICAgICAgb3B0aW9uczogeyBtaW46IDEwLCBtYXg6IDEwIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIG1hdGNoZXM6IHtcclxuICAgICAgICAgICAgb3B0aW9uczogWy9eXFxkezEwfSQvXSxcclxuICAgICAgICAgICAgZXJyb3JNZXNzYWdlOiBcIlBsZWFzZSBlbnRlciBkaWdpdHNcIlxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHJpbTogdHJ1ZVxyXG4gICAgfSxcclxuICAgIHBhc3N3b3JkOiB7XHJcbiAgICAgICAgaXNMZW5ndGg6IHtcclxuICAgICAgICAgICAgZXJyb3JNZXNzYWdlOiAnUGFzc3dvcmQgc2hvdWxkIGJlIGF0IGxlYXN0IDYgY2hhcnMgbG9uZycsXHJcbiAgICAgICAgICAgIG9wdGlvbnM6IHsgbWluOiA2IH1cclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgY29uZmlybV9wYXNzd29yZDoge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ011c3QgaGF2ZSB0aGUgc2FtZSB2YWx1ZSBhcyB0aGUgcGFzc3dvcmQgZmllbGQnLFxyXG4gICAgICAgIGN1c3RvbToge1xyXG4gICAgICAgICAgICBvcHRpb25zOiAodmFsdWUsIHsgcmVxIH0pID0+IHZhbHVlID09PSByZXEuYm9keS5wYXNzd29yZFxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICBzdWl0ZToge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ1BsZWFzZSBzZWxlY3Qgc3VpdGUgdHlwZScsXHJcbiAgICAgICAgaXNJbjoge1xyXG4gICAgICAgICAgICBvcHRpb25zOiBbWydnb2xkJywgJ2x1eHVyeScsICdwbGF0aW51bSddXSxcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgcm9vbW51bWJlcjoge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ1Jvb20gTnVtYmVyIHNob3VsZCBiZSBhdCBsZWFzdCAzIGNoYXJzIGxvbmcgYW5kIG1heGltdW0gb2YgNTAgY2hhcnMnLFxyXG4gICAgICAgIGlzTGVuZ3RoOiB7XHJcbiAgICAgICAgICAgIG9wdGlvbnM6IHsgbWluOiAzLCBtYXg6IDUwIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHRyaW06IHRydWVcclxuICAgIH0sXHJcbiAgICBzdGF0ZToge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ1BsZWFzZSBzZWxlY3QgY29ycmVjdCBzdGF0ZScsXHJcbiAgICAgICAgaXNJbjoge1xyXG4gICAgICAgICAgICBvcHRpb25zOiBbW1wibmV3XCIsIFwibm90LWNvbXBsZXRlZFwiLCBcImNhbmNlbGVkXCIsIFwiY29tcGxldGVkXCJdXSxcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgbWV0aG9kOiB7XHJcbiAgICAgICAgZXJyb3JNZXNzYWdlOiAnUGxlYXNlIHNlbGVjdCBjb3JyZWN0IHRyYXZlbGxpbmcgbWV0aG9kJyxcclxuICAgICAgICBpc0luOiB7XHJcbiAgICAgICAgICAgIG9wdGlvbnM6IFtbJ0J1cycsICdDYXInLCAnVHJhaW4nLCAnVGhyZWV3aGVlbGVyJywgJ0Zvb3QnXV0sXHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxufVxyXG5cclxuZXhwb3J0cy52YWxpZGF0aW9uUnVsZXMgPSB2YWxpZGF0aW9uUnVsZXM7Il19\",\"originalCode\":\"var validationRules = {\\r\\n id: {\\r\\n in: ['params', 'query'],\\r\\n errorMessage: 'ID is wrong',\\r\\n isInt: true,\\r\\n toInt: true,\\r\\n },\\r\\n name: {\\r\\n errorMessage: 'Name should be at least 2 chars long and maximum of 50 chars',\\r\\n isLength: {\\r\\n options: { min: 2, max: 50 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n description: {\\r\\n errorMessage: 'Description should be at least 2 chars long and maximum of 200 chars',\\r\\n isLength: {\\r\\n options: { min: 2, max: 200 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n distance: {\\r\\n errorMessage: 'Distance should be at least 1 chars long and maximum of 200 chars',\\r\\n isLength: {\\r\\n options: { min: 1, max: 200 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n timeToReach: {\\r\\n errorMessage: 'Time To Reach should be at least 2 chars long and maximum of 200 chars',\\r\\n isLength: {\\r\\n options: { min: 2, max: 200 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n firstname: {\\r\\n errorMessage: 'First Name should be at least 3 chars long and maximum of 50 chars',\\r\\n isLength: {\\r\\n options: { min: 3, max: 50 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n lastname: {\\r\\n errorMessage: 'Last Name should be at least 3 chars long and maximum of 50 chars',\\r\\n isLength: {\\r\\n options: { min: 3, max: 50 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n email: {\\r\\n errorMessage: 'Please enter a valid email address',\\r\\n isEmail: true,\\r\\n trim: true,\\r\\n },\\r\\n mobile: {\\r\\n errorMessage: 'Please enter Phone Number in 10 digits',\\r\\n isLength: {\\r\\n options: { min: 10, max: 10 }\\r\\n },\\r\\n matches: {\\r\\n options: [/^\\\\d{10}$/],\\r\\n errorMessage: \\\"Please enter digits\\\"\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n password: {\\r\\n isLength: {\\r\\n errorMessage: 'Password should be at least 6 chars long',\\r\\n options: { min: 6 }\\r\\n }\\r\\n },\\r\\n confirm_password: {\\r\\n errorMessage: 'Must have the same value as the password field',\\r\\n custom: {\\r\\n options: (value, { req }) => value === req.body.password\\r\\n }\\r\\n },\\r\\n suite: {\\r\\n errorMessage: 'Please select suite type',\\r\\n isIn: {\\r\\n options: [['gold', 'luxury', 'platinum']],\\r\\n }\\r\\n },\\r\\n roomnumber: {\\r\\n errorMessage: 'Room Number should be at least 3 chars long and maximum of 50 chars',\\r\\n isLength: {\\r\\n options: { min: 3, max: 50 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n state: {\\r\\n errorMessage: 'Please select correct state',\\r\\n isIn: {\\r\\n options: [[\\\"new\\\", \\\"not-completed\\\", \\\"canceled\\\", \\\"completed\\\"]],\\r\\n }\\r\\n },\\r\\n method: {\\r\\n errorMessage: 'Please select correct travelling method',\\r\\n isIn: {\\r\\n options: [['Bus', 'Car', 'Train', 'Threewheeler', 'Foot']],\\r\\n }\\r\\n },\\r\\n}\\r\\n\\r\\nexports.validationRules = validationRules;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/4b/validation_4b7a8ff68e044daa8c6daa8312a761dc.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2493\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\middleware\\\\validation.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":11520,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":11517,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"options\",\"ranges\":[{\"startOffset\":2073,\"endOffset\":2134,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"var express = require('express');\\n\\nvar router = express.Router();\\n\\nvar Users = require('../models/users');\\n\\nvar passport = require('passport');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nconst signupAdmin = (req, res, next) => {\\n var admin = {\\n username: req.body.email,\\n firstname: req.body.firstname,\\n lastname: req.body.lastname,\\n email: req.body.email,\\n role: 'admin'\\n };\\n Users.register(new Users(admin), req.body.password, (err, user) => {\\n if (err) {\\n res.statusCode = 403;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n status: 'Registration Unsuccessful!'\\n });\\n } else {\\n if (req.body.firstname) user.firstname = req.body.firstname;\\n if (req.body.lastname) user.lastname = req.body.lastname;\\n user.save((err, user) => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n status: 'Registration Successful!'\\n });\\n });\\n }\\n });\\n};\\n\\nconst login = (req, res, next) => {\\n passport.authenticate('local', (err, user, info) => {\\n if (!user) {\\n res.statusCode = 401;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n status: 'Login Unsuccessful!',\\n err: info\\n });\\n return next(err);\\n }\\n\\n req.logIn(user, err => {\\n var token = authenticate.getToken({\\n _id: req.user._id,\\n role: user.role\\n });\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n status: 'Login Successful!',\\n token: token\\n });\\n });\\n })(req, res, next);\\n};\\n\\nconst changePassoword = (req, res, next) => {\\n var userId = req.params.id;\\n var newPasswordString = req.body.password;\\n Users.findById(userId).then(function (sanitizedUser) {\\n if (sanitizedUser) {\\n sanitizedUser.setPassword(newPasswordString, function () {\\n sanitizedUser.save();\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n message: 'password reset successful'\\n });\\n });\\n } else {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'This user does not exist'\\n });\\n }\\n }, function (err) {\\n next(err);\\n });\\n};\\n\\nconst logout = (req, res) => {\\n if (req.session) {\\n req.session.destroy();\\n res.clearCookie('session-id');\\n } else {\\n var err = new Error('You are not logged in!');\\n err.status = 403;\\n }\\n};\\n\\nexports.signupAdmin = signupAdmin;\\nexports.login = login;\\nexports.logout = logout;\\nexports.changePassoword = changePassoword;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVzZXJDb250cm9sbGVyLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwicm91dGVyIiwiUm91dGVyIiwiVXNlcnMiLCJwYXNzcG9ydCIsImF1dGhlbnRpY2F0ZSIsInNpZ251cEFkbWluIiwicmVxIiwicmVzIiwibmV4dCIsImFkbWluIiwidXNlcm5hbWUiLCJib2R5IiwiZW1haWwiLCJmaXJzdG5hbWUiLCJsYXN0bmFtZSIsInJvbGUiLCJyZWdpc3RlciIsInBhc3N3b3JkIiwiZXJyIiwidXNlciIsInN0YXR1c0NvZGUiLCJzZXRIZWFkZXIiLCJqc29uIiwic3VjY2VzcyIsInN0YXR1cyIsInNhdmUiLCJsb2dpbiIsImluZm8iLCJsb2dJbiIsInRva2VuIiwiZ2V0VG9rZW4iLCJfaWQiLCJjaGFuZ2VQYXNzb3dvcmQiLCJ1c2VySWQiLCJwYXJhbXMiLCJpZCIsIm5ld1Bhc3N3b3JkU3RyaW5nIiwiZmluZEJ5SWQiLCJ0aGVuIiwic2FuaXRpemVkVXNlciIsInNldFBhc3N3b3JkIiwibWVzc2FnZSIsImxvZ291dCIsInNlc3Npb24iLCJkZXN0cm95IiwiY2xlYXJDb29raWUiLCJFcnJvciIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLElBQUlBLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBckI7O0FBQ0EsSUFBSUMsTUFBTSxHQUFHRixPQUFPLENBQUNHLE1BQVIsRUFBYjs7QUFFQSxJQUFJQyxLQUFLLEdBQUdILE9BQU8sQ0FBQyxpQkFBRCxDQUFuQjs7QUFDQSxJQUFJSSxRQUFRLEdBQUdKLE9BQU8sQ0FBQyxVQUFELENBQXRCOztBQUNBLElBQUlLLFlBQVksR0FBR0wsT0FBTyxDQUFDLDRCQUFELENBQTFCOztBQUdBLE1BQU1NLFdBQVcsR0FBRyxDQUFDQyxHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUNwQyxNQUFJQyxLQUFLLEdBQUc7QUFDUkMsSUFBQUEsUUFBUSxFQUFFSixHQUFHLENBQUNLLElBQUos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YkQsRUFhRyxVQUFVdkIsR0FBVixFQUFlO0FBQ2RWLElBQUFBLElBQUksQ0FBQ1UsR0FBRCxDQUFKO0FBQ0gsR0FmRDtBQWdCSCxDQW5CRDs7QUFxQkEsTUFBTXdCLE1BQU0sR0FBRyxDQUFDcEMsR0FBRCxFQUFNQyxHQUFOLEtBQWM7QUFDekIsTUFBSUQsR0FBRyxDQUFDcUMsT0FBUixFQUFpQjtBQUNickMsSUFBQUEsR0FBRyxDQUFDcUMsT0FBSixDQUFZQyxPQUFaO0FBQ0FyQyxJQUFBQSxHQUFHLENBQUNzQyxXQUFKLENBQWdCLFlBQWhCO0FBQ0gsR0FIRCxNQUlLO0FBQ0QsUUFBSTNCLEdBQUcsR0FBRyxJQUFJNEIsS0FBSixDQUFVLHdCQUFWLENBQVY7QUFDQTVCLElBQUFBLEdBQUcsQ0FBQ00sTUFBSixHQUFhLEdBQWI7QUFDSDtBQUNKLENBVEQ7O0FBV0F1QixPQUFPLENBQUMxQyxXQUFSLEdBQXNCQSxXQUF0QjtBQUNBMEMsT0FBTyxDQUFDckIsS0FBUixHQUFnQkEsS0FBaEI7QUFDQXFCLE9BQU8sQ0FBQ0wsTUFBUixHQUFpQkEsTUFBakI7QUFDQUssT0FBTyxDQUFDZixlQUFSLEdBQTBCQSxlQUExQiIsInNvdXJjZXNDb250ZW50IjpbInZhciBleHByZXNzID0gcmVxdWlyZSgnZXhwcmVzcycpO1xyXG52YXIgcm91dGVyID0gZXhwcmVzcy5Sb3V0ZXIoKTtcclxuXHJcbnZhciBVc2VycyA9IHJlcXVpcmUoJy4uL21vZGVscy91c2VycycpO1xyXG52YXIgcGFzc3BvcnQgPSByZXF1aXJlKCdwYXNzcG9ydCcpO1xyXG52YXIgYXV0aGVudGljYXRlID0gcmVxdWlyZSgnLi4vbWlkZGxld2FyZS9hdXRoZW50aWNhdGUnKTtcclxuXHJcblxyXG5jb25zdCBzaWdudXBBZG1pbiA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgdmFyIGFkbWluID0ge1xyXG4gICAgICAgIHVzZXJuYW1lOiByZXEuYm9keS5lbWFpbCxcclxuICAgICAgICBmaXJzdG5hbWU6IHJlcS5ib2R5LmZpcnN0bmFtZSxcclxuICAgICAgICBsYXN0bmFtZTogcmVxLmJvZHkubGFzdG5hbWUsXHJcbiAgICAgICAgZW1haWw6IHJlcS5ib2R5LmVtYWlsLFxyXG4gICAgICAgIHJvbGU6ICdhZG1pbidcclxuICAgIH1cclxuICAgIFVzZXJzLnJlZ2lzdGVyKG5ldyBVc2VycyhhZG1pbiksXHJcbiAgICAgICAgcmVxLmJvZHkucGFzc3dvcmQsIChlcnIsIHVzZXIpID0+IHtcclxuICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgc3RhdHVzOiAnUmVnaXN0cmF0aW9uIFVuc3VjY2Vzc2Z1bCEnIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlcS5ib2R5LmZpcnN0bmFtZSlcclxuICAgICAgICAgICAgICAgICAgICB1c2VyLmZpcnN0bmFtZSA9IHJlcS5ib2R5LmZpcnN0bmFtZTtcclxuICAgICAgICAgICAgICAgIGlmIChyZXEuYm9keS5sYXN0bmFtZSlcclxuICAgICAgICAgICAgICAgICAgICB1c2VyLmxhc3RuYW1lID0gcmVxLmJvZHkubGFzdG5hbWU7XHJcbiAgICAgICAgICAgICAgICB1c2VyLnNhdmUoKGVyciwgdXNlcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCBzdGF0dXM6ICdSZWdpc3RyYXRpb24gU3VjY2Vzc2Z1bCEnIH0pO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxufVxyXG5cclxuY29uc3QgbG9naW4gPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHBhc3Nwb3J0LmF1dGhlbnRpY2F0ZSgnbG9jYWwnLCAoZXJyLCB1c2VyLCBpbmZvKSA9PiB7XHJcblxyXG4gICAgICAgIGlmICghdXNlcikge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwMTtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgc3RhdHVzOiAnTG9naW4gVW5zdWNjZXNzZnVsIScsIGVycjogaW5mbyB9KTtcclxuICAgICAgICAgICAgcmV0dXJuIG5leHQoZXJyKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmVxLmxvZ0luKHVzZXIsIChlcnIpID0+IHtcclxuICAgICAgICAgICAgdmFyIHRva2VuID0gYXV0aGVudGljYXRlLmdldFRva2VuKHsgX2lkOiByZXEudXNlci5faWQsIHJvbGU6IHVzZXIucm9sZSB9KTtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgc3RhdHVzOiAnTG9naW4gU3VjY2Vzc2Z1bCEnLCB0b2tlbjogdG9rZW4sIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSkocmVxLCByZXMsIG5leHQpO1xyXG59XHJcblxyXG5jb25zdCBjaGFuZ2VQYXNzb3dvcmQgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHZhciB1c2VySWQgPSByZXEucGFyYW1zLmlkO1xyXG4gICAgdmFyIG5ld1Bhc3N3b3JkU3RyaW5nID0gcmVxLmJvZHkucGFzc3dvcmQ7XHJcbiAgICBVc2Vycy5maW5kQnlJZCh1c2VySWQpLnRoZW4oZnVuY3Rpb24gKHNhbml0aXplZFVzZXIpIHtcclxuICAgICAgICBpZiAoc2FuaXRpemVkVXNlcikge1xyXG4gICAgICAgICAgICBzYW5pdGl6ZWRVc2VyLnNldFBhc3N3b3JkKG5ld1Bhc3N3b3JkU3RyaW5nLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICBzYW5pdGl6ZWRVc2VyLnNhdmUoKTtcclxuICAgICAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgbWVzc2FnZTogJ3Bhc3N3b3JkIHJlc2V0IHN1Y2Nlc3NmdWwnIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwNDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogJ1RoaXMgdXNlciBkb2VzIG5vdCBleGlzdCcgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSwgZnVuY3Rpb24gKGVycikge1xyXG4gICAgICAgIG5leHQoZXJyKTtcclxuICAgIH0pO1xyXG59XHJcblxyXG5jb25zdCBsb2dvdXQgPSAocmVxLCByZXMpID0+IHtcclxuICAgIGlmIChyZXEuc2Vzc2lvbikge1xyXG4gICAgICAgIHJlcS5zZXNzaW9uLmRlc3Ryb3koKTtcclxuICAgICAgICByZXMuY2xlYXJDb29raWUoJ3Nlc3Npb24taWQnKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoJ1lvdSBhcmUgbm90IGxvZ2dlZCBpbiEnKTtcclxuICAgICAgICBlcnIuc3RhdHVzID0gNDAzO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnRzLnNpZ251cEFkbWluID0gc2lnbnVwQWRtaW47XHJcbmV4cG9ydHMubG9naW4gPSBsb2dpbjtcclxuZXhwb3J0cy5sb2dvdXQgPSBsb2dvdXQ7XHJcbmV4cG9ydHMuY2hhbmdlUGFzc293b3JkID0gY2hhbmdlUGFzc293b3JkOyJdfQ==\",\"originalCode\":\"var express = require('express');\\r\\nvar router = express.Router();\\r\\n\\r\\nvar Users = require('../models/users');\\r\\nvar passport = require('passport');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\n\\r\\n\\r\\nconst signupAdmin = (req, res, next) => {\\r\\n var admin = {\\r\\n username: req.body.email,\\r\\n firstname: req.body.firstname,\\r\\n lastname: req.body.lastname,\\r\\n email: req.body.email,\\r\\n role: 'admin'\\r\\n }\\r\\n Users.register(new Users(admin),\\r\\n req.body.password, (err, user) => {\\r\\n if (err) {\\r\\n res.statusCode = 403;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, status: 'Registration Unsuccessful!' });\\r\\n }\\r\\n else {\\r\\n if (req.body.firstname)\\r\\n user.firstname = req.body.firstname;\\r\\n if (req.body.lastname)\\r\\n user.lastname = req.body.lastname;\\r\\n user.save((err, user) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, status: 'Registration Successful!' });\\r\\n });\\r\\n }\\r\\n });\\r\\n}\\r\\n\\r\\nconst login = (req, res, next) => {\\r\\n passport.authenticate('local', (err, user, info) => {\\r\\n\\r\\n if (!user) {\\r\\n res.statusCode = 401;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, status: 'Login Unsuccessful!', err: info });\\r\\n return next(err);\\r\\n }\\r\\n req.logIn(user, (err) => {\\r\\n var token = authenticate.getToken({ _id: req.user._id, role: user.role });\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, status: 'Login Successful!', token: token, });\\r\\n });\\r\\n })(req, res, next);\\r\\n}\\r\\n\\r\\nconst changePassoword = (req, res, next) => {\\r\\n var userId = req.params.id;\\r\\n var newPasswordString = req.body.password;\\r\\n Users.findById(userId).then(function (sanitizedUser) {\\r\\n if (sanitizedUser) {\\r\\n sanitizedUser.setPassword(newPasswordString, function () {\\r\\n sanitizedUser.save();\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, message: 'password reset successful' });\\r\\n });\\r\\n } else {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'This user does not exist' });\\r\\n }\\r\\n }, function (err) {\\r\\n next(err);\\r\\n });\\r\\n}\\r\\n\\r\\nconst logout = (req, res) => {\\r\\n if (req.session) {\\r\\n req.session.destroy();\\r\\n res.clearCookie('session-id');\\r\\n }\\r\\n else {\\r\\n var err = new Error('You are not logged in!');\\r\\n err.status = 403;\\r\\n }\\r\\n}\\r\\n\\r\\nexports.signupAdmin = signupAdmin;\\r\\nexports.login = login;\\r\\nexports.logout = logout;\\r\\nexports.changePassoword = changePassoword;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/df/userController_dfcc3c245d97ff3aba4c4e3eb1674b0e.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2494\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\userController.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":12954,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":12951,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"signupAdmin\",\"ranges\":[{\"startOffset\":313,\"endOffset\":1156,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":553,\"endOffset\":1152,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":926,\"endOffset\":1140,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"login\",\"ranges\":[{\"startOffset\":1173,\"endOffset\":1848,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1228,\"endOffset\":1828,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1512,\"endOffset\":1822,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"changePassoword\",\"ranges\":[{\"startOffset\":1875,\"endOffset\":2594,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"logout\",\"ranges\":[{\"startOffset\":2612,\"endOffset\":2800,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const express = require('express');\\n\\nconst cors = require('cors');\\n\\nconst app = express();\\n\\nconst util = require('util');\\n\\nconst whitelist = ['http://localhost:3000', 'http://localhost:3001', 'https://localhost:5000'];\\n\\nvar corsOptionsDelegate = (req, callback) => {\\n var corsOptions;\\n\\n if (whitelist.indexOf(req.header('Origin')) !== -1) {\\n corsOptions = {\\n origin: true\\n };\\n } else {\\n corsOptions = {\\n origin: false\\n };\\n }\\n\\n callback(null, corsOptions);\\n}; // if we want to allow all origins\\n\\n\\nexports.cors = cors(); // if we want to allow only the whitelisted origins\\n\\nexports.corsWithOptions = cors(corsOptionsDelegate);\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvcnMuanMiXSwibmFtZXMiOlsiZXhwcmVzcyIsInJlcXVpcmUiLCJjb3JzIiwiYXBwIiwidXRpbCIsIndoaXRlbGlzdCIsImNvcnNPcHRpb25zRGVsZWdhdGUiLCJyZXEiLCJjYWxsYmFjayIsImNvcnNPcHRpb25zIiwiaW5kZXhPZiIsImhlYWRlciIsIm9yaWdpbiIsImV4cG9ydHMiLCJjb3JzV2l0aE9wdGlvbnMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBdkI7O0FBQ0EsTUFBTUMsSUFBSSxHQUFHRCxPQUFPLENBQUMsTUFBRCxDQUFwQjs7QUFDQSxNQUFNRSxHQUFHLEdBQUdILE9BQU8sRUFBbkI7O0FBQ0EsTUFBTUksSUFBSSxHQUFHSCxPQUFPLENBQUMsTUFBRCxDQUFwQjs7QUFFQSxNQUFNSSxTQUFTLEdBQUcsQ0FBQyx1QkFBRCxFQUEwQix1QkFBMUIsRUFBbUQsd0JBQW5ELENBQWxCOztBQUNBLElBQUlDLG1CQUFtQixHQUFHLENBQUNDLEdBQUQsRUFBTUMsUUFBTixLQUFtQjtBQUN6QyxNQUFJQyxXQUFKOztBQUNBLE1BQUdKLFNBQVMsQ0FBQ0ssT0FBVixDQUFrQkgsR0FBRyxDQUFDSSxNQUFKLENBQVcsUUFBWCxDQUFsQixNQUE0QyxDQUFDLENBQWhELEVBQW1EO0FBQy9DRixJQUFBQSxXQUFXLEdBQUc7QUFBRUcsTUFBQUEsTUFBTSxFQUFFO0FBQVYsS0FBZDtBQUNILEdBRkQsTUFHSztBQUNESCxJQUFBQSxXQUFXLEdBQUc7QUFBRUcsTUFBQUEsTUFBTSxFQUFFO0FBQVYsS0FBZDtBQUNIOztBQUNESixFQUFBQSxRQUFRLENBQUMsSUFBRCxFQUFPQyxXQUFQLENBQVI7QUFDSCxDQVRELEMsQ0FXQTs7O0FBQ0FJLE9BQU8sQ0FBQ1gsSUFBUixHQUFlQSxJQUFJLEVBQW5CLEMsQ0FFQTs7QUFDQVcsT0FBTyxDQUFDQyxlQUFSLEdBQTBCWixJQUFJLENBQUNJLG1CQUFELENBQTlCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZXhwcmVzcyA9IHJlcXVpcmUoJ2V4cHJlc3MnKTtcclxuY29uc3QgY29ycyA9IHJlcXVpcmUoJ2NvcnMnKTtcclxuY29uc3QgYXBwID0gZXhwcmVzcygpO1xyXG5jb25zdCB1dGlsID0gcmVxdWlyZSgndXRpbCcpO1xyXG5cclxuY29uc3Qgd2hpdGVsaXN0ID0gWydodHRwOi8vbG9jYWxob3N0OjMwMDAnLCAnaHR0cDovL2xvY2FsaG9zdDozMDAxJywgJ2h0dHBzOi8vbG9jYWxob3N0OjUwMDAnXTtcclxudmFyIGNvcnNPcHRpb25zRGVsZWdhdGUgPSAocmVxLCBjYWxsYmFjaykgPT4ge1xyXG4gICAgdmFyIGNvcnNPcHRpb25zO1xyXG4gICAgaWYod2hpdGVsaXN0LmluZGV4T2YocmVxLmhlYWRlcignT3JpZ2luJykpICE9PSAtMSkge1xyXG4gICAgICAgIGNvcnNPcHRpb25zID0geyBvcmlnaW46IHRydWUgfTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGNvcnNPcHRpb25zID0geyBvcmlnaW46IGZhbHNlIH07XHJcbiAgICB9XHJcbiAgICBjYWxsYmFjayhudWxsLCBjb3JzT3B0aW9ucyk7XHJcbn07XHJcblxyXG4vLyBpZiB3ZSB3YW50IHRvIGFsbG93IGFsbCBvcmlnaW5zXHJcbmV4cG9ydHMuY29ycyA9IGNvcnMoKTtcclxuXHJcbi8vIGlmIHdlIHdhbnQgdG8gYWxsb3cgb25seSB0aGUgd2hpdGVsaXN0ZWQgb3JpZ2luc1xyXG5leHBvcnRzLmNvcnNXaXRoT3B0aW9ucyA9IGNvcnMoY29yc09wdGlvbnNEZWxlZ2F0ZSk7Il19\",\"originalCode\":\"const express = require('express');\\r\\nconst cors = require('cors');\\r\\nconst app = express();\\r\\nconst util = require('util');\\r\\n\\r\\nconst whitelist = ['http://localhost:3000', 'http://localhost:3001', 'https://localhost:5000'];\\r\\nvar corsOptionsDelegate = (req, callback) => {\\r\\n var corsOptions;\\r\\n if(whitelist.indexOf(req.header('Origin')) !== -1) {\\r\\n corsOptions = { origin: true };\\r\\n }\\r\\n else {\\r\\n corsOptions = { origin: false };\\r\\n }\\r\\n callback(null, corsOptions);\\r\\n};\\r\\n\\r\\n// if we want to allow all origins\\r\\nexports.cors = cors();\\r\\n\\r\\n// if we want to allow only the whitelisted origins\\r\\nexports.corsWithOptions = cors(corsOptionsDelegate);\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/34/cors_34beef0e65d7cfb3f2bb7a05fb9de802.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2495\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\cors.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":2982,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":2979,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"corsOptionsDelegate\",\"ranges\":[{\"startOffset\":335,\"endOffset\":573,\"count\":8}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const express = require('express');\\n\\nconst bodyParser = require('body-parser');\\n\\nconst {\\n checkSchema\\n} = require('express-validator');\\n\\nconst cors = require('./cors');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nvar validationRules = require('../middleware/validation');\\n\\nconst employeeController = require('../controllers/employeeController');\\n\\nconst employeeRouter = express.Router();\\nemployeeRouter.use(bodyParser.json()); // **********************************************************************************\\n// \\n// Employee Routes\\n// \\n// **********************************************************************************\\n\\nemployeeRouter.route('/').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.getAllEmployees).post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.addEmployee).put(cors.corsWithOptions, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('PUT operation not supported on /employees');\\n}).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.deleteAllEmployees);\\nemployeeRouter.route('/search').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.getAllEmployeesByName); // **********************************************************************************\\n// \\n// Employee Routes Specified by ID\\n// \\n// **********************************************************************************\\n\\nemployeeRouter.route('/:employeeId').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.getEmployeeDetailsById).post(cors.corsWithOptions, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('POST operation not supported on /employees/' + req.params.employeeId);\\n}).put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.updateEmployeeDetailsById).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.deleteAEmployeeById);\\nmodule.exports = employeeRouter;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImVtcGxveWVlUm91dGVyLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwiYm9keVBhcnNlciIsImNoZWNrU2NoZW1hIiwiY29ycyIsImF1dGhlbnRpY2F0ZSIsInZhbGlkYXRpb25SdWxlcyIsImVtcGxveWVlQ29udHJvbGxlciIsImVtcGxveWVlUm91dGVyIiwiUm91dGVyIiwidXNlIiwianNvbiIsInJvdXRlIiwib3B0aW9ucyIsImNvcnNXaXRoT3B0aW9ucyIsInJlcSIsInJlcyIsInNlbmRTdGF0dXMiLCJnZXQiLCJ2ZXJpZnlVc2VyIiwidmVyaWZ5QWRtaW4iLCJnZXRBbGxFbXBsb3llZXMiLCJwb3N0IiwiYWRkRW1wbG95ZWUiLCJwdXQiLCJuZXh0Iiwic3RhdHVzQ29kZSIsImVuZCIsImRlbGV0ZSIsImRlbGV0ZUFsbEVtcGxveWVlcyIsImdldEFsbEVtcGxveWVlc0J5TmFtZSIsImdldEVtcGxveWVlRGV0YWlsc0J5SWQiLCJwYXJhbXMiLCJlbXBsb3llZUlkIiwidXBkYXRlRW1wbG95ZWVEZXRhaWxzQnlJZCIsImRlbGV0ZUFFbXBsb3llZUJ5SWQiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxPQUFPLEdBQUdDLE9BQU8sQ0FBQyxTQUFELENBQXZCOztBQUNBLE1BQU1DLFVBQVUsR0FBR0QsT0FBTyxDQUFDLGFBQUQsQ0FBMUI7O0FBQ0EsTUFBTTtBQUFFRSxFQUFBQTtBQUFGLElBQWtCRixPQUFPLENBQUMsbUJBQUQsQ0FBL0I7O0FBQ0EsTUFBTUcsSUFBSSxHQUFHSCxPQUFPLENBQUMsUUFBRCxDQUFwQjs7QUFDQSxJQUFJSSxZQUFZLEdBQUdKLE9BQU8sQ0FBQyw0QkFBRCxDQUExQjs7QUFDQSxJQUFJSyxlQUFlLEdBQUdMLE9BQU8sQ0FBQywwQkFBRCxDQUE3Qjs7QUFDQSxNQUFNTSxrQkFBa0IsR0FBR04sT0FBTyxDQUFDLG1DQUFELENBQWxDOztBQUVBLE1BQU1PLGNBQWMsR0FBR1IsT0FB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cHJlc3MnKTtcclxuY29uc3QgYm9keVBhcnNlciA9IHJlcXVpcmUoJ2JvZHktcGFyc2VyJyk7XHJcbmNvbnN0IHsgY2hlY2tTY2hlbWEgfSA9IHJlcXVpcmUoJ2V4cHJlc3MtdmFsaWRhdG9yJyk7XHJcbmNvbnN0IGNvcnMgPSByZXF1aXJlKCcuL2NvcnMnKTtcclxudmFyIGF1dGhlbnRpY2F0ZSA9IHJlcXVpcmUoJy4uL21pZGRsZXdhcmUvYXV0aGVudGljYXRlJyk7XHJcbnZhciB2YWxpZGF0aW9uUnVsZXMgPSByZXF1aXJlKCcuLi9taWRkbGV3YXJlL3ZhbGlkYXRpb24nKTtcclxuY29uc3QgZW1wbG95ZWVDb250cm9sbGVyID0gcmVxdWlyZSgnLi4vY29udHJvbGxlcnMvZW1wbG95ZWVDb250cm9sbGVyJyk7XHJcblxyXG5jb25zdCBlbXBsb3llZVJvdXRlciA9IGV4cHJlc3MuUm91dGVyKCk7XHJcblxyXG5lbXBsb3llZVJvdXRlci51c2UoYm9keVBhcnNlci5qc29uKCkpO1xyXG5cclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyBcclxuLy8gICAgICAgICAgICAgIEVtcGxveWVlIFJvdXRlc1xyXG4vLyBcclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuZW1wbG95ZWVSb3V0ZXIucm91dGUoJy8nKVxyXG4gICAgLm9wdGlvbnMoY29ycy5jb3JzV2l0aE9wdGlvbnMsIChyZXEsIHJlcykgPT4geyByZXMuc2VuZFN0YXR1cygyMDApOyB9KVxyXG4gICAgLmdldChjb3JzLmNvcnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCBhdXRoZW50aWNhdGUudmVyaWZ5QWRtaW4sICBlbXBsb3llZUNvbnRyb2xsZXIuZ2V0QWxsRW1wbG95ZWVzKVxyXG4gICAgLnBvc3QoY29ycy5jb3JzV2l0aE9wdGlvbnMsYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgZW1wbG95ZWVDb250cm9sbGVyLmFkZEVtcGxveWVlKVxyXG4gICAgLnB1dChjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgcmVzLmVuZCgnUFVUIG9wZXJhdGlvbiBub3Qgc3VwcG9ydGVkIG9uIC9lbXBsb3llZXMnKTtcclxuICAgIH0pXHJcbiAgICAuZGVsZXRlKGNvcnMuY29yc1dpdGhPcHRpb25zLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeUFkbWluLCAgZW1wbG95ZWVDb250cm9sbGVyLmRlbGV0ZUFsbEVtcGxveWVlcyk7XHJcbmVtcGxveWVlUm91dGVyLnJvdXRlKCcvc2VhcmNoJylcclxuICAgIC5vcHRpb25zKGNvcnMuY29yc1dpdGhPcHRpb25zLCAocmVxLCByZXMpID0+IHsgcmVzLnNlbmRTdGF0dXMoMjAwKTsgfSlcclxuICAgIC5wb3N0KGNvcnMuY29yc1dpdGhPcHRpb25zLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeUFkbWluLCBlbXBsb3llZUNvbnRyb2xsZXIuZ2V0QWxsRW1wbG95ZWVzQnlOYW1lKTtcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuLy8gXHJcbi8vICAgICAgICAgICAgICBFbXBsb3llZSBSb3V0ZXMgU3BlY2lmaWVkIGJ5IElEXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG5lbXBsb3llZVJvdXRlci5yb3V0ZSgnLzplbXBsb3llZUlkJylcclxuICAgIC5vcHRpb25zKGNvcnMuY29yc1dpdGhPcHRpb25zLCAocmVxLCByZXMpID0+IHsgcmVzLnNlbmRTdGF0dXMoMjAwKTsgfSlcclxuICAgIC5nZXQoY29ycy5jb3JzLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeUFkbWluLCAgZW1wbG95ZWVDb250cm9sbGVyLmdldEVtcGxveWVlRGV0YWlsc0J5SWQpXHJcbiAgICAucG9zdChjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgcmVzLmVuZCgnUE9TVCBvcGVyYXRpb24gbm90IHN1cHBvcnRlZCBvbiAvZW1wbG95ZWVzLycgKyByZXEucGFyYW1zLmVtcGxveWVlSWQpO1xyXG4gICAgfSlcclxuICAgIC5wdXQoY29ycy5jb3JzV2l0aE9wdGlvbnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCBhdXRoZW50aWNhdGUudmVyaWZ5QWRtaW4sICBlbXBsb3llZUNvbnRyb2xsZXIudXBkYXRlRW1wbG95ZWVEZXRhaWxzQnlJZClcclxuICAgIC5kZWxldGUoY29ycy5jb3JzV2l0aE9wdGlvbnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCBhdXRoZW50aWNhdGUudmVyaWZ5QWRtaW4sICBlbXBsb3llZUNvbnRyb2xsZXIuZGVsZXRlQUVtcGxveWVlQnlJZCk7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IGVtcGxveWVlUm91dGVyOyJdfQ==\",\"originalCode\":\"const express = require('express');\\r\\nconst bodyParser = require('body-parser');\\r\\nconst { checkSchema } = require('express-validator');\\r\\nconst cors = require('./cors');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\nvar validationRules = require('../middleware/validation');\\r\\nconst employeeController = require('../controllers/employeeController');\\r\\n\\r\\nconst employeeRouter = express.Router();\\r\\n\\r\\nemployeeRouter.use(bodyParser.json());\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Employee Routes\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nemployeeRouter.route('/')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.getAllEmployees)\\r\\n .post(cors.corsWithOptions,authenticate.verifyUser, authenticate.verifyAdmin, employeeController.addEmployee)\\r\\n .put(cors.corsWithOptions, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('PUT operation not supported on /employees');\\r\\n })\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.deleteAllEmployees);\\r\\nemployeeRouter.route('/search')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.getAllEmployeesByName);\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Employee Routes Specified by ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nemployeeRouter.route('/:employeeId')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.getEmployeeDetailsById)\\r\\n .post(cors.corsWithOptions, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('POST operation not supported on /employees/' + req.params.employeeId);\\r\\n })\\r\\n .put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.updateEmployeeDetailsById)\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.deleteAEmployeeById);\\r\\n\\r\\nmodule.exports = employeeRouter;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/3b/employeeRouter_3bb83cd3174a28ed34e0f44c133b9b42.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2496\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\employeeRouter.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":9455,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":9452,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":802,\"endOffset\":842,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1082,\"endOffset\":1185,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1369,\"endOffset\":1409,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1828,\"endOffset\":1868,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":2006,\"endOffset\":2135,\"count\":1}],\"isBlockCoverage\":true}]}},{\"codeTransformResult\":{\"code\":\"const Employees = require('../models/users');\\n\\nconst utils = require('../utils/utils'); // **********************************************************************************\\n// \\n// Employee Operations \\n// \\n// **********************************************************************************\\n\\n/**\\r\\n * @description get details of the assistants\\r\\n * @param {*} req \\r\\n * @param {*} res \\r\\n * @param {*} next \\r\\n * @returns {array} list of employees\\r\\n */\\n\\n\\nconst getAllEmployees = (req, res, next) => {\\n var query = {\\n \\\"role\\\": \\\"moderater\\\"\\n };\\n Employees.find(query).then(employees => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n employees: employees\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst getAllEmployeesByName = (req, res, next) => {\\n var query = {\\n \\\"role\\\": \\\"moderater\\\"\\n }; // if (req.body.similarTo) {\\n // var searchBy = req.body.similarTo || {}\\n // query = { \\\"role\\\": \\\"moderater\\\", $text: { $search: searchBy } }\\n // }\\n\\n if (req.body.similarTo) {\\n var searchBy = req.body.similarTo || {};\\n query = {\\n \\\"role\\\": \\\"moderater\\\",\\n firstname: {\\n $regex: `${searchBy}`,\\n $options: \\\"i\\\"\\n }\\n };\\n }\\n\\n var sortby = req.body.sortBy || {};\\n Employees.find(query).sort(sortby).then(employees => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n employees: employees\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst addEmployee = async (req, res, next) => {\\n const randomPassword = utils.password_generator(10);\\n var employee = {\\n username: req.body.email,\\n firstname: req.body.firstname,\\n lastname: req.body.lastname,\\n email: req.body.email,\\n role: 'moderater'\\n };\\n\\n try {\\n Employees.register(new Employees(employee), randomPassword, (err, employee) => {\\n if (err) {\\n res.statusCode = 403;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: err.message\\n });\\n } else {\\n employee.save((err, employee) => {\\n if (err) {\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Error while Saving new user.'\\n });\\n }\\n\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n email: employee.email,\\n password: randomPassword\\n });\\n });\\n }\\n });\\n } catch (error) {\\n var err = new Error(\\\"Error while registering new user.\\\");\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: err.message\\n });\\n }\\n};\\n\\nconst deleteAllEmployees = (req, res, next) => {\\n Employees.remove({\\n \\\"role\\\": \\\"moderater\\\"\\n }).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json(resp);\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nexports.getAllEmployees = getAllEmployees;\\nexports.getAllEmployeesByName = getAllEmployeesByName;\\nexports.addEmployee = addEmployee;\\nexports.deleteAllEmployees = deleteAllEmployees; // **********************************************************************************\\n// \\n// Employee Operations Specified by ID\\n// \\n// **********************************************************************************\\n\\nconst getEmployeeDetailsById = (req, res, next) => {\\n Employees.findById(req.params.employeeId).then(employee => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n employee: employee\\n });\\n }, err => {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Could not find employee with given ID'\\n });\\n }).catch(err => next(err));\\n};\\n\\nconst updateEmployeeDetailsById = (req, res, next) => {\\n var employee = {\\n username: req.body.email,\\n firstname: req.body.firstname,\\n lastname: req.body.lastname,\\n email: req.body.email,\\n role: 'moderater'\\n };\\n Employees.findByIdAndUpdate(req.params.employeeId, {\\n $set: employee\\n }, {\\n new: true\\n }).then(employee => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n employee: employee\\n });\\n }, err => next(err)).catch(err => {\\n var err = new Error(\\\"Error while updating.\\\");\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: err.message\\n });\\n });\\n};\\n\\nconst deleteAEmployeeById = (req, res, next) => {\\n Employees.findByIdAndRemove(req.params.employeeId).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json(resp);\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nexports.getEmployeeDetailsById = getEmployeeDetailsById;\\nexports.updateEmployeeDetailsById = updateEmployeeDetailsById;\\nexports.deleteAEmployeeById = deleteAEmployeeById;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImVtcGxveWVlQ29udHJvbGxlci5qcyJdLCJuYW1lcyI6WyJFbXBsb3llZXMiLCJyZXF1aXJlIiwidXRpbHMiLCJnZXRBbGxFbXBsb3llZXMiLCJyZXEiLCJyZXMiLCJuZXh0IiwicXVlcnkiLCJmaW5kIiwidGhlbiIsImVtcGxveWVlcyIsInN0YXR1c0NvZGUiLCJzZXRIZWFkZXIiLCJqc29uIiwic3VjY2VzcyIsImVyciIsImNhdGNoIiwiZ2V0QWxsRW1wbG95ZWVzQnlOYW1lIiwiYm9keSIsInNpbWlsYXJUbyIsInNlYXJjaEJ5IiwiZmlyc3RuYW1lIiwiJHJlZ2V4IiwiJG9wdGlvbnMiLCJzb3J0YnkiLCJzb3J0QnkiLCJzb3J0IiwiYWRkRW1wbG95ZWUiLCJyYW5kb21QYXNzd29yZCIsInBhc3N3b3JkX2dlbmVyYXRvciIsImVtcGxveWVlIiwidXNlcm5hbWUiLCJlbWFpbCIsImxhc3RuYW1lIiwicm9sZSIsInJlZ2lzdGVyIiwibWVzc2FnZSIsInNhdmUiLCJwYXNzd29yZCIsImVycm9yIiwiRXJyb3IiLCJkZWxldGVBbGxFbXBsb3llZXMiLCJyZW1vdmUiLCJyZXNwIiwiZXhwb3J0cyIsImdldEVtcGxveWVlRGV0YWlsc0J5SWQiLCJmaW5kQnlJZCIsInBhcmFtcyIsImVtcGxveWVlSWQiLCJ1cGRhdGVFbXBsb3llZURldGFpbHNCeUlkIiwiZmluZEJ5SWRBbmRVcGRhdGUiLCIkc2V0IiwibmV3IiwiZGVsZXRlQUVtcGxveWVlQnlJZCIsImZpbmRCeUlkQW5kUmVtb3ZlIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxTQUFTLEdBQUdDLE9BQU8sQ0FBQyxpQkFBRCxDQUF6Qjs7QUFDQSxNQUFNQyxLQUFLLEdBQUdELE9BQU8sQ0FBQyxnQkFBRCxDQUFyQixDLENBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0EsTUFBTUUsZUFBZSxHQUFHLENBQUNDLEdBQUQsRUFBTUMsR0FBTixF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SSxDQUFDUyxHQUFELENBTHBCLEVBTUtDLEtBTkwsQ0FNWUQsR0FBRCxJQUFTVCxJQUFJLENBQUNTLEdBQUQsQ0FOeEI7QUFPSCxDQVJEOztBQVVBNkIsT0FBTyxDQUFDQyxzQkFBUixHQUFpQ0Esc0JBQWpDO0FBQ0FELE9BQU8sQ0FBQ0sseUJBQVIsR0FBb0NBLHlCQUFwQztBQUNBTCxPQUFPLENBQUNTLG1CQUFSLEdBQThCQSxtQkFBOUIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBFbXBsb3llZXMgPSByZXF1aXJlKCcuLi9tb2RlbHMvdXNlcnMnKTtcclxuY29uc3QgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscy91dGlscycpO1xyXG5cclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyBcclxuLy8gICAgICAgICAgICAgIEVtcGxveWVlIE9wZXJhdGlvbnMgXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG4vKipcclxuICogQGRlc2NyaXB0aW9uIGdldCBkZXRhaWxzIG9mIHRoZSBhc3Npc3RhbnRzXHJcbiAqIEBwYXJhbSB7Kn0gcmVxIFxyXG4gKiBAcGFyYW0geyp9IHJlcyBcclxuICogQHBhcmFtIHsqfSBuZXh0IFxyXG4gKiBAcmV0dXJucyB7YXJyYXl9IGxpc3Qgb2YgZW1wbG95ZWVzXHJcbiAqL1xyXG5jb25zdCBnZXRBbGxFbXBsb3llZXMgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHZhciBxdWVyeSA9IHsgXCJyb2xlXCI6IFwibW9kZXJhdGVyXCIgfTtcclxuICAgIEVtcGxveWVlcy5maW5kKHF1ZXJ5KVxyXG4gICAgICAgIC50aGVuKChlbXBsb3llZXMpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgZW1wbG95ZWVzOiBlbXBsb3llZXMgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpO1xyXG59XHJcblxyXG5jb25zdCBnZXRBbGxFbXBsb3llZXNCeU5hbWUgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHZhciBxdWVyeSA9IHsgXCJyb2xlXCI6IFwibW9kZXJhdGVyXCIgfTtcclxuICAgIC8vIGlmIChyZXEuYm9keS5zaW1pbGFyVG8pIHtcclxuICAgIC8vICAgICB2YXIgc2VhcmNoQnkgPSByZXEuYm9keS5zaW1pbGFyVG8gfHwge31cclxuICAgIC8vICAgICBxdWVyeSA9IHsgXCJyb2xlXCI6IFwibW9kZXJhdGVyXCIsICR0ZXh0OiB7ICRzZWFyY2g6IHNlYXJjaEJ5IH0gfVxyXG4gICAgLy8gfVxyXG4gICAgaWYgKHJlcS5ib2R5LnNpbWlsYXJUbykge1xyXG4gICAgICAgIHZhciBzZWFyY2hCeSA9IHJlcS5ib2R5LnNpbWlsYXJUbyB8fCB7fVxyXG4gICAgICAgIHF1ZXJ5ID0geyBcInJvbGVcIjogXCJtb2RlcmF0ZXJcIiwgZmlyc3RuYW1lOiB7ICRyZWdleDogYCR7c2VhcmNoQnl9YCwgJG9wdGlvbnM6IFwiaVwiIH0gfVxyXG4gICAgfVxyXG4gICAgdmFyIHNvcnRieSA9IHJlcS5ib2R5LnNvcnRCeSB8fCB7fTtcclxuICAgIEVtcGxveWVlcy5maW5kKHF1ZXJ5KS5zb3J0KHNvcnRieSlcclxuICAgICAgICAudGhlbigoZW1wbG95ZWVzKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIGVtcGxveWVlczogZW1wbG95ZWVzIH0pO1xyXG4gICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuY29uc3QgYWRkRW1wbG95ZWUgPSBhc3luYyAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIGNvbnN0IHJhbmRvbVBhc3N3b3JkID0gdXRpbHMucGFzc3dvcmRfZ2VuZXJhdG9yKDEwKTtcclxuICAgIHZhciBlbXBsb3llZSA9IHtcclxuICAgICAgICB1c2VybmFtZTogcmVxLmJvZHkuZW1haWwsXHJcbiAgICAgICAgZmlyc3RuYW1lOiByZXEuYm9keS5maXJzdG5hbWUsXHJcbiAgICAgICAgbGFzdG5hbWU6IHJlcS5ib2R5Lmxhc3RuYW1lLFxyXG4gICAgICAgIGVtYWlsOiByZXEuYm9keS5lbWFpbCxcclxuICAgICAgICByb2xlOiAnbW9kZXJhdGVyJ1xyXG4gICAgfVxyXG4gICAgdHJ5IHtcclxuICAgICAgICBFbXBsb3llZXMucmVnaXN0ZXIobmV3IEVtcGxveWVlcyhlbXBsb3llZSksXHJcbiAgICAgICAgICAgIHJhbmRvbVBhc3N3b3JkLCAoZXJyLCBlbXBsb3llZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNDAzO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogZXJyLm1lc3NhZ2UgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBlbXBsb3llZS5zYXZlKChlcnIsIGVtcGxveWVlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNTAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IGZhbHNlLCBtZXNzYWdlOiAnRXJyb3Igd2hpbGUgU2F2aW5nIG5ldyB1c2VyLicgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgZW1haWw6IGVtcGxveWVlLmVtYWlsLCBwYXNzd29yZDogcmFuZG9tUGFzc3dvcmQgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICB2YXIgZXJyID0gbmV3IEVycm9yKFwiRXJyb3Igd2hpbGUgcmVnaXN0ZXJpbmcgbmV3IHVzZXIuXCIpO1xyXG4gICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNTAwO1xyXG4gICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogZXJyLm1lc3NhZ2UgfSk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmNvbnN0IGRlbGV0ZUFsbEVtcGxveWVlcyA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgRW1wbG95ZWVzLnJlbW92ZSh7IFwicm9sZVwiOiBcIm1vZGVyYXRlclwiIH0pXHJcbiAgICAgICAgLnRoZW4oKHJlc3ApID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHJlc3ApO1xyXG4gICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuZXhwb3J0cy5nZXRBbGxFbXBsb3llZXMgPSBnZXRBbGxFbXBsb3llZXM7XHJcbmV4cG9ydHMuZ2V0QWxsRW1wbG95ZWVzQnlOYW1lID0gZ2V0QWxsRW1wbG95ZWVzQnlOYW1lO1xyXG5leHBvcnRzLmFkZEVtcGxveWVlID0gYWRkRW1wbG95ZWU7XHJcbmV4cG9ydHMuZGVsZXRlQWxsRW1wbG95ZWVzID0gZGVsZXRlQWxsRW1wbG95ZWVzO1xyXG5cclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyBcclxuLy8gICAgICAgICAgICAgIEVtcGxveWVlIE9wZXJhdGlvbnMgU3BlY2lmaWVkIGJ5IElEXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG5jb25zdCBnZXRFbXBsb3llZURldGFpbHNCeUlkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICBFbXBsb3llZXMuZmluZEJ5SWQocmVxLnBhcmFtcy5lbXBsb3llZUlkKVxyXG4gICAgICAgIC50aGVuKChlbXBsb3llZSkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCBlbXBsb3llZTogZW1wbG95ZWUgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwNDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogJ0NvdWxkIG5vdCBmaW5kIGVtcGxveWVlIHdpdGggZ2l2ZW4gSUQnIH0pO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IG5leHQoZXJyKSk7XHJcbn1cclxuXHJcbmNvbnN0IHVwZGF0ZUVtcGxveWVlRGV0YWlsc0J5SWQgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHZhciBlbXBsb3llZSA9IHtcclxuICAgICAgICB1c2VybmFtZTogcmVxLmJvZHkuZW1haWwsXHJcbiAgICAgICAgZmlyc3RuYW1lOiByZXEuYm9keS5maXJzdG5hbWUsXHJcbiAgICAgICAgbGFzdG5hbWU6IHJlcS5ib2R5Lmxhc3RuYW1lLFxyXG4gICAgICAgIGVtYWlsOiByZXEuYm9keS5lbWFpbCxcclxuICAgICAgICByb2xlOiAnbW9kZXJhdGVyJ1xyXG4gICAgfVxyXG4gICAgRW1wbG95ZWVzLmZpbmRCeUlkQW5kVXBkYXRlKHJlcS5wYXJhbXMuZW1wbG95ZWVJZCwge1xyXG4gICAgICAgICRzZXQ6IGVtcGxveWVlXHJcbiAgICB9LCB7IG5ldzogdHJ1ZSB9KVxyXG4gICAgICAgIC50aGVuKChlbXBsb3llZSkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCBlbXBsb3llZTogZW1wbG95ZWUgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoXCJFcnJvciB3aGlsZSB1cGRhdGluZy5cIik7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNTAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IGZhbHNlLCBtZXNzYWdlOiBlcnIubWVzc2FnZSB9KTtcclxuICAgICAgICB9KTtcclxufVxyXG5cclxuY29uc3QgZGVsZXRlQUVtcGxveWVlQnlJZCA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgRW1wbG95ZWVzLmZpbmRCeUlkQW5kUmVtb3ZlKHJlcS5wYXJhbXMuZW1wbG95ZWVJZClcclxuICAgICAgICAudGhlbigocmVzcCkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24ocmVzcCk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpO1xyXG59XHJcblxyXG5leHBvcnRzLmdldEVtcGxveWVlRGV0YWlsc0J5SWQgPSBnZXRFbXBsb3llZURldGFpbHNCeUlkO1xyXG5leHBvcnRzLnVwZGF0ZUVtcGxveWVlRGV0YWlsc0J5SWQgPSB1cGRhdGVFbXBsb3llZURldGFpbHNCeUlkO1xyXG5leHBvcnRzLmRlbGV0ZUFFbXBsb3llZUJ5SWQgPSBkZWxldGVBRW1wbG95ZWVCeUlkOyJdfQ==\",\"originalCode\":\"const Employees = require('../models/users');\\r\\nconst utils = require('../utils/utils');\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Employee Operations \\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\n/**\\r\\n * @description get details of the assistants\\r\\n * @param {*} req \\r\\n * @param {*} res \\r\\n * @param {*} next \\r\\n * @returns {array} list of employees\\r\\n */\\r\\nconst getAllEmployees = (req, res, next) => {\\r\\n var query = { \\\"role\\\": \\\"moderater\\\" };\\r\\n Employees.find(query)\\r\\n .then((employees) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, employees: employees });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst getAllEmployeesByName = (req, res, next) => {\\r\\n var query = { \\\"role\\\": \\\"moderater\\\" };\\r\\n // if (req.body.similarTo) {\\r\\n // var searchBy = req.body.similarTo || {}\\r\\n // query = { \\\"role\\\": \\\"moderater\\\", $text: { $search: searchBy } }\\r\\n // }\\r\\n if (req.body.similarTo) {\\r\\n var searchBy = req.body.similarTo || {}\\r\\n query = { \\\"role\\\": \\\"moderater\\\", firstname: { $regex: `${searchBy}`, $options: \\\"i\\\" } }\\r\\n }\\r\\n var sortby = req.body.sortBy || {};\\r\\n Employees.find(query).sort(sortby)\\r\\n .then((employees) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, employees: employees });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst addEmployee = async (req, res, next) => {\\r\\n const randomPassword = utils.password_generator(10);\\r\\n var employee = {\\r\\n username: req.body.email,\\r\\n firstname: req.body.firstname,\\r\\n lastname: req.body.lastname,\\r\\n email: req.body.email,\\r\\n role: 'moderater'\\r\\n }\\r\\n try {\\r\\n Employees.register(new Employees(employee),\\r\\n randomPassword, (err, employee) => {\\r\\n if (err) {\\r\\n res.statusCode = 403;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: err.message });\\r\\n }\\r\\n else {\\r\\n employee.save((err, employee) => {\\r\\n if (err) {\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Error while Saving new user.' });\\r\\n }\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, email: employee.email, password: randomPassword });\\r\\n });\\r\\n }\\r\\n });\\r\\n } catch (error) {\\r\\n var err = new Error(\\\"Error while registering new user.\\\");\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: err.message });\\r\\n }\\r\\n}\\r\\n\\r\\nconst deleteAllEmployees = (req, res, next) => {\\r\\n Employees.remove({ \\\"role\\\": \\\"moderater\\\" })\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json(resp);\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nexports.getAllEmployees = getAllEmployees;\\r\\nexports.getAllEmployeesByName = getAllEmployeesByName;\\r\\nexports.addEmployee = addEmployee;\\r\\nexports.deleteAllEmployees = deleteAllEmployees;\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Employee Operations Specified by ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nconst getEmployeeDetailsById = (req, res, next) => {\\r\\n Employees.findById(req.params.employeeId)\\r\\n .then((employee) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, employee: employee });\\r\\n }, (err) => {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Could not find employee with given ID' });\\r\\n })\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst updateEmployeeDetailsById = (req, res, next) => {\\r\\n var employee = {\\r\\n username: req.body.email,\\r\\n firstname: req.body.firstname,\\r\\n lastname: req.body.lastname,\\r\\n email: req.body.email,\\r\\n role: 'moderater'\\r\\n }\\r\\n Employees.findByIdAndUpdate(req.params.employeeId, {\\r\\n $set: employee\\r\\n }, { new: true })\\r\\n .then((employee) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, employee: employee });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => {\\r\\n var err = new Error(\\\"Error while updating.\\\");\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: err.message });\\r\\n });\\r\\n}\\r\\n\\r\\nconst deleteAEmployeeById = (req, res, next) => {\\r\\n Employees.findByIdAndRemove(req.params.employeeId)\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json(resp);\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nexports.getEmployeeDetailsById = getEmployeeDetailsById;\\r\\nexports.updateEmployeeDetailsById = updateEmployeeDetailsById;\\r\\nexports.deleteAEmployeeById = deleteAEmployeeById;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/6e/employeeController_6ee2f5b4e4eea073cb5625109f63cb82.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2497\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\employeeController.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":22470,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":22467,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"getAllEmployees\",\"ranges\":[{\"startOffset\":577,\"endOffset\":889,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getAllEmployeesByName\",\"ranges\":[{\"startOffset\":922,\"endOffset\":1648,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"addEmployee\",\"ranges\":[{\"startOffset\":1671,\"endOffset\":3020,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1998,\"endOffset\":2777,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":2250,\"endOffset\":2761,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"deleteAllEmployees\",\"ranges\":[{\"startOffset\":3050,\"endOffset\":3287,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getEmployeeDetailsById\",\"ranges\":[{\"startOffset\":3736,\"endOffset\":4197,\"count\":2}],\"isBlockCoverage\":true},{\"functionName\":\"Employees.findById.then.res.statusCode\",\"ranges\":[{\"startOffset\":3807,\"endOffset\":3974,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":3976,\"endOffset\":4169,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":4177,\"endOffset\":4193,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"updateEmployeeDetailsById\",\"ranges\":[{\"startOffset\":4234,\"endOffset\":4944,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":4532,\"endOffset\":4699,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":4701,\"endOffset\":4717,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":4725,\"endOffset\":4940,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"deleteAEmployeeById\",\"ranges\":[{\"startOffset\":4975,\"endOffset\":5215,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":5055,\"endOffset\":5169,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":5171,\"endOffset\":5187,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":5195,\"endOffset\":5211,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const multer = require('multer');\\n\\nconst {\\n v4: uuidv4\\n} = require('uuid');\\n\\nlet path = require('path');\\n\\nconst password_generator = len => {\\n var length = len ? len : 10;\\n var string = \\\"abcdefghijklmnopqrstuvwxyz\\\"; //to upper \\n\\n var numeric = '0123456789';\\n var punctuation = '!@#$%^&*()_+~`|}{[]\\\\:;?><,./-=';\\n var password = \\\"\\\";\\n var character = \\\"\\\";\\n var crunch = true;\\n\\n while (password.length < length) {\\n entity1 = Math.ceil(string.length * Math.random() * Math.random());\\n entity2 = Math.ceil(numeric.length * Math.random() * Math.random());\\n entity3 = Math.ceil(punctuation.length * Math.random() * Math.random());\\n hold = string.charAt(entity1);\\n hold = password.length % 2 == 0 ? hold.toUpperCase() : hold;\\n character += hold;\\n character += numeric.charAt(entity2);\\n character += punctuation.charAt(entity3);\\n password = character;\\n }\\n\\n password = password.split('').sort(function () {\\n return 0.5 - Math.random();\\n }).join('');\\n return password.substr(0, length);\\n};\\n\\nexports.password_generator = password_generator;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInV0aWxzLmpzIl0sIm5hbWVzIjpbIm11bHRlciIsInJlcXVpcmUiLCJ2NCIsInV1aWR2NCIsInBhdGgiLCJwYXNzd29yZF9nZW5lcmF0b3IiLCJsZW4iLCJsZW5ndGgiLCJzdHJpbmciLCJudW1lcmljIiwicHVuY3R1YXRpb24iLCJwYXNzd29yZCIsImNoYXJhY3RlciIsImNydW5jaCIsImVudGl0eTEiLCJNYXRoIiwiY2VpbCIsInJhbmRvbSIsImVudGl0eTIiLCJlbnRpdHkzIiwiaG9sZCIsImNoYXJBdCIsInRvVXBwZXJDYXNlIiwic3BsaXQiLCJzb3J0Iiwiam9pbiIsInN1YnN0ciIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE1BQU0sR0FBR0MsT0FBTyxDQUFDLFFBQUQsQ0FBdEI7O0FBQ0EsTUFBTTtBQUFFQyxFQUFBQSxFQUFFLEVBQUVDO0FBQU4sSUFBaUJGLE9BQU8sQ0FBQyxNQUFELENBQTlCOztBQUNBLElBQUlHLElBQUksR0FBR0gsT0FBTyxDQUFDLE1BQUQsQ0FBbEI7O0FBRUEsTUFBTUksa0JBQWtCLEdBQUlDLEdBQUQsSUFBUztBQUNoQyxNQUFJQyxNQUFNLEdBQUlELEdBQUQsR0FBU0EsR0FBVCxHQUFpQixFQUE5QjtBQUNBLE1BQUlFLE1BQU0sR0FBRyw0QkFBYixDQUZnQyxDQUVXOztBQUMzQyxNQUFJQyxPQUFPLEdBQUcsWUFBZDtBQUNBLE1BQUlDLFdBQVcsR0FBRyxnQ0FBbEI7QUFDQSxNQUFJQyxRQUFRLEdBQUcsRUFBZjtBQUNBLE1BQUlDLFNBQVMsR0FBRyxFQUFoQjtBQUNBLE1BQUlDLE1BQU0sR0FBRyxJQUFiOztBQUNBLFNBQU9GLFFBQVEsQ0FBQ0osTUFBVCxHQUFrQkEsTUFBekIsRUFBaUM7QUFDN0JPLElBQUFBLE9BQU8sR0FBR0MsSUFBSSxDQUFDQyxJQUFMLENBQVVSLE1BQU0sQ0FBQ0QsTUFBUCxHQUFnQlEsSUFBSSxDQUFDRSxNQUFMLEVBQWhCLEdBQWdDRixJQUFJLENBQUNFLE1BQUwsRUFBMUMsQ0FBVjtBQUNBQyxJQUFBQSxPQUFPLEdBQUdILElBQUksQ0FBQ0MsSUFBTCxDQUFVUCxPQUFPLENBQUNGLE1BQVIsR0FBaUJRLElBQUksQ0FBQ0UsTUFBTCxFQUFqQixHQUFpQ0YsSUFBSSxDQUFDRSxNQUFMLEVBQTNDLENBQVY7QUFDQUUsSUFBQUEsT0FBTyxHQUFHSixJQUFJLENBQUNDLElBQUwsQ0FBVU4sV0FBVyxDQUFDSCxNQUFaLEdBQXFCUSxJQUFJLENBQUNFLE1BQUwsRUFBckIsR0FBcUNGLElBQUksQ0FBQ0UsTUFBTCxFQUEvQyxDQUFWO0FBQ0FHLElBQUFBLElBQUksR0FBR1osTUFBTSxDQUFDYSxNQUFQLENBQWNQLE9BQWQsQ0FBUDtBQUNBTSxJQUFBQSxJQUFJLEdBQUlULFFBQVEsQ0FBQ0osTUFBVCxHQUFrQixDQUFsQixJQUF1QixDQUF4QixHQUE4QmEsSUFBSSxDQUFDRSxXQUFMLEVBQTlCLEdBQXFERixJQUE1RDtBQUNBUixJQUFBQSxTQUFTLElBQUlRLElBQWI7QUFDQVIsSUFBQUEsU0FBUyxJQUFJSCxPQUFPLENBQUNZLE1BQVIsQ0FBZUgsT0FBZixDQUFiO0FBQ0FOLElBQUFBLFNBQVMsSUFBSUYsV0FBVyxDQUFDVyxNQUFaLENBQW1CRixPQUFuQixDQUFiO0FBQ0FSLElBQUFBLFFBQVEsR0FBR0MsU0FBWDtBQUNIOztBQUNERCxFQUFBQSxRQUFRLEdBQUdBLFFBQVEsQ0FBQ1ksS0FBVCxDQUFlLEVBQWYsRUFBbUJDLElBQW5CLENBQXdCLFlBQVk7QUFBRSxXQUFPLE1BQU1ULElBQUksQ0FBQ0UsTUFBTCxFQUFiO0FBQTRCLEdBQWxFLEVBQW9FUSxJQUFwRSxDQUF5RSxFQUF6RSxDQUFYO0FBQ0EsU0FBT2QsUUFBUSxDQUFDZSxNQUFULENBQWdCLENBQWhCLEVBQW1CbkIsTUFBbkIsQ0FBUDtBQUNILENBckJEOztBQXVCQW9CLE9BQU8sQ0FBQ3RCLGtCQUFSLEdBQTZCQSxrQkFBN0IiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBtdWx0ZXIgPSByZXF1aXJlKCdtdWx0ZXInKTtcclxuY29uc3QgeyB2NDogdXVpZHY0IH0gPSByZXF1aXJlKCd1dWlkJyk7XHJcbmxldCBwYXRoID0gcmVxdWlyZSgncGF0aCcpO1xyXG5cclxuY29uc3QgcGFzc3dvcmRfZ2VuZXJhdG9yID0gKGxlbikgPT4ge1xyXG4gICAgdmFyIGxlbmd0aCA9IChsZW4pID8gKGxlbikgOiAoMTApO1xyXG4gICAgdmFyIHN0cmluZyA9IFwiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpcIjsgLy90byB1cHBlciBcclxuICAgIHZhciBudW1lcmljID0gJzAxMjM0NTY3ODknO1xyXG4gICAgdmFyIHB1bmN0dWF0aW9uID0gJyFAIyQlXiYqKClfK35gfH17W11cXDo7Pz48LC4vLT0nO1xyXG4gICAgdmFyIHBhc3N3b3JkID0gXCJcIjtcclxuICAgIHZhciBjaGFyYWN0ZXIgPSBcIlwiO1xyXG4gICAgdmFyIGNydW5jaCA9IHRydWU7XHJcbiAgICB3aGlsZSAocGFzc3dvcmQubGVuZ3RoIDwgbGVuZ3RoKSB7XHJcbiAgICAgICAgZW50aXR5MSA9IE1hdGguY2VpbChzdHJpbmcubGVuZ3RoICogTWF0aC5yYW5kb20oKSAqIE1hdGgucmFuZG9tKCkpO1xyXG4gICAgICAgIGVudGl0eTIgPSBNYXRoLmNlaWwobnVtZXJpYy5sZW5ndGggKiBNYXRoLnJhbmRvbSgpICogTWF0aC5yYW5kb20oKSk7XHJcbiAgICAgICAgZW50aXR5MyA9IE1hdGguY2VpbChwdW5jdHVhdGlvbi5sZW5ndGggKiBNYXRoLnJhbmRvbSgpICogTWF0aC5yYW5kb20oKSk7XHJcbiAgICAgICAgaG9sZCA9IHN0cmluZy5jaGFyQXQoZW50aXR5MSk7XHJcbiAgICAgICAgaG9sZCA9IChwYXNzd29yZC5sZW5ndGggJSAyID09IDApID8gKGhvbGQudG9VcHBlckNhc2UoKSkgOiAoaG9sZCk7XHJcbiAgICAgICAgY2hhcmFjdGVyICs9IGhvbGQ7XHJcbiAgICAgICAgY2hhcmFjdGVyICs9IG51bWVyaWMuY2hhckF0KGVudGl0eTIpO1xyXG4gICAgICAgIGNoYXJhY3RlciArPSBwdW5jdHVhdGlvbi5jaGFyQXQoZW50aXR5Myk7XHJcbiAgICAgICAgcGFzc3dvcmQgPSBjaGFyYWN0ZXI7XHJcbiAgICB9XHJcbiAgICBwYXNzd29yZCA9IHBhc3N3b3JkLnNwbGl0KCcnKS5zb3J0KGZ1bmN0aW9uICgpIHsgcmV0dXJuIDAuNSAtIE1hdGgucmFuZG9tKCkgfSkuam9pbignJyk7XHJcbiAgICByZXR1cm4gcGFzc3dvcmQuc3Vic3RyKDAsIGxlbmd0aCk7XHJcbn1cclxuXHJcbmV4cG9ydHMucGFzc3dvcmRfZ2VuZXJhdG9yID0gcGFzc3dvcmRfZ2VuZXJhdG9yOyJdfQ==\",\"originalCode\":\"const multer = require('multer');\\r\\nconst { v4: uuidv4 } = require('uuid');\\r\\nlet path = require('path');\\r\\n\\r\\nconst password_generator = (len) => {\\r\\n var length = (len) ? (len) : (10);\\r\\n var string = \\\"abcdefghijklmnopqrstuvwxyz\\\"; //to upper \\r\\n var numeric = '0123456789';\\r\\n var punctuation = '!@#$%^&*()_+~`|}{[]\\\\:;?><,./-=';\\r\\n var password = \\\"\\\";\\r\\n var character = \\\"\\\";\\r\\n var crunch = true;\\r\\n while (password.length < length) {\\r\\n entity1 = Math.ceil(string.length * Math.random() * Math.random());\\r\\n entity2 = Math.ceil(numeric.length * Math.random() * Math.random());\\r\\n entity3 = Math.ceil(punctuation.length * Math.random() * Math.random());\\r\\n hold = string.charAt(entity1);\\r\\n hold = (password.length % 2 == 0) ? (hold.toUpperCase()) : (hold);\\r\\n character += hold;\\r\\n character += numeric.charAt(entity2);\\r\\n character += punctuation.charAt(entity3);\\r\\n password = character;\\r\\n }\\r\\n password = password.split('').sort(function () { return 0.5 - Math.random() }).join('');\\r\\n return password.substr(0, length);\\r\\n}\\r\\n\\r\\nexports.password_generator = password_generator;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/12/utils_12501e91058955e05c348a4b2ab3e6a2.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2498\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\utils\\\\utils.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":5216,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":5213,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"password_generator\",\"ranges\":[{\"startOffset\":223,\"endOffset\":1107,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1008,\"endOffset\":1057,\"count\":24}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const express = require('express');\\n\\nconst bodyParser = require('body-parser');\\n\\nconst cors = require('./cors');\\n\\nconst {\\n checkSchema\\n} = require('express-validator');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nvar validationRules = require('../middleware/validation');\\n\\nconst placeController = require('../controllers/placeController');\\n\\nconst visitingPlaceRouter = express.Router();\\nvisitingPlaceRouter.use(bodyParser.json()); // **********************************************************************************\\n// Visiting Place Routes\\n// **********************************************************************************\\n\\nvisitingPlaceRouter.route('/').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, placeController.getAllVisitingPlaces).post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.addVisitingPlace).put(cors.corsWithOptions, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('PUT operation not supported on /visitingPlaces');\\n}).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.deleteAllVisitingPlaces);\\nvisitingPlaceRouter.route('/search').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).post(cors.corsWithOptions, authenticate.verifyUser, placeController.getAllVisitingPlacesByName); // **********************************************************************************\\n// \\n// Visiting Place Routes On ID\\n// \\n// **********************************************************************************\\n\\nvisitingPlaceRouter.route('/:visitingPlaceId').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, placeController.getVisitingPlaceDetailsById).post(cors.corsWithOptions, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('POST operation not supported on /visitingPlaces/' + req.params.visitingPlaceId);\\n}).put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.updateVisitingPlaceDetailsById).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.deleteAVisitingPlaceById);\\nmodule.exports = visitingPlaceRouter;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBsYWNlUm91dGVyLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwiYm9keVBhcnNlciIsImNvcnMiLCJjaGVja1NjaGVtYSIsImF1dGhlbnRpY2F0ZSIsInZhbGlkYXRpb25SdWxlcyIsInBsYWNlQ29udHJvbGxlciIsInZpc2l0aW5nUGxhY2VSb3V0ZXIiLCJSb3V0ZXIiLCJ1c2UiLCJqc29uIiwicm91dGUiLCJvcHRpb25zIiwiY29yc1dpdGhPcHRpb25zIiwicmVxIiwicmVzIiwic2VuZFN0YXR1cyIsImdldCIsInZlcmlmeVVzZXIiLCJnZXRBbGxWaXNpdGluZ1BsYWNlcyIsInBvc3QiLCJ2ZXJpZnlBZG1pbiIsImFkZFZpc2l0aW5nUGxhY2UiLCJwdXQiLCJuZXh0Iiwic3RhdHVzQ29kZSIsImVuZCIsImRlbGV0ZSIsImRlbGV0ZUFsbFZpc2l0aW5nUGxhY2VzIiwiZ2V0QWxsVmlzaXRpbmdQbGFjZXNCeU5hbWUiLCJnZXRWaXNpdGluZ1BsYWNlRGV0YWlsc0J5SWQiLCJwYXJhbXMiLCJ2aXNpdGluZ1BsYWNlSWQiLCJ1cGRhdGVWaXNpdGluZ1BsYWNlRGV0YWlsc0J5SWQiLCJkZWxldGVBVmlzaXRpbmdQbGFjZUJ5SWQiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxPQUFPLEdBQUdDLE9BQU8sQ0FBQyxTQUFELENBQXZCOztBQUNBLE1BQU1DLFVBQVUsR0FBR0QsT0FBTyxDQUFDLGFBQUQsQ0FBMUI7O0FBRUEsTUFBTUUsSUFBSSxHQUFHRixPQUFPLENBQUMsUUFBRCxDQUFwQjs7QUFDQSxNQUFNO0FBQUVHLEVBQUFBO0FBQUYsSUFBa0JILE9BQU8sQ0FBQyxtQkFBRCxDQUEvQjs7QUFDQSxJQUFJSSxZQUFZLEdBQUdKLE9BQU8sQ0FBQyw0QkFBRCxDQUExQjs7QUFDQSxJQUFJSyxlQUFlLEdBQUdMLE9BQU8sQ0FBQywwQkFBRCxDQUE3Qjs7QUFDQSxNQUFNTSxlQUFlLEdBQUdOLE9BQU8sQ0FBQyxnQ0FBRCxDQUEvQjs7QUFFQSxNQUFNTyxtQkFBbUIsR0FBR1IsT0FBTyxDQUFDUyxNQUFSLEVBQTVCO0FBRUFELG1CQUFtQixDQUFDRSxHQUFwQixDQUF3QlIsVUFBVSxDQUFDUyxJQUFYLEVBQXhCLEUsQ0FFQTtBQUVBO0FBRUE7O0FBRUFILG1CQUFtQixDQUFDSSxLQUFwQixDQUEwQixHQUExQixFQUNLQyxPQURMLENBQ2FWLElBQUksQ0FBQ1csZUFEbEIsRUFDbUMsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEtBQWM7QUFBRUEsRUFBQUEsR0FBRyxDQUFDQyxVQUFKLENBQWUsR0FBZjtBQUFzQixDQUR6RSxFQUVLQyxHQUZMLENBRVNmLElBQUksQ0FBQ0EsSUFGZCxFQUVvQkUsWUFBWSxDQUFDYyxVQUZqQyxFQUU2Q1osZUFBZSxDQUFDYSxvQkFGN0QsRUFHS0MsSUFITCxDQUdVbEIsSUFBSSxDQUFDVyxlQUhmLEVBR2dDVCxZQUFZLENBQUNjLFVBSDdDLEVBR3lEZCxZQUFZLENBQUNpQixXQUh0RSxFQUdtRmYsZUFBZSxDQUFDZ0IsZ0JBSG5HLEVBSUtDLEdBSkwsQ0FJU3JCLElBQUksQ0FBQ1csZUFKZCxFQUkrQixDQUFDQyxHQUFELEVBQU1DLEdBQU4sRUFBV1MsSUFBWCxLQUFvQjtBQUMzQ1QsRUFBQUEsR0FBRyxDQUFDVSxVQUFKLEdBQWlCLEdBQWpCO0FBQ0FWLEVBQUFBLEdBQUcsQ0FBQ1csR0FBSixDQUFRLGdEQUFSO0FBQ0gsQ0FQTCxFQVFLQyxNQVJMLENBUVl6QixJQUFJLENBQUNXLGVBUmpCLEVBUWtDVCxZQUFZLENBQUNjLFVBUi9DLEVBUTJEZCxZQUFZLENBQUNpQixXQVJ4RSxFQVFxRmYsZUFBZSxDQUFDc0IsdUJBUnJHO0FBU0FyQixtQkFBbUIsQ0FBQ0ksS0FBcEIsQ0FBMEIsU0FBMUIsRUFDS0MsT0FETCxDQUNhVixJQUFJLENBQUNXLGVBRGxCLEVBQ21DLENBQUNDLEdBQUQsRUFBTUMsR0FBTixLQUFjO0FBQUVBLEVBQUFBLEdBQUcsQ0FBQ0MsVUFBSixDQUFlLEdBQWY7QUFBc0IsQ0FEekUsRUFFS0ksSUFGTCxDQUVVbEIsSUFBSSxDQUFDVyxlQUZmLEVBRWdDVCxZQUFZLENBQUNjLFVBRjdDLEVBRXlEWixlQUFlLENBQUN1QiwwQkFGekUsRSxDQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUF0QixtQkFBbUIsQ0FBQ0ksS0FBcEIsQ0FBMEIsbUJBQTFCLEVBQ0tDLE9BREwsQ0FDYVYsSUFBSSxDQUFDVyxlQURsQixFQUNtQyxDQUFDQyxHQUFELEVBQU1DLEdBQU4sS0FBYztBQUFFQSxFQUFBQSxHQUFHLENBQUNDLFVBQUosQ0FBZSxHQUFmO0FBQXNCLENBRHpFLEVBRUtDLEdBRkwsQ0FFU2YsSUFBSSxDQUFDQSxJQUZkLEVBRW9CRSxZQUFZLENBQUNjLFVBRmpDLEVBRTZDWixlQUFlLENBQUN3QiwyQkFGN0QsRUFHS1YsSUFITCxDQUdVbEIsSUFBSSxDQUFDVyxlQUhmLEVBR2dDLENBQUNDLEdBQUQsRUFBTUMsR0FBTixFQUFXUyxJQUFYLEtBQW9CO0FBQzVDVCxFQUFBQSxHQUFHLENBQUNVLFVBQUosR0FBaUIsR0FBakI7QUFDQVYsRUFBQUEsR0FBRyxDQUFDVyxHQUFKLENBQVEscURBQXFEWixHQUFHLENBQUNpQixNQUFKLENBQVdDLGVBQXhFO0FBQ0gsQ0FOTCxFQU9LVCxHQVBMLENBT1NyQixJQUFJLENBQUNXLGVBUGQsRUFPK0JULFlBQVksQ0FBQ2MsVUFQNUMsRUFPd0RkLFlBQVksQ0FBQ2lCLFdBUHJFLEVBT2tGZixlQUFlLENBQUMyQiw4QkFQbEcsRUFRS04sTUFSTCxDQVFZekIsSUFBSSxDQUFDVyxlQVJqQixFQVFrQ1QsWUFBWSxDQUFDYyxVQVIvQyxFQVEyRGQsWUFBWSxDQUFDaUIsV0FSeEUsRUFRcUZmLGVBQWUsQ0FBQzRCLHdCQVJyRztBQVVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUI3QixtQkFBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBleHByZXNzID0gcmVxdWlyZSgnZXhwcmVzcycpO1xyXG5jb25zdCBib2R5UGFyc2VyID0gcmVxdWlyZSgnYm9keS1wYXJzZXInKTtcclxuXHJcbmNvbnN0IGNvcnMgPSByZXF1aXJlKCcuL2NvcnMnKTtcclxuY29uc3QgeyBjaGVja1NjaGVtYSB9ID0gcmVxdWlyZSgnZXhwcmVzcy12YWxpZGF0b3InKTtcclxudmFyIGF1dGhlbnRpY2F0ZSA9IHJlcXVpcmUoJy4uL21pZGRsZXdhcmUvYXV0aGVudGljYXRlJyk7XHJcbnZhciB2YWxpZGF0aW9uUnVsZXMgPSByZXF1aXJlKCcuLi9taWRkbGV3YXJlL3ZhbGlkYXRpb24nKTtcclxuY29uc3QgcGxhY2VDb250cm9sbGVyID0gcmVxdWlyZSgnLi4vY29udHJvbGxlcnMvcGxhY2VDb250cm9sbGVyJyk7XHJcblxyXG5jb25zdCB2aXNpdGluZ1BsYWNlUm91dGVyID0gZXhwcmVzcy5Sb3V0ZXIoKTtcclxuXHJcbnZpc2l0aW5nUGxhY2VSb3V0ZXIudXNlKGJvZHlQYXJzZXIuanNvbigpKTtcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbi8vICAgICAgICAgICAgICBWaXNpdGluZyBQbGFjZSBSb3V0ZXNcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbnZpc2l0aW5nUGxhY2VSb3V0ZXIucm91dGUoJy8nKVxyXG4gICAgLm9wdGlvbnMoY29ycy5jb3JzV2l0aE9wdGlvbnMsIChyZXEsIHJlcykgPT4geyByZXMuc2VuZFN0YXR1cygyMDApOyB9KVxyXG4gICAgLmdldChjb3JzLmNvcnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCBwbGFjZUNvbnRyb2xsZXIuZ2V0QWxsVmlzaXRpbmdQbGFjZXMpXHJcbiAgICAucG9zdChjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgcGxhY2VDb250cm9sbGVyLmFkZFZpc2l0aW5nUGxhY2UpXHJcbiAgICAucHV0KGNvcnMuY29yc1dpdGhPcHRpb25zLCAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwMztcclxuICAgICAgICByZXMuZW5kKCdQVVQgb3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQgb24gL3Zpc2l0aW5nUGxhY2VzJyk7XHJcbiAgICB9KVxyXG4gICAgLmRlbGV0ZShjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgcGxhY2VDb250cm9sbGVyLmRlbGV0ZUFsbFZpc2l0aW5nUGxhY2VzKTtcclxudmlzaXRpbmdQbGFjZVJvdXRlci5yb3V0ZSgnL3NlYXJjaCcpXHJcbiAgICAub3B0aW9ucyhjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcbiAgICAucG9zdChjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIHBsYWNlQ29udHJvbGxlci5nZXRBbGxWaXNpdGluZ1BsYWNlc0J5TmFtZSk7XHJcblxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbi8vIFxyXG4vLyAgICAgICAgICAgICAgVmlzaXRpbmcgUGxhY2UgUm91dGVzIE9uIElEXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG52aXNpdGluZ1BsYWNlUm91dGVyLnJvdXRlKCcvOnZpc2l0aW5nUGxhY2VJZCcpXHJcbiAgICAub3B0aW9ucyhjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcbiAgICAuZ2V0KGNvcnMuY29ycywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIHBsYWNlQ29udHJvbGxlci5nZXRWaXNpdGluZ1BsYWNlRGV0YWlsc0J5SWQpXHJcbiAgICAucG9zdChjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgcmVzLmVuZCgnUE9TVCBvcGVyYXRpb24gbm90IHN1cHBvcnRlZCBvbiAvdmlzaXRpbmdQbGFjZXMvJyArIHJlcS5wYXJhbXMudmlzaXRpbmdQbGFjZUlkKTtcclxuICAgIH0pXHJcbiAgICAucHV0KGNvcnMuY29yc1dpdGhPcHRpb25zLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeUFkbWluLCBwbGFjZUNvbnRyb2xsZXIudXBkYXRlVmlzaXRpbmdQbGFjZURldGFpbHNCeUlkKVxyXG4gICAgLmRlbGV0ZShjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgcGxhY2VDb250cm9sbGVyLmRlbGV0ZUFWaXNpdGluZ1BsYWNlQnlJZCk7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IHZpc2l0aW5nUGxhY2VSb3V0ZXI7XHJcbiJdfQ==\",\"originalCode\":\"const express = require('express');\\r\\nconst bodyParser = require('body-parser');\\r\\n\\r\\nconst cors = require('./cors');\\r\\nconst { checkSchema } = require('express-validator');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\nvar validationRules = require('../middleware/validation');\\r\\nconst placeController = require('../controllers/placeController');\\r\\n\\r\\nconst visitingPlaceRouter = express.Router();\\r\\n\\r\\nvisitingPlaceRouter.use(bodyParser.json());\\r\\n\\r\\n// **********************************************************************************\\r\\n\\r\\n// Visiting Place Routes\\r\\n\\r\\n// **********************************************************************************\\r\\n\\r\\nvisitingPlaceRouter.route('/')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, placeController.getAllVisitingPlaces)\\r\\n .post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.addVisitingPlace)\\r\\n .put(cors.corsWithOptions, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('PUT operation not supported on /visitingPlaces');\\r\\n })\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.deleteAllVisitingPlaces);\\r\\nvisitingPlaceRouter.route('/search')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .post(cors.corsWithOptions, authenticate.verifyUser, placeController.getAllVisitingPlacesByName);\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Visiting Place Routes On ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nvisitingPlaceRouter.route('/:visitingPlaceId')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, placeController.getVisitingPlaceDetailsById)\\r\\n .post(cors.corsWithOptions, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('POST operation not supported on /visitingPlaces/' + req.params.visitingPlaceId);\\r\\n })\\r\\n .put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.updateVisitingPlaceDetailsById)\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.deleteAVisitingPlaceById);\\r\\n\\r\\nmodule.exports = visitingPlaceRouter;\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/9d/placeRouter_9d9aca2c41f2c1b6283bdacdd67537b2.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2539\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\placeRouter.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":9353,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":9350,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":809,\"endOffset\":849,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1067,\"endOffset\":1175,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1366,\"endOffset\":1406,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1807,\"endOffset\":1847,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1961,\"endOffset\":2100,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const VisitingPlaces = require('../models/visitingPlaces'); // **********************************************************************************\\n// \\n// Visiting Place Operations \\n// \\n// **********************************************************************************\\n\\n\\nconst getAllVisitingPlaces = (req, res, next) => {\\n var query = {};\\n VisitingPlaces.find(query, 'name description distance location timeToReach image travellingMethods').then(visitingPlaces => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n visitingPlaces: visitingPlaces\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst getAllVisitingPlacesByName = (req, res, next) => {\\n var query = {};\\n\\n if (req.body.similarTo) {\\n query = {\\n name: {\\n $regex: `${req.body.similarTo}`,\\n $options: \\\"i\\\"\\n }\\n };\\n }\\n\\n VisitingPlaces.find(query, 'name description distance location timeToReach image travellingMethods').then(visitingPlaces => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n visitingPlaces: visitingPlaces\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst addVisitingPlace = (req, res, next) => {\\n var imagesArray = []; // files = req.files;\\n // files.forEach(file => {\\n // imagesArray.push(file.filename);\\n // });\\n\\n var place = {\\n name: req.body.name,\\n description: req.body.description,\\n location: {\\n coordinates: req.body.location.coordinates\\n },\\n distance: req.body.distance,\\n timeToReach: req.body.timeToReach,\\n images: imagesArray,\\n travellingMethods: req.body.methods\\n };\\n VisitingPlaces.create(place).then(visitingPlace => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n visitingPlace: visitingPlace\\n });\\n }, err => {\\n res.statusCode = 403;\\n res.setHeader('Content-Type', 'application/json');\\n const msg = err.driver ? \\\"Duplicate Key\\\" : err._message;\\n res.json({\\n success: false,\\n message: msg\\n });\\n }).catch(err => next(err));\\n};\\n\\nconst deleteAllVisitingPlaces = (req, res, next) => {\\n VisitingPlaces.remove({}).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json(resp);\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nexports.getAllVisitingPlaces = getAllVisitingPlaces;\\nexports.getAllVisitingPlacesByName = getAllVisitingPlacesByName;\\nexports.addVisitingPlace = addVisitingPlace;\\nexports.deleteAllVisitingPlaces = deleteAllVisitingPlaces; // **********************************************************************************\\n// \\n// Visiting Place Operations Specified by ID\\n// \\n// **********************************************************************************\\n\\nconst getVisitingPlaceDetailsById = (req, res, next) => {\\n VisitingPlaces.findById(req.params.visitingPlaceId).then(visitingPlace => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n visitingPlace: visitingPlace\\n });\\n }, err => {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: \\\"Could not find the place\\\"\\n });\\n }).catch(err => next(err));\\n};\\n\\nconst updateVisitingPlaceDetailsById = (req, res, next) => {\\n VisitingPlaces.findByIdAndUpdate(req.params.visitingPlaceId, {\\n $set: req.body\\n }, {\\n new: true\\n }).then(visitingPlace => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n visitingPlace: visitingPlace\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst deleteAVisitingPlaceById = (req, res, next) => {\\n VisitingPlaces.findByIdAndRemove(req.params.visitingPlaceId).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n response: resp\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nexports.getVisitingPlaceDetailsById = getVisitingPlaceDetailsById;\\nexports.updateVisitingPlaceDetailsById = updateVisitingPlaceDetailsById;\\nexports.deleteAVisitingPlaceById = deleteAVisitingPlaceById;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBsYWNlQ29udHJvbGxlci5qcyJdLCJuYW1lcyI6WyJWaXNpdGluZ1BsYWNlcyIsInJlcXVpcmUiLCJnZXRBbGxWaXNpdGluZ1BsYWNlcyIsInJlcSIsInJlcyIsIm5leHQiLCJxdWVyeSIsImZpbmQiLCJ0aGVuIiwidmlzaXRpbmdQbGFjZXMiLCJzdGF0dXNDb2RlIiwic2V0SGVhZGVyIiwianNvbiIsInN1Y2Nlc3MiLCJlcnIiLCJjYXRjaCIsImdldEFsbFZpc2l0aW5nUGxhY2VzQnlOYW1lIiwiYm9keSIsInNpbWlsYXJUbyIsIm5hbWUiLCIkcmVnZXgiLCIkb3B0aW9ucyIsImFkZFZpc2l0aW5nUGxhY2UiLCJpbWFnZXNBcnJheSIsInBsYWNlIiwiZGVzY3JpcHRpb24iLCJsb2NhdGlvbiIsImNvb3JkaW5hdGVzIiwiZGlzdGFuY2UiLCJ0aW1lVG9SZWFjaCIsImltYWdlcyIsInRyYXZlbGxpbmdNZXRob2RzIiwibWV0aG9kcyIsImNyZWF0ZSIsInZpc2l0aW5nUGxhY2UiLCJtc2ciLCJkcml2ZXIiLCJfbWVzc2FnZSIsIm1lc3NhZ2UiLCJkZWxldGVBbGxWaXNpdGluZ1BsYWNlcyIsInJlbW92ZSIsInJlc3AiLCJleHBvcnRzIiwiZ2V0VmlzaXRpbmdQbGFjZURldGFpbHNCeUlkIiwiZmluZEJ5SWQiLCJwYXJhbXMiLCJ2aXNpdGluZ1BsYWNlSWQiLCJ1cGRhdGVWaXNpdGluZ1BsYWNlRGV0YWlsc0J5SWQiLCJmaW5kQnlJZEFuZFVwZGF0ZSIsIiRzZXQiLCJuZXciLCJkZWxldGVBVmlzaXRpbmdQbGFjZUJ5SWQiLCJmaW5kQnlJZEFuZFJlbW92ZSIsInJlc3BvbnNlIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxjQUFjLEdBQUdDLE9BQU8sQ0FBQywwQkFBRCxDQUE5QixDLENBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUEsTUFBTUMsb0JBQW9CLEdBQUcsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDN0MsTUFB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QztBQUNBTCxPQUFPLENBQUNTLHdCQUFSLEdBQW1DQSx3QkFBbkMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBWaXNpdGluZ1BsYWNlcyA9IHJlcXVpcmUoJy4uL21vZGVscy92aXNpdGluZ1BsYWNlcycpO1xyXG5cclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyBcclxuLy8gICAgICAgICAgICAgIFZpc2l0aW5nIFBsYWNlIE9wZXJhdGlvbnMgXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG5jb25zdCBnZXRBbGxWaXNpdGluZ1BsYWNlcyA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgdmFyIHF1ZXJ5ID0ge307XHJcbiAgICBWaXNpdGluZ1BsYWNlcy5maW5kKHF1ZXJ5LCAnbmFtZSBkZXNjcmlwdGlvbiBkaXN0YW5jZSBsb2NhdGlvbiB0aW1lVG9SZWFjaCBpbWFnZSB0cmF2ZWxsaW5nTWV0aG9kcycpXHJcbiAgICAgICAgLnRoZW4oKHZpc2l0aW5nUGxhY2VzKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHZpc2l0aW5nUGxhY2VzOiB2aXNpdGluZ1BsYWNlcyB9KTtcclxuICAgICAgICB9LCAoZXJyKSA9PiBuZXh0KGVycikpXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IG5leHQoZXJyKSk7XHJcbn1cclxuXHJcbmNvbnN0IGdldEFsbFZpc2l0aW5nUGxhY2VzQnlOYW1lID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICB2YXIgcXVlcnkgPSB7fTtcclxuICAgIGlmIChyZXEuYm9keS5zaW1pbGFyVG8pIHtcclxuICAgICAgICBxdWVyeSA9IHsgbmFtZTogeyAkcmVnZXg6IGAke3JlcS5ib2R5LnNpbWlsYXJUb31gLCAkb3B0aW9uczogXCJpXCIgfSB9XHJcbiAgICB9XHJcbiAgICBWaXNpdGluZ1BsYWNlcy5maW5kKHF1ZXJ5LCAnbmFtZSBkZXNjcmlwdGlvbiBkaXN0YW5jZSBsb2NhdGlvbiB0aW1lVG9SZWFjaCBpbWFnZSB0cmF2ZWxsaW5nTWV0aG9kcycpXHJcbiAgICAgICAgLnRoZW4oKHZpc2l0aW5nUGxhY2VzKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHZpc2l0aW5nUGxhY2VzOiB2aXNpdGluZ1BsYWNlcyB9KTtcclxuICAgICAgICB9LCAoZXJyKSA9PiBuZXh0KGVycikpXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IG5leHQoZXJyKSk7XHJcbn1cclxuXHJcbmNvbnN0IGFkZFZpc2l0aW5nUGxhY2UgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHZhciBpbWFnZXNBcnJheSA9IFtdO1xyXG4gICAgLy8gZmlsZXMgPSByZXEuZmlsZXM7XHJcbiAgICAvLyBmaWxlcy5mb3JFYWNoKGZpbGUgPT4ge1xyXG4gICAgLy8gICAgIGltYWdlc0FycmF5LnB1c2goZmlsZS5maWxlbmFtZSk7XHJcbiAgICAvLyB9KTtcclxuICAgIHZhciBwbGFjZSA9XHJcbiAgICB7XHJcbiAgICAgICAgbmFtZTogcmVxLmJvZHkubmFtZSxcclxuICAgICAgICBkZXNjcmlwdGlvbjogcmVxLmJvZHkuZGVzY3JpcHRpb24sXHJcbiAgICAgICAgbG9jYXRpb246IHtcclxuICAgICAgICAgICAgY29vcmRpbmF0ZXM6IHJlcS5ib2R5LmxvY2F0aW9uLmNvb3JkaW5hdGVzXHJcbiAgICAgICAgfSxcclxuICAgICAgICBkaXN0YW5jZTogcmVxLmJvZHkuZGlzdGFuY2UsXHJcbiAgICAgICAgdGltZVRvUmVhY2g6IHJlcS5ib2R5LnRpbWVUb1JlYWNoLFxyXG4gICAgICAgIGltYWdlczogaW1hZ2VzQXJyYXksXHJcbiAgICAgICAgdHJhdmVsbGluZ01ldGhvZHM6IHJlcS5ib2R5Lm1ldGhvZHNcclxuICAgIH1cclxuICAgIFZpc2l0aW5nUGxhY2VzLmNyZWF0ZShwbGFjZSlcclxuICAgICAgICAudGhlbigodmlzaXRpbmdQbGFjZSkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCB2aXNpdGluZ1BsYWNlOiB2aXNpdGluZ1BsYWNlIH0pO1xyXG4gICAgICAgIH0sIChlcnIpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIGNvbnN0IG1zZyA9IGVyci5kcml2ZXIgPyBcIkR1cGxpY2F0ZSBLZXlcIiA6IGVyci5fbWVzc2FnZTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogbXNnIH0pO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IG5leHQoZXJyKSk7XHJcbn1cclxuXHJcbmNvbnN0IGRlbGV0ZUFsbFZpc2l0aW5nUGxhY2VzID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICBWaXNpdGluZ1BsYWNlcy5yZW1vdmUoe30pXHJcbiAgICAgICAgLnRoZW4oKHJlc3ApID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHJlc3ApO1xyXG4gICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuZXhwb3J0cy5nZXRBbGxWaXNpdGluZ1BsYWNlcyA9IGdldEFsbFZpc2l0aW5nUGxhY2VzO1xyXG5leHBvcnRzLmdldEFsbFZpc2l0aW5nUGxhY2VzQnlOYW1lID0gZ2V0QWxsVmlzaXRpbmdQbGFjZXNCeU5hbWU7XHJcbmV4cG9ydHMuYWRkVmlzaXRpbmdQbGFjZSA9IGFkZFZpc2l0aW5nUGxhY2U7XHJcbmV4cG9ydHMuZGVsZXRlQWxsVmlzaXRpbmdQbGFjZXMgPSBkZWxldGVBbGxWaXNpdGluZ1BsYWNlcztcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuLy8gXHJcbi8vICAgICAgICAgICAgICBWaXNpdGluZyBQbGFjZSBPcGVyYXRpb25zIFNwZWNpZmllZCBieSBJRFxyXG4vLyBcclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuY29uc3QgZ2V0VmlzaXRpbmdQbGFjZURldGFpbHNCeUlkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICBWaXNpdGluZ1BsYWNlcy5maW5kQnlJZChyZXEucGFyYW1zLnZpc2l0aW5nUGxhY2VJZClcclxuICAgICAgICAudGhlbigodmlzaXRpbmdQbGFjZSkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCB2aXNpdGluZ1BsYWNlOiB2aXNpdGluZ1BsYWNlIH0pO1xyXG4gICAgICAgIH0sIChlcnIpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDQ7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogZmFsc2UsIG1lc3NhZ2U6IFwiQ291bGQgbm90IGZpbmQgdGhlIHBsYWNlXCIgfSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuY29uc3QgdXBkYXRlVmlzaXRpbmdQbGFjZURldGFpbHNCeUlkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICBWaXNpdGluZ1BsYWNlcy5maW5kQnlJZEFuZFVwZGF0ZShyZXEucGFyYW1zLnZpc2l0aW5nUGxhY2VJZCwge1xyXG4gICAgICAgICRzZXQ6IHJlcS5ib2R5XHJcbiAgICB9LCB7IG5ldzogdHJ1ZSB9KVxyXG4gICAgICAgIC50aGVuKCh2aXNpdGluZ1BsYWNlKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHZpc2l0aW5nUGxhY2U6IHZpc2l0aW5nUGxhY2UgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpO1xyXG59XHJcblxyXG5jb25zdCBkZWxldGVBVmlzaXRpbmdQbGFjZUJ5SWQgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIFZpc2l0aW5nUGxhY2VzLmZpbmRCeUlkQW5kUmVtb3ZlKHJlcS5wYXJhbXMudmlzaXRpbmdQbGFjZUlkKVxyXG4gICAgICAgIC50aGVuKChyZXNwKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHJlc3BvbnNlOiByZXNwIH0pO1xyXG4gICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuZXhwb3J0cy5nZXRWaXNpdGluZ1BsYWNlRGV0YWlsc0J5SWQgPSBnZXRWaXNpdGluZ1BsYWNlRGV0YWlsc0J5SWQ7XHJcbmV4cG9ydHMudXBkYXRlVmlzaXRpbmdQbGFjZURldGFpbHNCeUlkID0gdXBkYXRlVmlzaXRpbmdQbGFjZURldGFpbHNCeUlkO1xyXG5leHBvcnRzLmRlbGV0ZUFWaXNpdGluZ1BsYWNlQnlJZCA9IGRlbGV0ZUFWaXNpdGluZ1BsYWNlQnlJZDsiXX0=\",\"originalCode\":\"const VisitingPlaces = require('../models/visitingPlaces');\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Visiting Place Operations \\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nconst getAllVisitingPlaces = (req, res, next) => {\\r\\n var query = {};\\r\\n VisitingPlaces.find(query, 'name description distance location timeToReach image travellingMethods')\\r\\n .then((visitingPlaces) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, visitingPlaces: visitingPlaces });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst getAllVisitingPlacesByName = (req, res, next) => {\\r\\n var query = {};\\r\\n if (req.body.similarTo) {\\r\\n query = { name: { $regex: `${req.body.similarTo}`, $options: \\\"i\\\" } }\\r\\n }\\r\\n VisitingPlaces.find(query, 'name description distance location timeToReach image travellingMethods')\\r\\n .then((visitingPlaces) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, visitingPlaces: visitingPlaces });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst addVisitingPlace = (req, res, next) => {\\r\\n var imagesArray = [];\\r\\n // files = req.files;\\r\\n // files.forEach(file => {\\r\\n // imagesArray.push(file.filename);\\r\\n // });\\r\\n var place =\\r\\n {\\r\\n name: req.body.name,\\r\\n description: req.body.description,\\r\\n location: {\\r\\n coordinates: req.body.location.coordinates\\r\\n },\\r\\n distance: req.body.distance,\\r\\n timeToReach: req.body.timeToReach,\\r\\n images: imagesArray,\\r\\n travellingMethods: req.body.methods\\r\\n }\\r\\n VisitingPlaces.create(place)\\r\\n .then((visitingPlace) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, visitingPlace: visitingPlace });\\r\\n }, (err) => {\\r\\n res.statusCode = 403;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n const msg = err.driver ? \\\"Duplicate Key\\\" : err._message;\\r\\n res.json({ success: false, message: msg });\\r\\n })\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst deleteAllVisitingPlaces = (req, res, next) => {\\r\\n VisitingPlaces.remove({})\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json(resp);\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nexports.getAllVisitingPlaces = getAllVisitingPlaces;\\r\\nexports.getAllVisitingPlacesByName = getAllVisitingPlacesByName;\\r\\nexports.addVisitingPlace = addVisitingPlace;\\r\\nexports.deleteAllVisitingPlaces = deleteAllVisitingPlaces;\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Visiting Place Operations Specified by ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nconst getVisitingPlaceDetailsById = (req, res, next) => {\\r\\n VisitingPlaces.findById(req.params.visitingPlaceId)\\r\\n .then((visitingPlace) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, visitingPlace: visitingPlace });\\r\\n }, (err) => {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: \\\"Could not find the place\\\" });\\r\\n })\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst updateVisitingPlaceDetailsById = (req, res, next) => {\\r\\n VisitingPlaces.findByIdAndUpdate(req.params.visitingPlaceId, {\\r\\n $set: req.body\\r\\n }, { new: true })\\r\\n .then((visitingPlace) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, visitingPlace: visitingPlace });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst deleteAVisitingPlaceById = (req, res, next) => {\\r\\n VisitingPlaces.findByIdAndRemove(req.params.visitingPlaceId)\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, response: resp });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nexports.getVisitingPlaceDetailsById = getVisitingPlaceDetailsById;\\r\\nexports.updateVisitingPlaceDetailsById = updateVisitingPlaceDetailsById;\\r\\nexports.deleteAVisitingPlaceById = deleteAVisitingPlaceById;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/ee/placeController_ee3a20e34d4d356553af723b6f7f6a6e.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2540\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\placeController.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":18578,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":18575,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"getAllVisitingPlaces\",\"ranges\":[{\"startOffset\":403,\"endOffset\":782,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getAllVisitingPlacesByName\",\"ranges\":[{\"startOffset\":820,\"endOffset\":1339,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"addVisitingPlace\",\"ranges\":[{\"startOffset\":1367,\"endOffset\":2276,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"deleteAllVisitingPlaces\",\"ranges\":[{\"startOffset\":2311,\"endOffset\":2526,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getVisitingPlaceDetailsById\",\"ranges\":[{\"startOffset\":3026,\"endOffset\":3499,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"updateVisitingPlaceDetailsById\",\"ranges\":[{\"startOffset\":3541,\"endOffset\":3906,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"deleteAVisitingPlaceById\",\"ranges\":[{\"startOffset\":3942,\"endOffset\":4237,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const express = require('express');\\n\\nconst bodyParser = require('body-parser');\\n\\nconst cors = require('./cors');\\n\\nconst {\\n checkSchema\\n} = require('express-validator');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nvar validationRules = require('../middleware/validation');\\n\\nconst scheduleController = require('../controllers/scheduleController');\\n\\nconst scheduleRouter = express.Router();\\nscheduleRouter.use(bodyParser.json()); // **********************************************************************************\\n// \\n// Schedule Routes\\n// \\n// **********************************************************************************\\n\\nscheduleRouter.route('/').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, scheduleController.getAllSchedules).post(cors.corsWithOptions, authenticate.verifyUser, scheduleController.addSchedule).put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('PUT operation not supported on /schedules');\\n}).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, scheduleController.deleteAllSchedules); // **********************************************************************************\\n// \\n// Schedule Routes On ID\\n// \\n// **********************************************************************************\\n\\nscheduleRouter.route('/:scheduleId').options(cors.corsWithOptions, authenticate.verifyUser, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, scheduleController.getScheduleDetailsById).post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('POST operation not supported on /schedules/' + req.params.scheduleId);\\n}).put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, scheduleController.updateScheduleById).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, scheduleController.deleteScheduleById);\\nscheduleRouter.route('/user/:userId').options(cors.corsWithOptions, authenticate.verifyUser, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, scheduleController.getAllSchedulesForAUser);\\nmodule.exports = scheduleRouter;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNjaGVkdWxlUm91dGVyLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwiYm9keVBhcnNlciIsImNvcnMiLCJjaGVja1NjaGVtYSIsImF1dGhlbnRpY2F0ZSIsInZhbGlkYXRpb25SdWxlcyIsInNjaGVkdWxlQ29udHJvbGxlciIsInNjaGVkdWxlUm91dGVyIiwiUm91dGVyIiwidXNlIiwianNvbiIsInJvdXRlIiwib3B0aW9ucyIsImNvcnNXaXRoT3B0aW9ucyIsInJlcSIsInJlcyIsInNlbmRTdGF0dXMiLCJnZXQiLCJ2ZXJpZnlVc2VyIiwiZ2V0QWxsU2NoZWR1bGVzIiwicG9zdCIsImFkZFNjaGVkdWxlIiwicHV0IiwidmVyaWZ5TW9kZXJhdGVyIiwibmV4dCIsInN0YXR1c0NvZGUiLCJlbmQiLCJkZWxldGUiLCJ2ZXJpZnlBZG1pbiIsImRlbGV0ZUFsbFNjaGVkdWxlcyIsImdldFNjaGVkdWxlRGV0YWlsc0J5SWQiLCJwYXJhbXMiLCJzY2hlZHVsZUlkIiwidXBkYXRlU2NoZWR1bGVCeUlkIiwiZGVsZXRlU2NoZWR1bGVCeUlkIiwiZ2V0QWxsU2NoZWR1bGVzRm9yQVVzZXIiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxPQUFPLEdBQUdDLE9BQU8sQ0FBQyxTQUFELENBQXZCOztBQUNBLE1BQU1DLFVBQVUsR0FBR0QsT0FBTyxDQUFDLGFBQUQsQ0FBMUI7O0FBRUEsTUFBTUUsSUFBSSxHQUFHRixPQUFPLENBQUMsUUFBRCxDQUFwQjs7QUFDQSxNQUFNO0FBQUVHLEVBQUFBO0FBQUYsSUFBa0JILE9BQU8sQ0FBQyxtQkFBRCxDQUEvQjs7QUFDQSxJQUFJSSxZQUFZLEdBQUdKLE9BQU8sQ0FBQyw0QkFBRCxDQUExQjs7QUFDQSxJQUFJSyxlQUFlLEdBQUdMLE9BQU8sQ0FBQywwQkFBRCxDQUE3Qjs7QUFDQSxNQUFNTSxrQkFBa0IsR0FBR04sT0FBTyxDQUFDLG1DQUFELENBQWxDOztBQUVBLE1BQU1PLGNB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T0FBUCxHQUFpQjlCLGNBQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZXhwcmVzcyA9IHJlcXVpcmUoJ2V4cHJlc3MnKTtcclxuY29uc3QgYm9keVBhcnNlciA9IHJlcXVpcmUoJ2JvZHktcGFyc2VyJyk7XHJcblxyXG5jb25zdCBjb3JzID0gcmVxdWlyZSgnLi9jb3JzJyk7XHJcbmNvbnN0IHsgY2hlY2tTY2hlbWEgfSA9IHJlcXVpcmUoJ2V4cHJlc3MtdmFsaWRhdG9yJyk7XHJcbnZhciBhdXRoZW50aWNhdGUgPSByZXF1aXJlKCcuLi9taWRkbGV3YXJlL2F1dGhlbnRpY2F0ZScpO1xyXG52YXIgdmFsaWRhdGlvblJ1bGVzID0gcmVxdWlyZSgnLi4vbWlkZGxld2FyZS92YWxpZGF0aW9uJyk7XHJcbmNvbnN0IHNjaGVkdWxlQ29udHJvbGxlciA9IHJlcXVpcmUoJy4uL2NvbnRyb2xsZXJzL3NjaGVkdWxlQ29udHJvbGxlcicpXHJcblxyXG5jb25zdCBzY2hlZHVsZVJvdXRlciA9IGV4cHJlc3MuUm91dGVyKCk7XHJcblxyXG5zY2hlZHVsZVJvdXRlci51c2UoYm9keVBhcnNlci5qc29uKCkpO1xyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbi8vIFxyXG4vLyAgICAgICAgICAgICAgU2NoZWR1bGUgUm91dGVzXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG5zY2hlZHVsZVJvdXRlci5yb3V0ZSgnLycpXHJcbiAgICAub3B0aW9ucyhjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcbiAgICAuZ2V0KGNvcnMuY29ycywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsICBzY2hlZHVsZUNvbnRyb2xsZXIuZ2V0QWxsU2NoZWR1bGVzKVxyXG4gICAgLnBvc3QoY29ycy5jb3JzV2l0aE9wdGlvbnMsYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsICBzY2hlZHVsZUNvbnRyb2xsZXIuYWRkU2NoZWR1bGUpXHJcbiAgICAucHV0KGNvcnMuY29yc1dpdGhPcHRpb25zLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeU1vZGVyYXRlciwgKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgcmVzLmVuZCgnUFVUIG9wZXJhdGlvbiBub3Qgc3VwcG9ydGVkIG9uIC9zY2hlZHVsZXMnKTtcclxuICAgIH0pXHJcbiAgICAuZGVsZXRlKGNvcnMuY29yc1dpdGhPcHRpb25zLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeUFkbWluLCBzY2hlZHVsZUNvbnRyb2xsZXIuZGVsZXRlQWxsU2NoZWR1bGVzKTtcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuLy8gXHJcbi8vICAgICAgICAgICAgICBTY2hlZHVsZSBSb3V0ZXMgT24gSURcclxuLy8gXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbnNjaGVkdWxlUm91dGVyLnJvdXRlKCcvOnNjaGVkdWxlSWQnKVxyXG4gICAgLm9wdGlvbnMoY29ycy5jb3JzV2l0aE9wdGlvbnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCAocmVxLCByZXMpID0+IHsgcmVzLnNlbmRTdGF0dXMoMjAwKTsgfSlcclxuICAgIC5nZXQoY29ycy5jb3JzLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgc2NoZWR1bGVDb250cm9sbGVyLmdldFNjaGVkdWxlRGV0YWlsc0J5SWQpXHJcbiAgICAucG9zdChjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgcmVzLmVuZCgnUE9TVCBvcGVyYXRpb24gbm90IHN1cHBvcnRlZCBvbiAvc2NoZWR1bGVzLycgKyByZXEucGFyYW1zLnNjaGVkdWxlSWQpO1xyXG4gICAgfSlcclxuICAgIC5wdXQoY29ycy5jb3JzV2l0aE9wdGlvbnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCBhdXRoZW50aWNhdGUudmVyaWZ5TW9kZXJhdGVyLCBzY2hlZHVsZUNvbnRyb2xsZXIudXBkYXRlU2NoZWR1bGVCeUlkKVxyXG4gICAgLmRlbGV0ZShjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgc2NoZWR1bGVDb250cm9sbGVyLmRlbGV0ZVNjaGVkdWxlQnlJZCk7XHJcblxyXG5zY2hlZHVsZVJvdXRlci5yb3V0ZSgnL3VzZXIvOnVzZXJJZCcpXHJcbiAgICAub3B0aW9ucyhjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIChyZXEsIHJlcykgPT4geyByZXMuc2VuZFN0YXR1cygyMDApOyB9KVxyXG4gICAgLmdldChjb3JzLmNvcnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCAgc2NoZWR1bGVDb250cm9sbGVyLmdldEFsbFNjaGVkdWxlc0ZvckFVc2VyKTtcclxuXHJcbm1vZHVsZS5leHBvcnRzID0gc2NoZWR1bGVSb3V0ZXI7Il19\",\"originalCode\":\"const express = require('express');\\r\\nconst bodyParser = require('body-parser');\\r\\n\\r\\nconst cors = require('./cors');\\r\\nconst { checkSchema } = require('express-validator');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\nvar validationRules = require('../middleware/validation');\\r\\nconst scheduleController = require('../controllers/scheduleController')\\r\\n\\r\\nconst scheduleRouter = express.Router();\\r\\n\\r\\nscheduleRouter.use(bodyParser.json());\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Schedule Routes\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nscheduleRouter.route('/')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, scheduleController.getAllSchedules)\\r\\n .post(cors.corsWithOptions,authenticate.verifyUser, scheduleController.addSchedule)\\r\\n .put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('PUT operation not supported on /schedules');\\r\\n })\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, scheduleController.deleteAllSchedules);\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Schedule Routes On ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nscheduleRouter.route('/:scheduleId')\\r\\n .options(cors.corsWithOptions, authenticate.verifyUser, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, scheduleController.getScheduleDetailsById)\\r\\n .post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('POST operation not supported on /schedules/' + req.params.scheduleId);\\r\\n })\\r\\n .put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, scheduleController.updateScheduleById)\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, scheduleController.deleteScheduleById);\\r\\n\\r\\nscheduleRouter.route('/user/:userId')\\r\\n .options(cors.corsWithOptions, authenticate.verifyUser, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, scheduleController.getAllSchedulesForAUser);\\r\\n\\r\\nmodule.exports = scheduleRouter;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/9b/scheduleRouter_9b57edc7078385d142c957dea9d9e0be.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2541\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\scheduleRouter.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":9621,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":9618,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":802,\"endOffset\":842,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1085,\"endOffset\":1188,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1621,\"endOffset\":1661,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1824,\"endOffset\":1953,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":2288,\"endOffset\":2328,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const Schedules = require('../models/schedules'); // **********************************************************************************\\n// \\n// Schedule Operations \\n// \\n// **********************************************************************************\\n\\n\\nconst getAllSchedules = (req, res, next) => {\\n Schedules.find(req.query).populate(\\\"place\\\").populate(\\\"user\\\").then(schedules => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n schedules: schedules\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst getAllSchedulesForAUser = (req, res, next) => {\\n var query = {\\n \\\"user\\\": String(req.params.userId)\\n };\\n Schedules.find(query).populate(\\\"place\\\").then(schedules => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n schedules: schedules\\n });\\n }, err => {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n const msg = err._message;\\n res.json({\\n success: false,\\n message: msg\\n });\\n }).catch(err => {\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: \\\"Failed to get data\\\"\\n });\\n });\\n};\\n\\nconst addSchedule = (req, res, next) => {\\n var schedule = {\\n user: req.body.user,\\n place: req.body.place,\\n date: req.body.date,\\n state: \\\"new\\\",\\n travellingMethod: req.body.travellingMethod\\n };\\n Schedules.create(schedule).then(schedule => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n schedule: schedule\\n });\\n }, err => {\\n res.statusCode = 403;\\n res.setHeader('Content-Type', 'application/json');\\n const msg = err._message;\\n res.json({\\n success: false,\\n message: msg\\n });\\n }).catch(err => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: \\\"Failed to add a schedule\\\"\\n });\\n });\\n};\\n\\nconst deleteAllSchedules = (req, res, next) => {\\n Schedules.remove({}).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json(resp);\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nexports.getAllSchedules = getAllSchedules;\\nexports.addSchedule = addSchedule;\\nexports.deleteAllSchedules = deleteAllSchedules;\\nexports.getAllSchedulesForAUser = getAllSchedulesForAUser; // **********************************************************************************\\n// \\n// Schedule Operations Specified by ID\\n// \\n// **********************************************************************************\\n\\nconst getScheduleDetailsById = (req, res, next) => {\\n Schedules.findById(req.params.scheduleId).then(schedule => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n schedule: schedule\\n });\\n }, err => {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: \\\"Could not find the place\\\"\\n });\\n }).catch(err => next(err));\\n};\\n\\nconst updateScheduleById = (req, res, next) => {\\n Schedules.findByIdAndUpdate(req.params.scheduleId, {\\n $set: req.body\\n }, {\\n new: true\\n }).then(schedule => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n schedule: schedule\\n });\\n }, err => next(err)).catch(err => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: \\\"Update failed\\\"\\n });\\n });\\n};\\n\\nconst deleteScheduleById = (req, res, next) => {\\n Schedules.findByIdAndRemove(req.params.scheduleId).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n response: resp\\n });\\n }, err => next(err)).catch(err => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: \\\"Delete failed\\\"\\n });\\n });\\n};\\n\\nexports.getScheduleDetailsById = getScheduleDetailsById;\\nexports.updateScheduleById = updateScheduleById;\\nexports.deleteScheduleById = deleteScheduleById; // **********************************************************************************\\n// \\n// Schedule Operations Specified by UserID\\n// \\n// **********************************************************************************\\n// const getScheduleDetailsByUserId = (req, res, next) => {\\n// Schedules.findById(req.params.scheduleId)\\n// .then((schedule) => {\\n// res.statusCode = 200;\\n// res.setHeader('Content-Type', 'application/json');\\n// res.json(schedule);\\n// }, (err) => next(err))\\n// .catch((err) => next(err));\\n// }\\n// const updateScheduleByUserId = (req, res, next) => {\\n// Schedules.findByIdAndUpdate(req.params.scheduleId, {\\n// $set: req.body\\n// }, { new: true })\\n// .then((schedule) => {\\n// res.statusCode = 200;\\n// res.setHeader('Content-Type', 'application/json');\\n// res.json(schedule);\\n// }, (err) => next(err))\\n// .catch((err) => next(err));\\n// }\\n// const deleteScheduleByUserId = (req, res, next) => {\\n// Schedules.findByIdAndRemove(req.params.scheduleId)\\n// .then((resp) => {\\n// res.statusCode = 200;\\n// res.setHeader('Content-Type', 'application/json');\\n// res.json(resp);\\n// }, (err) => next(err))\\n// .catch((err) => next(err));\\n// }\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNjaGVkdWxlQ29udHJvbGxlci5qcyJdLCJuYW1lcyI6WyJTY2hlZHVsZXMiLCJyZXF1aXJlIiwiZ2V0QWxsU2NoZWR1bGVzIiwicmVxIiwicmVzIiwibmV4dCIsImZpbmQiLCJxdWVyeSIsInBvcHVsYXRlIiwidGhlbiIsInNjaGVkdWxlcyIsInN0YXR1c0NvZGUiLCJzZXRIZWFkZXIiLCJqc29uIiwic3VjY2VzcyIsImVyciIsImNhdGNoIiwiZ2V0QWxsU2NoZWR1bGVzRm9yQVVzZXIiLCJTdHJpbmciLCJwYXJhbXMiLCJ1c2VySWQiLCJtc2ciLCJfbWVzc2FnZSIsIm1lc3NhZ2UiLCJhZGRTY2hlZHVsZSIsInNjaGVkdWxlIiwidXNlciIsImJvZHkiLCJwbGFjZSIsImRhdGUiLCJzdGF0ZSIsInRyYXZlbGxpbmdNZXRob2QiLCJjcmVhdGUiLCJkZWxldGVBbGxTY2hlZHVsZXMiLCJyZW1vdmUiLCJyZXNwIiwiZXhwb3J0cyIsImdldFNjaGVkdWxlRGV0YWlsc0J5SWQiLCJmaW5kQnlJZCIsInNjaGVkdWxlSWQiLCJ1cGRhdGVTY2hlZHVsZUJ5SWQiLCJmaW5kQnlJZEFuZFVwZGF0ZSIsIiRzZXQiLCJuZXciLCJkZWxldGVTY2hlZHVsZUJ5SWQiLCJmaW5kQnlJZEFuZFJlbW92ZSIsInJlc3BvbnNlIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxTQUFTLEdBQUdDLE9BQU8sQ0FBQyxxQkFBRCxDQUF6QixDLENBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUEsTUFBTUMsZUFBZSxHQUFHLENBQUNDLEdBQUQsRUFBTUMsR0FBTixFQUFXQyxJQUFYLEtBQW9CO0FBQ3hDTCxFQUFBQSxTQUFTLENBQUNNLElBQVYsQ0FBZUgsR0FBRyxDQUFDSSxLQUFuQixFQUEwQkMsUUFBMUIsQ0FBbUMsT0FBbkMsRUFBNENBLFFBQTVDLENBQXFELE1BQXJELEVBQ0tDLElBREwsQ0FDV0MsU0FBRCxJQUFlO0FBQ2pCTixJQUFBQSxHQUFHLENBQUNPLFVBQUosR0FBaUIs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LE1BQUFBLFFBQVEsRUFBQ1g7QUFBMUIsS0FBVDtBQUNILEdBTEwsRUFLUXBCLEdBQUQsSUFBU1YsSUFBSSxDQUFDVSxHQUFELENBTHBCLEVBTUtDLEtBTkwsQ0FNWUQsR0FBRCxJQUFTO0FBQ1pYLElBQUFBLEdBQUcsQ0FBQ08sVUFBSixHQUFpQixHQUFqQjtBQUNBUCxJQUFBQSxHQUFHLENBQUNRLFNBQUosQ0FBYyxjQUFkLEVBQThCLGtCQUE5QjtBQUNBUixJQUFBQSxHQUFHLENBQUNTLElBQUosQ0FBUztBQUFFQyxNQUFBQSxPQUFPLEVBQUUsS0FBWDtBQUFrQlMsTUFBQUEsT0FBTyxFQUFFO0FBQTNCLEtBQVQ7QUFDSCxHQVZMO0FBV0gsQ0FaRDs7QUFjQWEsT0FBTyxDQUFDQyxzQkFBUixHQUFpQ0Esc0JBQWpDO0FBQ0FELE9BQU8sQ0FBQ0ksa0JBQVIsR0FBNkJBLGtCQUE3QjtBQUNBSixPQUFPLENBQUNRLGtCQUFSLEdBQTZCQSxrQkFBN0IsQyxDQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgU2NoZWR1bGVzID0gcmVxdWlyZSgnLi4vbW9kZWxzL3NjaGVkdWxlcycpO1xyXG5cclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyBcclxuLy8gICAgICAgICAgICAgIFNjaGVkdWxlIE9wZXJhdGlvbnMgXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG5jb25zdCBnZXRBbGxTY2hlZHVsZXMgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIFNjaGVkdWxlcy5maW5kKHJlcS5xdWVyeSkucG9wdWxhdGUoXCJwbGFjZVwiKS5wb3B1bGF0ZShcInVzZXJcIilcclxuICAgICAgICAudGhlbigoc2NoZWR1bGVzKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHNjaGVkdWxlczpzY2hlZHVsZXMgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpO1xyXG59XHJcblxyXG5jb25zdCBnZXRBbGxTY2hlZHVsZXNGb3JBVXNlciA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgdmFyIHF1ZXJ5ID0geyBcInVzZXJcIjogU3RyaW5nKHJlcS5wYXJhbXMudXNlcklkKSB9O1xyXG4gICAgU2NoZWR1bGVzLmZpbmQocXVlcnkpLnBvcHVsYXRlKFwicGxhY2VcIilcclxuICAgICAgICAudGhlbigoc2NoZWR1bGVzKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHNjaGVkdWxlczpzY2hlZHVsZXMgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gIHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDQ7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIGNvbnN0IG1zZyA9IGVyci5fbWVzc2FnZTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogbXNnIH0pO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA1MDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogZmFsc2UsIG1lc3NhZ2U6IFwiRmFpbGVkIHRvIGdldCBkYXRhXCIgfSk7XHJcbiAgICAgICAgfSk7XHJcbn1cclxuXHJcbmNvbnN0IGFkZFNjaGVkdWxlID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICB2YXIgc2NoZWR1bGUgPSB7XHJcbiAgICAgICAgdXNlcjogcmVxLmJvZHkudXNlcixcclxuICAgICAgICBwbGFjZTogcmVxLmJvZHkucGxhY2UsXHJcbiAgICAgICAgZGF0ZTogcmVxLmJvZHkuZGF0ZSxcclxuICAgICAgICBzdGF0ZTogXCJuZXdcIixcclxuICAgICAgICB0cmF2ZWxsaW5nTWV0aG9kOiByZXEuYm9keS50cmF2ZWxsaW5nTWV0aG9kXHJcbiAgICB9XHJcbiAgICBTY2hlZHVsZXMuY3JlYXRlKHNjaGVkdWxlKVxyXG4gICAgICAgIC50aGVuKChzY2hlZHVsZSkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCBzY2hlZHVsZTpzY2hlZHVsZSB9KTtcclxuICAgICAgICB9LCAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNDAzO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICBjb25zdCBtc2cgPSBlcnIuX21lc3NhZ2U7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogZmFsc2UsIG1lc3NhZ2U6IG1zZyB9KTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IGZhbHNlLCBtZXNzYWdlOiBcIkZhaWxlZCB0byBhZGQgYSBzY2hlZHVsZVwiIH0pO1xyXG4gICAgICAgIH0pO1xyXG59XHJcblxyXG5jb25zdCBkZWxldGVBbGxTY2hlZHVsZXMgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIFNjaGVkdWxlcy5yZW1vdmUoe30pXHJcbiAgICAgICAgLnRoZW4oKHJlc3ApID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHJlc3ApO1xyXG4gICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuZXhwb3J0cy5nZXRBbGxTY2hlZHVsZXMgPSBnZXRBbGxTY2hlZHVsZXM7XHJcbmV4cG9ydHMuYWRkU2NoZWR1bGUgPSBhZGRTY2hlZHVsZTtcclxuZXhwb3J0cy5kZWxldGVBbGxTY2hlZHVsZXMgPSBkZWxldGVBbGxTY2hlZHVsZXM7XHJcbmV4cG9ydHMuZ2V0QWxsU2NoZWR1bGVzRm9yQVVzZXIgPSBnZXRBbGxTY2hlZHVsZXNGb3JBVXNlcjtcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuLy8gXHJcbi8vICAgICAgICAgICAgICBTY2hlZHVsZSBPcGVyYXRpb25zIFNwZWNpZmllZCBieSBJRFxyXG4vLyBcclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuY29uc3QgZ2V0U2NoZWR1bGVEZXRhaWxzQnlJZCA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgU2NoZWR1bGVzLmZpbmRCeUlkKHJlcS5wYXJhbXMuc2NoZWR1bGVJZClcclxuICAgICAgICAudGhlbigoc2NoZWR1bGUpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgc2NoZWR1bGU6c2NoZWR1bGUgfSk7XHJcbiAgICAgICAgfSwgIChlcnIpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDQ7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogZmFsc2UsIG1lc3NhZ2U6IFwiQ291bGQgbm90IGZpbmQgdGhlIHBsYWNlXCIgfSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuY29uc3QgdXBkYXRlU2NoZWR1bGVCeUlkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICBTY2hlZHVsZXMuZmluZEJ5SWRBbmRVcGRhdGUocmVxLnBhcmFtcy5zY2hlZHVsZUlkLCB7XHJcbiAgICAgICAgJHNldDogcmVxLmJvZHlcclxuICAgIH0sIHsgbmV3OiB0cnVlIH0pXHJcbiAgICAgICAgLnRoZW4oKHNjaGVkdWxlKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHNjaGVkdWxlOnNjaGVkdWxlIH0pO1xyXG4gICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogXCJVcGRhdGUgZmFpbGVkXCIgfSk7XHJcbiAgICAgICAgfSk7XHJcbn1cclxuXHJcbmNvbnN0IGRlbGV0ZVNjaGVkdWxlQnlJZCA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgU2NoZWR1bGVzLmZpbmRCeUlkQW5kUmVtb3ZlKHJlcS5wYXJhbXMuc2NoZWR1bGVJZClcclxuICAgICAgICAudGhlbigocmVzcCkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCByZXNwb25zZTpyZXNwIH0pO1xyXG4gICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogXCJEZWxldGUgZmFpbGVkXCIgfSk7XHJcbiAgICAgICAgfSk7XHJcbn1cclxuXHJcbmV4cG9ydHMuZ2V0U2NoZWR1bGVEZXRhaWxzQnlJZCA9IGdldFNjaGVkdWxlRGV0YWlsc0J5SWQ7XHJcbmV4cG9ydHMudXBkYXRlU2NoZWR1bGVCeUlkID0gdXBkYXRlU2NoZWR1bGVCeUlkO1xyXG5leHBvcnRzLmRlbGV0ZVNjaGVkdWxlQnlJZCA9IGRlbGV0ZVNjaGVkdWxlQnlJZDtcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuLy8gXHJcbi8vICAgICAgICAgICAgICBTY2hlZHVsZSBPcGVyYXRpb25zIFNwZWNpZmllZCBieSBVc2VySURcclxuLy8gXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbi8vIGNvbnN0IGdldFNjaGVkdWxlRGV0YWlsc0J5VXNlcklkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbi8vICAgICBTY2hlZHVsZXMuZmluZEJ5SWQocmVxLnBhcmFtcy5zY2hlZHVsZUlkKVxyXG4vLyAgICAgICAgIC50aGVuKChzY2hlZHVsZSkgPT4ge1xyXG4vLyAgICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuLy8gICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuLy8gICAgICAgICAgICAgcmVzLmpzb24oc2NoZWR1bGUpO1xyXG4vLyAgICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuLy8gICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxuLy8gfVxyXG5cclxuLy8gY29uc3QgdXBkYXRlU2NoZWR1bGVCeVVzZXJJZCA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4vLyAgICAgU2NoZWR1bGVzLmZpbmRCeUlkQW5kVXBkYXRlKHJlcS5wYXJhbXMuc2NoZWR1bGVJZCwge1xyXG4vLyAgICAgICAgICRzZXQ6IHJlcS5ib2R5XHJcbi8vICAgICB9LCB7IG5ldzogdHJ1ZSB9KVxyXG4vLyAgICAgICAgIC50aGVuKChzY2hlZHVsZSkgPT4ge1xyXG4vLyAgICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuLy8gICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuLy8gICAgICAgICAgICAgcmVzLmpzb24oc2NoZWR1bGUpO1xyXG4vLyAgICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuLy8gICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxuLy8gfVxyXG5cclxuLy8gY29uc3QgZGVsZXRlU2NoZWR1bGVCeVVzZXJJZCA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4vLyAgICAgU2NoZWR1bGVzLmZpbmRCeUlkQW5kUmVtb3ZlKHJlcS5wYXJhbXMuc2NoZWR1bGVJZClcclxuLy8gICAgICAgICAudGhlbigocmVzcCkgPT4ge1xyXG4vLyAgICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuLy8gICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuLy8gICAgICAgICAgICAgcmVzLmpzb24ocmVzcCk7XHJcbi8vICAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4vLyAgICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpO1xyXG4vLyB9Il19\",\"originalCode\":\"const Schedules = require('../models/schedules');\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Schedule Operations \\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nconst getAllSchedules = (req, res, next) => {\\r\\n Schedules.find(req.query).populate(\\\"place\\\").populate(\\\"user\\\")\\r\\n .then((schedules) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, schedules:schedules });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst getAllSchedulesForAUser = (req, res, next) => {\\r\\n var query = { \\\"user\\\": String(req.params.userId) };\\r\\n Schedules.find(query).populate(\\\"place\\\")\\r\\n .then((schedules) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, schedules:schedules });\\r\\n }, (err) => {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n const msg = err._message;\\r\\n res.json({ success: false, message: msg });\\r\\n })\\r\\n .catch((err) => {\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: \\\"Failed to get data\\\" });\\r\\n });\\r\\n}\\r\\n\\r\\nconst addSchedule = (req, res, next) => {\\r\\n var schedule = {\\r\\n user: req.body.user,\\r\\n place: req.body.place,\\r\\n date: req.body.date,\\r\\n state: \\\"new\\\",\\r\\n travellingMethod: req.body.travellingMethod\\r\\n }\\r\\n Schedules.create(schedule)\\r\\n .then((schedule) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, schedule:schedule });\\r\\n }, (err) => {\\r\\n res.statusCode = 403;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n const msg = err._message;\\r\\n res.json({ success: false, message: msg });\\r\\n })\\r\\n .catch((err) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: \\\"Failed to add a schedule\\\" });\\r\\n });\\r\\n}\\r\\n\\r\\nconst deleteAllSchedules = (req, res, next) => {\\r\\n Schedules.remove({})\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json(resp);\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nexports.getAllSchedules = getAllSchedules;\\r\\nexports.addSchedule = addSchedule;\\r\\nexports.deleteAllSchedules = deleteAllSchedules;\\r\\nexports.getAllSchedulesForAUser = getAllSchedulesForAUser;\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Schedule Operations Specified by ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nconst getScheduleDetailsById = (req, res, next) => {\\r\\n Schedules.findById(req.params.scheduleId)\\r\\n .then((schedule) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, schedule:schedule });\\r\\n }, (err) => {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: \\\"Could not find the place\\\" });\\r\\n })\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst updateScheduleById = (req, res, next) => {\\r\\n Schedules.findByIdAndUpdate(req.params.scheduleId, {\\r\\n $set: req.body\\r\\n }, { new: true })\\r\\n .then((schedule) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, schedule:schedule });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: \\\"Update failed\\\" });\\r\\n });\\r\\n}\\r\\n\\r\\nconst deleteScheduleById = (req, res, next) => {\\r\\n Schedules.findByIdAndRemove(req.params.scheduleId)\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, response:resp });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: \\\"Delete failed\\\" });\\r\\n });\\r\\n}\\r\\n\\r\\nexports.getScheduleDetailsById = getScheduleDetailsById;\\r\\nexports.updateScheduleById = updateScheduleById;\\r\\nexports.deleteScheduleById = deleteScheduleById;\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Schedule Operations Specified by UserID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\n// const getScheduleDetailsByUserId = (req, res, next) => {\\r\\n// Schedules.findById(req.params.scheduleId)\\r\\n// .then((schedule) => {\\r\\n// res.statusCode = 200;\\r\\n// res.setHeader('Content-Type', 'application/json');\\r\\n// res.json(schedule);\\r\\n// }, (err) => next(err))\\r\\n// .catch((err) => next(err));\\r\\n// }\\r\\n\\r\\n// const updateScheduleByUserId = (req, res, next) => {\\r\\n// Schedules.findByIdAndUpdate(req.params.scheduleId, {\\r\\n// $set: req.body\\r\\n// }, { new: true })\\r\\n// .then((schedule) => {\\r\\n// res.statusCode = 200;\\r\\n// res.setHeader('Content-Type', 'application/json');\\r\\n// res.json(schedule);\\r\\n// }, (err) => next(err))\\r\\n// .catch((err) => next(err));\\r\\n// }\\r\\n\\r\\n// const deleteScheduleByUserId = (req, res, next) => {\\r\\n// Schedules.findByIdAndRemove(req.params.scheduleId)\\r\\n// .then((resp) => {\\r\\n// res.statusCode = 200;\\r\\n// res.setHeader('Content-Type', 'application/json');\\r\\n// res.json(resp);\\r\\n// }, (err) => next(err))\\r\\n// .catch((err) => next(err));\\r\\n// }\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/df/scheduleController_df2aee56329a17301dcb5de3e55455e9.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2542\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\scheduleController.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":22878,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":22875,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"getAllSchedules\",\"ranges\":[{\"startOffset\":382,\"endOffset\":688,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getAllSchedulesForAUser\",\"ranges\":[{\"startOffset\":723,\"endOffset\":1396,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"addSchedule\",\"ranges\":[{\"startOffset\":1419,\"endOffset\":2190,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"deleteAllSchedules\",\"ranges\":[{\"startOffset\":2220,\"endOffset\":2430,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getScheduleDetailsById\",\"ranges\":[{\"startOffset\":2883,\"endOffset\":3331,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"updateScheduleById\",\"ranges\":[{\"startOffset\":3361,\"endOffset\":3854,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"deleteScheduleById\",\"ranges\":[{\"startOffset\":3884,\"endOffset\":4322,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const mongoose = require('mongoose');\\n\\nconst Schema = mongoose.Schema;\\n\\nrequire('mongoose-currency').loadType(mongoose);\\n\\nconst Currency = mongoose.Types.Currency;\\nconst scheduleSchema = new Schema({\\n user: {\\n type: mongoose.Schema.Types.ObjectId,\\n ref: \\\"User\\\"\\n },\\n place: {\\n type: mongoose.Schema.Types.ObjectId,\\n ref: \\\"Place\\\"\\n },\\n date: {\\n type: Date,\\n required: true\\n },\\n fair: {\\n type: Currency,\\n min: 0\\n },\\n state: {\\n type: String,\\n default: \\\"new\\\",\\n enum: [\\\"new\\\", \\\"not-completed\\\", \\\"canceled\\\", \\\"completed\\\"]\\n },\\n travellingMethod: {\\n type: String,\\n required: true,\\n enum: ['Bus', 'Car', 'Train', 'Threewheeler', 'Foot']\\n }\\n}, {\\n timestamps: true\\n});\\nvar Schedules = mongoose.model('Schedule', scheduleSchema);\\nmodule.exports = Schedules;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNjaGVkdWxlcy5qcyJdLCJuYW1lcyI6WyJtb25nb29zZSIsInJlcXVpcmUiLCJTY2hlbWEiLCJsb2FkVHlwZSIsIkN1cnJlbmN5IiwiVHlwZXMiLCJzY2hlZHVsZVNjaGVtYSIsInVzZXIiLCJ0eXBlIiwiT2JqZWN0SWQiLCJyZWYiLCJwbGFjZSIsImRhdGUiLCJEYXRlIiwicmVxdWlyZWQiLCJmYWlyIiwibWluIiwic3RhdGUiLCJTdHJpbmciLCJkZWZhdWx0IiwiZW51bSIsInRyYXZlbGxpbmdNZXRob2QiLCJ0aW1lc3RhbXBzIiwiU2NoZWR1bGVzIiwibW9kZWwiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxRQUFRLEdBQUdDLE9BQU8sQ0FBQyxVQUFELENBQXhCOztBQUNBLE1BQU1DLE1BQU0sR0FBR0YsUUFBUSxDQUFDRSxNQUF4Qjs7QUFDQUQsT0FBTyxDQUFDLG1CQUFELENBQVAsQ0FBNkJFLFFBQTdCLENBQXNDSCxRQUF0Qzs7QUFDQSxNQUFNSSxRQUFRLEdBQUdKLFFBQVEsQ0FBQ0ssS0FBVCxDQUFlRCxRQUFoQztBQUNBLE1BQU1FLGNBQWMsR0FBRyxJQUFJSixNQUFKLENBQVc7QUFDOUJLLEVBQUFBLElBQUksRUFBRTtBQUNGQyxJQUFBQSxJQUFJLEVBQUVSLFFBQVEsQ0FBQ0UsTUFBVCxDQUFnQkcsS0FBaEIsQ0FBc0JJLFFBRDFCO0FBRUZDLElBQUFBLEdBQUcsRUFBRTtBQUZILEdBRHdCO0FBSzlCQyxFQUFBQSxLQUFLLEVBQUU7QUFDSEgsSUFBQUEsSUFBSSxFQUFFUixRQUFRLENBQUNFLE1BQVQsQ0FBZ0JHLEtBQWhCLENBQXNCSSxRQUR6QjtBQUVIQyxJQUFBQSxHQUFHLEVBQUU7QUFGRixHQUx1QjtBQVM5QkUsRUFBQUEsSUFBSSxFQUFFO0FBQ0ZKLElBQUFBLElBQUksRUFBRUssSUFESjtBQUVGQyxJQUFBQSxRQUFRLEVBQUU7QUFGUixHQVR3QjtBQWE5QkMsRUFBQUEsSUFBSSxFQUFFO0FBQ0ZQLElBQUFBLElBQUksRUFBRUosUUFESjtBQUVGWSxJQUFBQSxHQUFHLEVBQUU7QUFGSCxHQWJ3QjtBQWlCOUJDLEVBQUFBLEtBQUssRUFBRTtBQUNIVCxJQUFBQSxJQUFJLEVBQUVVLE1BREg7QUFFSEMsSUFBQUEsT0FBTyxFQUFFLEtBRk47QUFHSEMsSUFBQUEsSUFBSSxFQUFFLENBQUMsS0FBRCxFQUFPLGVBQVAsRUFBd0IsVUFBeEIsRUFBb0MsV0FBcEM7QUFISCxHQWpCdUI7QUFzQjlCQyxFQUFBQSxnQkFBZ0IsRUFBRTtBQUNkYixJQUFBQSxJQUFJLEVBQUVVLE1BRFE7QUFFZEosSUFBQUEsUUFBUSxFQUFFLElBRkk7QUFHZE0sSUFBQUEsSUFBSSxFQUFFLENBQUMsS0FBRCxFQUFRLEtBQVIsRUFBZSxPQUFmLEVBQXdCLGNBQXhCLEVBQXdDLE1BQXhDO0FBSFE7QUF0QlksQ0FBWCxFQTJCcEI7QUFDQ0UsRUFBQUEsVUFBVSxFQUFFO0FBRGIsQ0EzQm9CLENBQXZCO0FBK0JBLElBQUlDLFNBQVMsR0FBR3ZCLFFBQVEsQ0FBQ3dCLEtBQVQsQ0FBZSxVQUFmLEVBQTJCbEIsY0FBM0IsQ0FBaEI7QUFFQW1CLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQkgsU0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBtb25nb29zZSA9IHJlcXVpcmUoJ21vbmdvb3NlJyk7XHJcbmNvbnN0IFNjaGVtYSA9IG1vbmdvb3NlLlNjaGVtYTtcclxucmVxdWlyZSgnbW9uZ29vc2UtY3VycmVuY3knKS5sb2FkVHlwZShtb25nb29zZSk7XHJcbmNvbnN0IEN1cnJlbmN5ID0gbW9uZ29vc2UuVHlwZXMuQ3VycmVuY3k7XHJcbmNvbnN0IHNjaGVkdWxlU2NoZW1hID0gbmV3IFNjaGVtYSh7XHJcbiAgICB1c2VyOiB7XHJcbiAgICAgICAgdHlwZTogbW9uZ29vc2UuU2NoZW1hLlR5cGVzLk9iamVjdElkLFxyXG4gICAgICAgIHJlZjogXCJVc2VyXCJcclxuICAgIH0sXHJcbiAgICBwbGFjZToge1xyXG4gICAgICAgIHR5cGU6IG1vbmdvb3NlLlNjaGVtYS5UeXBlcy5PYmplY3RJZCxcclxuICAgICAgICByZWY6IFwiUGxhY2VcIlxyXG4gICAgfSxcclxuICAgIGRhdGU6IHtcclxuICAgICAgICB0eXBlOiBEYXRlLFxyXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlXHJcbiAgICB9LFxyXG4gICAgZmFpcjoge1xyXG4gICAgICAgIHR5cGU6IEN1cnJlbmN5LFxyXG4gICAgICAgIG1pbjogMFxyXG4gICAgfSxcclxuICAgIHN0YXRlOiB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICAgIGRlZmF1bHQ6IFwibmV3XCIsXHJcbiAgICAgICAgZW51bTogW1wibmV3XCIsXCJub3QtY29tcGxldGVkXCIsIFwiY2FuY2VsZWRcIiwgXCJjb21wbGV0ZWRcIl1cclxuICAgIH0sXHJcbiAgICB0cmF2ZWxsaW5nTWV0aG9kOiB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxyXG4gICAgICAgIGVudW06IFsnQnVzJywgJ0NhcicsICdUcmFpbicsICdUaHJlZXdoZWVsZXInLCAnRm9vdCddXHJcbiAgICB9XHJcbn0sIHtcclxuICAgIHRpbWVzdGFtcHM6IHRydWVcclxufSk7XHJcblxyXG52YXIgU2NoZWR1bGVzID0gbW9uZ29vc2UubW9kZWwoJ1NjaGVkdWxlJywgc2NoZWR1bGVTY2hlbWEpO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBTY2hlZHVsZXM7Il19\",\"originalCode\":\"const mongoose = require('mongoose');\\r\\nconst Schema = mongoose.Schema;\\r\\nrequire('mongoose-currency').loadType(mongoose);\\r\\nconst Currency = mongoose.Types.Currency;\\r\\nconst scheduleSchema = new Schema({\\r\\n user: {\\r\\n type: mongoose.Schema.Types.ObjectId,\\r\\n ref: \\\"User\\\"\\r\\n },\\r\\n place: {\\r\\n type: mongoose.Schema.Types.ObjectId,\\r\\n ref: \\\"Place\\\"\\r\\n },\\r\\n date: {\\r\\n type: Date,\\r\\n required: true\\r\\n },\\r\\n fair: {\\r\\n type: Currency,\\r\\n min: 0\\r\\n },\\r\\n state: {\\r\\n type: String,\\r\\n default: \\\"new\\\",\\r\\n enum: [\\\"new\\\",\\\"not-completed\\\", \\\"canceled\\\", \\\"completed\\\"]\\r\\n },\\r\\n travellingMethod: {\\r\\n type: String,\\r\\n required: true,\\r\\n enum: ['Bus', 'Car', 'Train', 'Threewheeler', 'Foot']\\r\\n }\\r\\n}, {\\r\\n timestamps: true\\r\\n});\\r\\n\\r\\nvar Schedules = mongoose.model('Schedule', scheduleSchema);\\r\\n\\r\\nmodule.exports = Schedules;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/e2/schedules_e2f8e79bc28961f4db3736c92d490e47.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2543\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\models\\\\schedules.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":4238,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":4235,\"count\":1}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const express = require('express');\\n\\nconst bodyParser = require('body-parser');\\n\\nconst cors = require('./cors');\\n\\nconst {\\n checkSchema\\n} = require('express-validator');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nvar validationRules = require('../middleware/validation');\\n\\nconst touristController = require('../controllers/touristController');\\n\\nconst touristRouter = express.Router();\\ntouristRouter.use(bodyParser.json()); // **********************************************************************************\\n// \\n// Tourist Routes\\n// \\n// **********************************************************************************\\n\\ntouristRouter.route('/').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, touristController.getAllTourists).post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, touristController.addTourist).put(cors.corsWithOptions, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('PUT operation not supported on /tourists');\\n}).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, touristController.deleteAllTourists);\\ntouristRouter.route('/search').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).post(cors.corsWithOptions, authenticate.verifyUser, touristController.getAllTouristsByName); // **********************************************************************************\\n// \\n// Tourist Routes Specified by ID\\n// \\n// **********************************************************************************\\n\\ntouristRouter.route('/:touristId').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, touristController.getTouristDetailsById).post(cors.corsWithOptions, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('POST operation not supported on /tourists/' + req.params.touristId);\\n}).put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, touristController.updateTouristDetailsById).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, touristController.deleteATouristById);\\nmodule.exports = touristRouter;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRvdXJpc3RSb3V0ZXIuanMiXSwibmFtZXMiOlsiZXhwcmVzcyIsInJlcXVpcmUiLCJib2R5UGFyc2VyIiwiY29ycyIsImNoZWNrU2NoZW1hIiwiYXV0aGVudGljYXRlIiwidmFsaWRhdGlvblJ1bGVzIiwidG91cmlzdENvbnRyb2xsZXIiLCJ0b3VyaXN0Um91dGVyIiwiUm91dGVyIiwidXNlIiwianNvbiIsInJvdXRlIiwib3B0aW9ucyIsImNvcnNXaXRoT3B0aW9ucyIsInJlcSIsInJlcyIsInNlbmRTdGF0dXMiLCJnZXQiLCJ2ZXJpZnlVc2VyIiwiZ2V0QWxsVG91cmlzdHMiLCJwb3N0IiwidmVyaWZ5TW9kZXJhdGVyIiwiYWRkVG91cmlzdCIsInB1dCIsIm5leHQiLCJzdGF0dXNDb2RlIiwiZW5kIiwiZGVsZXRlIiwidmVyaWZ5QWRtaW4iLCJkZWxldGVBbGxUb3VyaXN0cyIsImdldEFsbFRvdXJpc3RzQnlOYW1lIiwiZ2V0VG91cmlzdERldGFpbHNCeUlkIiwicGFyYW1zIiwidG91cmlzdElkIiwidXBkYXRlVG91cmlzdERldGFpbHNCeUlkIiwiZGVsZXRlQVRvdXJpc3RCeUlkIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsT0FBTyxHQUFHQyxPQUFPLENBQUMsU0FBRCxDQUF2Qjs7QUFDQSxNQUFNQyxVQUFVLEdBQUdELE9BQU8sQ0FBQyxhQUFELENBQTFCOztBQUVBLE1BQU1FLElBQUksR0FBR0YsT0FBTyxDQUFDLFFBQUQsQ0FBcEI7O0FBQ0EsTUFBTTtBQUFFRyxFQUFBQTtBQUFGLElBQWtCSCxPQUFPLENBQUMsbUJBQUQsQ0FBL0I7O0FBQ0EsSUFBSUksWUFBWSxHQUFHSixPQUFPLENBQUMsNEJBQUQsQ0FBMUI7O0FBQ0EsSUFBSUssZUFBZSxHQUFHTCxPQUFPLENBQUMsMEJBQUQsQ0FBN0I7O0FBQ0EsTUFBTU0saUJBQWlCLEdBQUdOLE9BQU8sQ0FBQyxrQ0FBRCxDQUFqQzs7QUFFQSxNQUFNTyxhQUFhLEdBQUdSLE9BQU8sQ0FBQ1MsTUFBUixFQUF0QjtBQUVBRCxhQUFhLENBQUNFLEdBQWQsQ0FBa0JSLFVBQVUsQ0FBQ1MsSUFBWCxFQUFsQixFLENBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQUgsYUFBYSxDQUFDSSxLQUFkLENBQW9CLEdBQXBCLEVBQ0tDLE9BREwsQ0FDYVYsSUFBSSxDQUFDVyxlQURsQixFQUNtQyxDQUFDQyxHQUFELEVBQU1DLEdBQU4sS0FBYztBQUFFQSxFQUFBQSxHQUFHLENBQUNDLFVBQUosQ0FBZSxHQUFmO0FBQXNCLENBRHpFLEVBRUtDLEdBRkwsQ0FFU2YsSUFBSSxDQUFDQSxJQUZkLEVBRXFCRSxZQUFZLENBQUNjLFVBRmxDLEVBRWdEWixpQkFBaUIsQ0FBQ2EsY0FGbEUsRUFHS0MsSUFITCxDQUdVbEIsSUFBSSxDQUFDVyxlQUhmLEVBR2lDVCxZQUFZLENBQUNjLFVBSDlDLEVBRzBEZCxZQUFZLENBQUNpQixlQUh2RSxFQUd3RmYsaUJBQWlCLENBQUNnQixVQUgxRyxFQUlLQyxHQUpMLENBSVNyQixJQUFJLENBQUNXLGVBSmQsRUFJK0IsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEVBQVdTLElBQVgsS0FBb0I7QUFDM0NULEVBQUFBLEdBQUcsQ0FBQ1UsVUFBSixHQUFpQixHQUFqQjtBQUNBVixFQUFBQSxHQUFHLENBQUNXLEdBQUosQ0FBUSwwQ0FBUjtBQUNILENBUEwsRUFRS0MsTUFSTCxDQVFZekIsSUFBSSxDQUFDVyxlQVJqQixFQVFrQ1QsWUFBWSxDQUFDYyxVQVIvQyxFQVEyRGQsWUFBWSxDQUFDd0IsV0FSeEUsRUFRc0Z0QixpQkFBaUIsQ0FBQ3VCLGlCQVJ4RztBQVNBdEIsYUFBYSxDQUFDSSxLQUFkLENBQW9CLFNBQXBCLEVBQ0tDLE9BREwsQ0FDYVYsSUFBSSxDQUFDVyxlQURsQixFQUNtQyxDQUFDQyxHQUFELEVBQU1DLEdBQU4sS0FBYztBQUFFQSxFQUFBQSxHQUFHLENBQUNDLFVBQUosQ0FBZSxHQUFmO0FBQXNCLENBRHpFLEVBRUtJLElBRkwsQ0FFVWxCLElBQUksQ0FBQ1csZUFGZixFQUVnQ1QsWUFBWSxDQUFDYyxVQUY3QyxFQUUwRFosaUJBQWlCLENBQUN3QixvQkFGNUUsRSxDQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUF2QixhQUFhLENBQUNJLEtBQWQsQ0FBb0IsYUFBcEIsRUFDS0MsT0FETCxDQUNhVixJQUFJLENBQUNXLGVBRGxCLEVBQ21DLENBQUNDLEdBQUQsRUFBTUMsR0FBTixLQUFjO0FBQUVBLEVBQUFBLEdBQUcsQ0FBQ0MsVUFBSixDQUFlLEdBQWY7QUFBc0IsQ0FEekUsRUFFS0MsR0FGTCxDQUVTZixJQUFJLENBQUNBLElBRmQsRUFFb0JFLFlBQVksQ0FBQ2MsVUFGakMsRUFFK0NaLGlCQUFpQixDQUFDeUIscUJBRmpFLEVBR0tYLElBSEwsQ0FHVWxCLElBQUksQ0FBQ1csZUFIZixFQUdnQyxDQUFDQyxHQUFELEVBQU1DLEdBQU4sRUFBV1MsSUFBWCxLQUFvQjtBQUM1Q1QsRUFBQUEsR0FBRyxDQUFDVSxVQUFKLEdBQWlCLEdBQWpCO0FBQ0FWLEVBQUFBLEdBQUcsQ0FBQ1csR0FBSixDQUFRLCtDQUErQ1osR0FBRyxDQUFDa0IsTUFBSixDQUFXQyxTQUFsRTtBQUNILENBTkwsRUFPS1YsR0FQTCxDQU9TckIsSUFBSSxDQUFDVyxlQVBkLEVBTytCVCxZQUFZLENBQUNjLFVBUDVDLEVBT3dEZCxZQUFZLENBQUNpQixlQVByRSxFQU91RmYsaUJBQWlCLENBQUM0Qix3QkFQekcsRUFRS1AsTUFSTCxDQVFZekIsSUFBSSxDQUFDVyxlQVJqQixFQVFtQ1QsWUFBWSxDQUFDYyxVQVJoRCxFQVE0RGQsWUFBWSxDQUFDaUIsZUFSekUsRUFRMEZmLGlCQUFpQixDQUFDNkIsa0JBUjVHO0FBVUFDLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQjlCLGFBQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZXhwcmVzcyA9IHJlcXVpcmUoJ2V4cHJlc3MnKTtcclxuY29uc3QgYm9keVBhcnNlciA9IHJlcXVpcmUoJ2JvZHktcGFyc2VyJyk7XHJcblxyXG5jb25zdCBjb3JzID0gcmVxdWlyZSgnLi9jb3JzJyk7XHJcbmNvbnN0IHsgY2hlY2tTY2hlbWEgfSA9IHJlcXVpcmUoJ2V4cHJlc3MtdmFsaWRhdG9yJyk7XHJcbnZhciBhdXRoZW50aWNhdGUgPSByZXF1aXJlKCcuLi9taWRkbGV3YXJlL2F1dGhlbnRpY2F0ZScpO1xyXG52YXIgdmFsaWRhdGlvblJ1bGVzID0gcmVxdWlyZSgnLi4vbWlkZGxld2FyZS92YWxpZGF0aW9uJyk7XHJcbmNvbnN0IHRvdXJpc3RDb250cm9sbGVyID0gcmVxdWlyZSgnLi4vY29udHJvbGxlcnMvdG91cmlzdENvbnRyb2xsZXInKVxyXG5cclxuY29uc3QgdG91cmlzdFJvdXRlciA9IGV4cHJlc3MuUm91dGVyKCk7XHJcblxyXG50b3VyaXN0Um91dGVyLnVzZShib2R5UGFyc2VyLmpzb24oKSk7XHJcblxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbi8vIFxyXG4vLyAgICAgICAgICAgICAgVG91cmlzdCBSb3V0ZXNcclxuLy8gXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbnRvdXJpc3RSb3V0ZXIucm91dGUoJy8nKVxyXG4gICAgLm9wdGlvbnMoY29ycy5jb3JzV2l0aE9wdGlvbnMsIChyZXEsIHJlcykgPT4geyByZXMuc2VuZFN0YXR1cygyMDApOyB9KVxyXG4gICAgLmdldChjb3JzLmNvcnMsICBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgICB0b3VyaXN0Q29udHJvbGxlci5nZXRBbGxUb3VyaXN0cylcclxuICAgIC5wb3N0KGNvcnMuY29yc1dpdGhPcHRpb25zLCAgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlNb2RlcmF0ZXIsIHRvdXJpc3RDb250cm9sbGVyLmFkZFRvdXJpc3QpXHJcbiAgICAucHV0KGNvcnMuY29yc1dpdGhPcHRpb25zLCAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwMztcclxuICAgICAgICByZXMuZW5kKCdQVVQgb3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQgb24gL3RvdXJpc3RzJyk7XHJcbiAgICB9KVxyXG4gICAgLmRlbGV0ZShjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgIHRvdXJpc3RDb250cm9sbGVyLmRlbGV0ZUFsbFRvdXJpc3RzKTtcclxudG91cmlzdFJvdXRlci5yb3V0ZSgnL3NlYXJjaCcpXHJcbiAgICAub3B0aW9ucyhjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcbiAgICAucG9zdChjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsICB0b3VyaXN0Q29udHJvbGxlci5nZXRBbGxUb3VyaXN0c0J5TmFtZSk7XHJcblxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbi8vIFxyXG4vLyAgICAgICAgICAgICAgVG91cmlzdCBSb3V0ZXMgU3BlY2lmaWVkIGJ5IElEXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG50b3VyaXN0Um91dGVyLnJvdXRlKCcvOnRvdXJpc3RJZCcpXHJcbiAgICAub3B0aW9ucyhjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcbiAgICAuZ2V0KGNvcnMuY29ycywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsICAgdG91cmlzdENvbnRyb2xsZXIuZ2V0VG91cmlzdERldGFpbHNCeUlkKVxyXG4gICAgLnBvc3QoY29ycy5jb3JzV2l0aE9wdGlvbnMsIChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNDAzO1xyXG4gICAgICAgIHJlcy5lbmQoJ1BPU1Qgb3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQgb24gL3RvdXJpc3RzLycgKyByZXEucGFyYW1zLnRvdXJpc3RJZCk7XHJcbiAgICB9KVxyXG4gICAgLnB1dChjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlNb2RlcmF0ZXIsICB0b3VyaXN0Q29udHJvbGxlci51cGRhdGVUb3VyaXN0RGV0YWlsc0J5SWQpXHJcbiAgICAuZGVsZXRlKGNvcnMuY29yc1dpdGhPcHRpb25zLCAgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlNb2RlcmF0ZXIsIHRvdXJpc3RDb250cm9sbGVyLmRlbGV0ZUFUb3VyaXN0QnlJZCk7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IHRvdXJpc3RSb3V0ZXI7Il19\",\"originalCode\":\"const express = require('express');\\r\\nconst bodyParser = require('body-parser');\\r\\n\\r\\nconst cors = require('./cors');\\r\\nconst { checkSchema } = require('express-validator');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\nvar validationRules = require('../middleware/validation');\\r\\nconst touristController = require('../controllers/touristController')\\r\\n\\r\\nconst touristRouter = express.Router();\\r\\n\\r\\ntouristRouter.use(bodyParser.json());\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Tourist Routes\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\ntouristRouter.route('/')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, touristController.getAllTourists)\\r\\n .post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, touristController.addTourist)\\r\\n .put(cors.corsWithOptions, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('PUT operation not supported on /tourists');\\r\\n })\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, touristController.deleteAllTourists);\\r\\ntouristRouter.route('/search')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .post(cors.corsWithOptions, authenticate.verifyUser, touristController.getAllTouristsByName);\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Tourist Routes Specified by ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\ntouristRouter.route('/:touristId')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, touristController.getTouristDetailsById)\\r\\n .post(cors.corsWithOptions, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('POST operation not supported on /tourists/' + req.params.touristId);\\r\\n })\\r\\n .put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, touristController.updateTouristDetailsById)\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, touristController.deleteATouristById);\\r\\n\\r\\nmodule.exports = touristRouter;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/0a/touristRouter_0ad938586662daadc81c6cb1ad2e0f53.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2545\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\touristRouter.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":9165,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":9162,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":796,\"endOffset\":836,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1050,\"endOffset\":1152,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1333,\"endOffset\":1373,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1761,\"endOffset\":1801,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1911,\"endOffset\":2038,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const Tourists = require('../models/users');\\n\\nconst utils = require('../utils/utils'); // **********************************************************************************\\n// \\n// Tourist Operations \\n// \\n// **********************************************************************************\\n\\n\\nconst getAllTourists = (req, res, next) => {\\n var query = {\\n \\\"role\\\": \\\"user\\\"\\n }; // var obj = Object.assign(query, { $text: { $search: searchBy } });\\n\\n Tourists.find(query).then(tourists => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n tourists: tourists\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst getAllTouristsByName = (req, res, next) => {\\n var query = {\\n \\\"role\\\": \\\"user\\\"\\n };\\n\\n if (req.body.similarTo) {\\n var searchBy = req.body.similarTo || {};\\n query = {\\n \\\"role\\\": \\\"user\\\",\\n $text: {\\n $search: searchBy\\n }\\n };\\n }\\n\\n var sortby = req.body.sortBy || {};\\n Tourists.find(query).sort(sortby).then(tourists => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n tourists: tourists\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst addTourist = async (req, res, next) => {\\n const randomPassword = utils.password_generator(10);\\n var tourist = {\\n username: req.body.email,\\n firstname: req.body.firstname,\\n lastname: req.body.lastname,\\n email: req.body.email,\\n mobile: req.body.mobile,\\n role: 'user'\\n };\\n\\n try {\\n Tourists.register(new Tourists(tourist), randomPassword, (err, tourist) => {\\n if (err) {\\n res.statusCode = 403;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: err.message\\n });\\n } else {\\n tourist.save((err, tourist) => {\\n if (err) {\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Error while Saving new user.'\\n });\\n }\\n\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n email: tourist.email,\\n password: randomPassword\\n });\\n });\\n }\\n });\\n } catch (error) {\\n next(err);\\n }\\n};\\n\\nconst deleteAllTourists = (req, res, next) => {\\n Tourists.remove({\\n \\\"role\\\": \\\"user\\\"\\n }).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n response: resp\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nexports.getAllTourists = getAllTourists;\\nexports.getAllTouristsByName = getAllTouristsByName;\\nexports.addTourist = addTourist;\\nexports.deleteAllTourists = deleteAllTourists; // **********************************************************************************\\n// \\n// Tourist Operations Specified by ID\\n// \\n// **********************************************************************************\\n\\nconst getTouristDetailsById = (req, res, next) => {\\n var touristId = req.params.touristId;\\n Tourists.findById(touristId).then(tourist => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n tourist: tourist\\n });\\n }, err => {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Could not find tourist with given ID'\\n });\\n }).catch(err => next(err));\\n};\\n\\nconst updateTouristDetailsById = (req, res, next) => {\\n Tourists.findByIdAndUpdate(req.params.touristId, {\\n $set: req.body\\n }, {\\n new: true\\n }).then(tourist => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n tourist: tourist\\n });\\n }, err => {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Could not find tourist with given ID'\\n });\\n }).catch(err => next(err));\\n};\\n\\nconst deleteATouristById = (req, res, next) => {\\n Tourists.findByIdAndRemove(req.params.touristId).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n response: resp\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nexports.getTouristDetailsById = getTouristDetailsById;\\nexports.updateTouristDetailsById = updateTouristDetailsById;\\nexports.deleteATouristById = deleteATouristById;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRvdXJpc3RDb250cm9sbGVyLmpzIl0sIm5hbWVzIjpbIlRvdXJpc3RzIiwicmVxdWlyZSIsInV0aWxzIiwiZ2V0QWxsVG91cmlzdHMiLCJyZXEiLCJyZXMiLCJuZXh0IiwicXVlcnkiLCJmaW5kIiwidGhlbiIsInRvdXJpc3RzIiwic3RhdHVzQ29kZSIsInNldEhlYWRlciIsImpzb24iLCJzdWNjZXNzIiwiZXJyIiwiY2F0Y2giLCJnZXRBbGxUb3VyaXN0c0J5TmFtZSIsImJvZHkiLCJzaW1pbGFyVG8iLCJzZWFyY2hCeSIsIiR0ZXh0IiwiJHNlYXJjaCIsInNvcnRieSIsInNvcnRCeSIsInNvcnQiLCJhZGRUb3VyaXN0IiwicmFuZG9tUGFzc3dvcmQiLCJwYXNzd29yZF9nZW5lcmF0b3IiLCJ0b3VyaXN0IiwidXNlcm5hbWUiLCJlbWFpbCIsImZpcnN0bmFtZSIsImxhc3RuYW1lIiwibW9iaWxlIiwicm9sZSIsInJlZ2lzdGVyIiwibWVzc2FnZSIsInNhdmUiLCJwYXNzd29yZCIsImVycm9yIiwiZGVsZXRlQWxsVG91cmlzdHMiLCJyZW1vdmUiLCJyZXNwIiwicmVzcG9uc2UiLCJleHBvcnRzIiwiZ2V0VG91cmlzdERldGFpbHNCeUlkIiwidG91cmlzdElkIiwicGFyYW1zIiwiZmluZEJ5SWQiLCJ1cGRhdGVUb3VyaXN0RGV0YWlsc0J5SWQiLCJmaW5kQnlJZEFuZFVwZGF0ZSIsIiRzZXQiLCJuZXciLCJkZWxldGVBVG91cmlzdEJ5SWQiLCJmaW5kQnlJZEFuZFJlbW92ZSJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsUUFBUSxHQUFHQyxPQUFPLENBQUMsaUJBQUQsQ0FBeEI7O0FBQ0EsTUFBTUMsS0FBSyxHQUFHRCxPQUFPLENBQUMsZ0JBQUQsQ0FBckIsQyxDQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBLE1BQU1FLGNBQWMsR0FBRyxDQUFDQyxHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUN2QyxNQUFJQyxLQUFLLEdBQUc7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RUFBRTtBQUEzQixLQUFUO0FBQ0gsR0FYTCxFQVlLckIsS0FaTCxDQVlZRCxHQUFELElBQVNULElBQUksQ0FBQ1MsR0FBRCxDQVp4QjtBQWFILENBZkQ7O0FBaUJBLE1BQU11QyxrQkFBa0IsR0FBRyxDQUFDbEQsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDM0NOLEVBQUFBLFFBQVEsQ0FBQ3VELGlCQUFULENBQTJCbkQsR0FBRyxDQUFDNEMsTUFBSixDQUFXRCxTQUF0QyxFQUNLdEMsSUFETCxDQUNXa0MsSUFBRCxJQUFVO0FBQ1p0QyxJQUFBQSxHQUFHLENBQUNNLFVBQUosR0FBaUIsR0FBakI7QUFDQU4sSUFBQUEsR0FBRyxDQUFDTyxTQUFKLENBQWMsY0FBZCxFQUE4QixrQkFBOUI7QUFDQVAsSUFBQUEsR0FBRyxDQUFDUSxJQUFKLENBQVM7QUFBRUMsTUFBQUEsT0FBTyxFQUFFLElBQVg7QUFBaUI4QixNQUFBQSxRQUFRLEVBQUVEO0FBQTNCLEtBQVQ7QUFDSCxHQUxMLEVBS1E1QixHQUFELElBQVNULElBQUksQ0FBQ1MsR0FBRCxDQUxwQixFQU1LQyxLQU5MLENBTVlELEdBQUQsSUFBU1QsSUFBSSxDQUFDUyxHQUFELENBTnhCO0FBT0gsQ0FSRDs7QUFVQThCLE9BQU8sQ0FBQ0MscUJBQVIsR0FBZ0NBLHFCQUFoQztBQUNBRCxPQUFPLENBQUNLLHdCQUFSLEdBQW1DQSx3QkFBbkM7QUFDQUwsT0FBTyxDQUFDUyxrQkFBUixHQUE2QkEsa0JBQTdCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgVG91cmlzdHMgPSByZXF1aXJlKCcuLi9tb2RlbHMvdXNlcnMnKTtcclxuY29uc3QgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscy91dGlscycpO1xyXG5cclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyBcclxuLy8gICAgICAgICAgICAgIFRvdXJpc3QgT3BlcmF0aW9ucyBcclxuLy8gXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbmNvbnN0IGdldEFsbFRvdXJpc3RzID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICB2YXIgcXVlcnkgPSB7IFwicm9sZVwiOiBcInVzZXJcIiB9O1xyXG4gICAgLy8gdmFyIG9iaiA9IE9iamVjdC5hc3NpZ24ocXVlcnksIHsgJHRleHQ6IHsgJHNlYXJjaDogc2VhcmNoQnkgfSB9KTtcclxuICAgICBUb3VyaXN0cy5maW5kKHF1ZXJ5KVxyXG4gICAgICAgIC50aGVuKCh0b3VyaXN0cykgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCB0b3VyaXN0czogdG91cmlzdHMgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpO1xyXG59XHJcblxyXG5jb25zdCBnZXRBbGxUb3VyaXN0c0J5TmFtZSA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgdmFyIHF1ZXJ5ID0geyBcInJvbGVcIjogXCJ1c2VyXCIgfTtcclxuICAgIGlmIChyZXEuYm9keS5zaW1pbGFyVG8pIHtcclxuICAgICAgICB2YXIgc2VhcmNoQnkgPSByZXEuYm9keS5zaW1pbGFyVG8gfHwge31cclxuICAgICAgICBxdWVyeSA9IHsgXCJyb2xlXCI6IFwidXNlclwiLCAkdGV4dDogeyAkc2VhcmNoOiBzZWFyY2hCeSB9IH1cclxuICAgIH1cclxuXHJcbiAgICB2YXIgc29ydGJ5ID0gcmVxLmJvZHkuc29ydEJ5IHx8IHt9O1xyXG4gICAgVG91cmlzdHMuZmluZChxdWVyeSkuc29ydChzb3J0YnkpXHJcbiAgICAgICAgLnRoZW4oKHRvdXJpc3RzKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHRvdXJpc3RzOiB0b3VyaXN0cyB9KTtcclxuICAgICAgICB9LCAoZXJyKSA9PiBuZXh0KGVycikpXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IG5leHQoZXJyKSk7XHJcbn1cclxuXHJcbmNvbnN0IGFkZFRvdXJpc3QgPSBhc3luYyAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIGNvbnN0IHJhbmRvbVBhc3N3b3JkID0gdXRpbHMucGFzc3dvcmRfZ2VuZXJhdG9yKDEwKTtcclxuICAgIHZhciB0b3VyaXN0ID0ge1xyXG4gICAgICAgIHVzZXJuYW1lOiByZXEuYm9keS5lbWFpbCxcclxuICAgICAgICBmaXJzdG5hbWU6IHJlcS5ib2R5LmZpcnN0bmFtZSxcclxuICAgICAgICBsYXN0bmFtZTogcmVxLmJvZHkubGFzdG5hbWUsXHJcbiAgICAgICAgZW1haWw6IHJlcS5ib2R5LmVtYWlsLFxyXG4gICAgICAgIG1vYmlsZTogcmVxLmJvZHkubW9iaWxlLFxyXG4gICAgICAgIHJvbGU6ICd1c2VyJ1xyXG4gICAgfVxyXG4gICAgdHJ5IHtcclxuICAgICAgICBUb3VyaXN0cy5yZWdpc3RlcihuZXcgVG91cmlzdHModG91cmlzdCksXHJcbiAgICAgICAgICAgIHJhbmRvbVBhc3N3b3JkLCAoZXJyLCB0b3VyaXN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IGZhbHNlLCBtZXNzYWdlOiBlcnIubWVzc2FnZSB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRvdXJpc3Quc2F2ZSgoZXJyLCB0b3VyaXN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNTAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IGZhbHNlLCBtZXNzYWdlOiAnRXJyb3Igd2hpbGUgU2F2aW5nIG5ldyB1c2VyLicgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgZW1haWw6IHRvdXJpc3QuZW1haWwsIHBhc3N3b3JkOiByYW5kb21QYXNzd29yZCB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgbmV4dChlcnIpO1xyXG4gICAgfVxyXG59XHJcblxyXG5jb25zdCBkZWxldGVBbGxUb3VyaXN0cyA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgVG91cmlzdHMucmVtb3ZlKHsgXCJyb2xlXCI6IFwidXNlclwiIH0pXHJcbiAgICAgICAgLnRoZW4oKHJlc3ApID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgcmVzcG9uc2U6IHJlc3AgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpO1xyXG59XHJcblxyXG5leHBvcnRzLmdldEFsbFRvdXJpc3RzID0gZ2V0QWxsVG91cmlzdHM7XHJcbmV4cG9ydHMuZ2V0QWxsVG91cmlzdHNCeU5hbWUgPSBnZXRBbGxUb3VyaXN0c0J5TmFtZTtcclxuZXhwb3J0cy5hZGRUb3VyaXN0ID0gYWRkVG91cmlzdDtcclxuZXhwb3J0cy5kZWxldGVBbGxUb3VyaXN0cyA9IGRlbGV0ZUFsbFRvdXJpc3RzO1xyXG5cclxuXHJcblxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbi8vIFxyXG4vLyAgICAgICAgICAgICAgVG91cmlzdCBPcGVyYXRpb25zIFNwZWNpZmllZCBieSBJRFxyXG4vLyBcclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuY29uc3QgZ2V0VG91cmlzdERldGFpbHNCeUlkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICB2YXIgdG91cmlzdElkID0gcmVxLnBhcmFtcy50b3VyaXN0SWQ7XHJcbiAgICBUb3VyaXN0cy5maW5kQnlJZCh0b3VyaXN0SWQpXHJcbiAgICAgICAgLnRoZW4oKHRvdXJpc3QpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgdG91cmlzdDogdG91cmlzdCB9KTtcclxuICAgICAgICB9LCAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNDA0O1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IGZhbHNlLCBtZXNzYWdlOiAnQ291bGQgbm90IGZpbmQgdG91cmlzdCB3aXRoIGdpdmVuIElEJyB9KTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpOyBcclxufVxyXG5cclxuY29uc3QgdXBkYXRlVG91cmlzdERldGFpbHNCeUlkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICBcclxuICAgIFRvdXJpc3RzLmZpbmRCeUlkQW5kVXBkYXRlKHJlcS5wYXJhbXMudG91cmlzdElkLCB7XHJcbiAgICAgICAgJHNldDogcmVxLmJvZHlcclxuICAgIH0sIHsgbmV3OiB0cnVlIH0pXHJcbiAgICAgICAgLnRoZW4oKHRvdXJpc3QpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgdG91cmlzdDogdG91cmlzdCB9KTtcclxuICAgICAgICB9LCAoZXJyKSA9PiAge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwNDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogJ0NvdWxkIG5vdCBmaW5kIHRvdXJpc3Qgd2l0aCBnaXZlbiBJRCcgfSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuY29uc3QgZGVsZXRlQVRvdXJpc3RCeUlkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICBUb3VyaXN0cy5maW5kQnlJZEFuZFJlbW92ZShyZXEucGFyYW1zLnRvdXJpc3RJZClcclxuICAgICAgICAudGhlbigocmVzcCkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCByZXNwb25zZTogcmVzcCB9KTtcclxuICAgICAgICB9LCAoZXJyKSA9PiBuZXh0KGVycikpXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IG5leHQoZXJyKSk7XHJcbn1cclxuXHJcbmV4cG9ydHMuZ2V0VG91cmlzdERldGFpbHNCeUlkID0gZ2V0VG91cmlzdERldGFpbHNCeUlkO1xyXG5leHBvcnRzLnVwZGF0ZVRvdXJpc3REZXRhaWxzQnlJZCA9IHVwZGF0ZVRvdXJpc3REZXRhaWxzQnlJZDtcclxuZXhwb3J0cy5kZWxldGVBVG91cmlzdEJ5SWQgPSBkZWxldGVBVG91cmlzdEJ5SWQ7XHJcblxyXG5cclxuIl19\",\"originalCode\":\"const Tourists = require('../models/users');\\r\\nconst utils = require('../utils/utils');\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Tourist Operations \\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nconst getAllTourists = (req, res, next) => {\\r\\n var query = { \\\"role\\\": \\\"user\\\" };\\r\\n // var obj = Object.assign(query, { $text: { $search: searchBy } });\\r\\n Tourists.find(query)\\r\\n .then((tourists) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, tourists: tourists });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst getAllTouristsByName = (req, res, next) => {\\r\\n var query = { \\\"role\\\": \\\"user\\\" };\\r\\n if (req.body.similarTo) {\\r\\n var searchBy = req.body.similarTo || {}\\r\\n query = { \\\"role\\\": \\\"user\\\", $text: { $search: searchBy } }\\r\\n }\\r\\n\\r\\n var sortby = req.body.sortBy || {};\\r\\n Tourists.find(query).sort(sortby)\\r\\n .then((tourists) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, tourists: tourists });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst addTourist = async (req, res, next) => {\\r\\n const randomPassword = utils.password_generator(10);\\r\\n var tourist = {\\r\\n username: req.body.email,\\r\\n firstname: req.body.firstname,\\r\\n lastname: req.body.lastname,\\r\\n email: req.body.email,\\r\\n mobile: req.body.mobile,\\r\\n role: 'user'\\r\\n }\\r\\n try {\\r\\n Tourists.register(new Tourists(tourist),\\r\\n randomPassword, (err, tourist) => {\\r\\n if (err) {\\r\\n res.statusCode = 403;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: err.message });\\r\\n }\\r\\n else {\\r\\n tourist.save((err, tourist) => {\\r\\n if (err) {\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Error while Saving new user.' });\\r\\n }\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, email: tourist.email, password: randomPassword });\\r\\n });\\r\\n }\\r\\n });\\r\\n } catch (error) {\\r\\n next(err);\\r\\n }\\r\\n}\\r\\n\\r\\nconst deleteAllTourists = (req, res, next) => {\\r\\n Tourists.remove({ \\\"role\\\": \\\"user\\\" })\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, response: resp });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nexports.getAllTourists = getAllTourists;\\r\\nexports.getAllTouristsByName = getAllTouristsByName;\\r\\nexports.addTourist = addTourist;\\r\\nexports.deleteAllTourists = deleteAllTourists;\\r\\n\\r\\n\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Tourist Operations Specified by ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nconst getTouristDetailsById = (req, res, next) => {\\r\\n var touristId = req.params.touristId;\\r\\n Tourists.findById(touristId)\\r\\n .then((tourist) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, tourist: tourist });\\r\\n }, (err) => {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Could not find tourist with given ID' });\\r\\n })\\r\\n .catch((err) => next(err)); \\r\\n}\\r\\n\\r\\nconst updateTouristDetailsById = (req, res, next) => {\\r\\n \\r\\n Tourists.findByIdAndUpdate(req.params.touristId, {\\r\\n $set: req.body\\r\\n }, { new: true })\\r\\n .then((tourist) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, tourist: tourist });\\r\\n }, (err) => {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Could not find tourist with given ID' });\\r\\n })\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst deleteATouristById = (req, res, next) => {\\r\\n Tourists.findByIdAndRemove(req.params.touristId)\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, response: resp });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nexports.getTouristDetailsById = getTouristDetailsById;\\r\\nexports.updateTouristDetailsById = updateTouristDetailsById;\\r\\nexports.deleteATouristById = deleteATouristById;\\r\\n\\r\\n\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/ff/touristController_ff3455758448d6e0c4e2be11f313067b.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2546\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\touristController.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":20391,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":20388,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"getAllTourists\",\"ranges\":[{\"startOffset\":417,\"endOffset\":790,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getAllTouristsByName\",\"ranges\":[{\"startOffset\":822,\"endOffset\":1347,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"addTourist\",\"ranges\":[{\"startOffset\":1369,\"endOffset\":2534,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"deleteAllTourists\",\"ranges\":[{\"startOffset\":2563,\"endOffset\":2839,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getTouristDetailsById\",\"ranges\":[{\"startOffset\":3278,\"endOffset\":3762,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"updateTouristDetailsById\",\"ranges\":[{\"startOffset\":3798,\"endOffset\":4309,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"deleteATouristById\",\"ranges\":[{\"startOffset\":4339,\"endOffset\":4622,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const express = require('express');\\n\\nconst bodyParser = require('body-parser');\\n\\nconst cors = require('./cors');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nconst dashboardController = require('../controllers/dashboardController');\\n\\nconst dashboardRouter = express.Router();\\ndashboardRouter.use(bodyParser.json());\\ndashboardRouter.route('/admin').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, authenticate.verifyAdmin, dashboardController.getDashboard);\\nmodule.exports = dashboardRouter;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRhc2hib2FyZFJvdXRlci5qcyJdLCJuYW1lcyI6WyJleHByZXNzIiwicmVxdWlyZSIsImJvZHlQYXJzZXIiLCJjb3JzIiwiYXV0aGVudGljYXRlIiwiZGFzaGJvYXJkQ29udHJvbGxlciIsImRhc2hib2FyZFJvdXRlciIsIlJvdXRlciIsInVzZSIsImpzb24iLCJyb3V0ZSIsIm9wdGlvbnMiLCJjb3JzV2l0aE9wdGlvbnMiLCJyZXEiLCJyZXMiLCJzZW5kU3RhdHVzIiwiZ2V0IiwidmVyaWZ5VXNlciIsInZlcmlmeUFkbWluIiwiZ2V0RGFzaGJvYXJkIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsT0FBTyxHQUFHQyxPQUFPLENBQUMsU0FBRCxDQUF2Qjs7QUFDQSxNQUFNQyxVQUFVLEdBQUdELE9BQU8sQ0FBQyxhQUFELENBQTFCOztBQUVBLE1BQU1FLElBQUksR0FBR0YsT0FBTyxDQUFDLFFBQUQsQ0FBcEI7O0FBQ0EsSUFBSUcsWUFBWSxHQUFHSCxPQUFPLENBQUMsNEJBQUQsQ0FBMUI7O0FBQ0EsTUFBTUksbUJBQW1CLEdBQUdKLE9BQU8sQ0FBQyxvQ0FBRCxDQUFuQzs7QUFFQSxNQUFNSyxlQUFlLEdBQUdOLE9BQU8sQ0FBQ08sTUFBUixFQUF4QjtBQUVBRCxlQUFlLENBQUNFLEdBQWhCLENBQW9CTixVQUFVLENBQUNPLElBQVgsRUFBcEI7QUFFQUgsZUFBZSxDQUFDSSxLQUFoQixDQUFzQixRQUF0QixFQUNLQyxPQURMLENBQ2FSLElBQUksQ0FBQ1MsZUFEbEIsRUFDbUMsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEtBQWM7QUFBRUEsRUFBQUEsR0FBRyxDQUFDQyxVQUFKLENBQWUsR0FBZjtBQUFzQixDQUR6RSxFQUVLQyxHQUZMLENBRVNiLElBQUksQ0FBQ0EsSUFGZCxFQUVtQkMsWUFBWSxDQUFDYSxVQUZoQyxFQUU0Q2IsWUFBWSxDQUFDYyxXQUZ6RCxFQUVzRWIsbUJBQW1CLENBQUNjLFlBRjFGO0FBSUFDLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQmYsZUFBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBleHByZXNzID0gcmVxdWlyZSgnZXhwcmVzcycpO1xyXG5jb25zdCBib2R5UGFyc2VyID0gcmVxdWlyZSgnYm9keS1wYXJzZXInKTtcclxuXHJcbmNvbnN0IGNvcnMgPSByZXF1aXJlKCcuL2NvcnMnKTtcclxudmFyIGF1dGhlbnRpY2F0ZSA9IHJlcXVpcmUoJy4uL21pZGRsZXdhcmUvYXV0aGVudGljYXRlJyk7XHJcbmNvbnN0IGRhc2hib2FyZENvbnRyb2xsZXIgPSByZXF1aXJlKCcuLi9jb250cm9sbGVycy9kYXNoYm9hcmRDb250cm9sbGVyJyk7XHJcblxyXG5jb25zdCBkYXNoYm9hcmRSb3V0ZXIgPSBleHByZXNzLlJvdXRlcigpO1xyXG5cclxuZGFzaGJvYXJkUm91dGVyLnVzZShib2R5UGFyc2VyLmpzb24oKSk7XHJcblxyXG5kYXNoYm9hcmRSb3V0ZXIucm91dGUoJy9hZG1pbicpXHJcbiAgICAub3B0aW9ucyhjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcbiAgICAuZ2V0KGNvcnMuY29ycyxhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeUFkbWluLCBkYXNoYm9hcmRDb250cm9sbGVyLmdldERhc2hib2FyZCk7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IGRhc2hib2FyZFJvdXRlcjsiXX0=\",\"originalCode\":\"const express = require('express');\\r\\nconst bodyParser = require('body-parser');\\r\\n\\r\\nconst cors = require('./cors');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\nconst dashboardController = require('../controllers/dashboardController');\\r\\n\\r\\nconst dashboardRouter = express.Router();\\r\\n\\r\\ndashboardRouter.use(bodyParser.json());\\r\\n\\r\\ndashboardRouter.route('/admin')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors,authenticate.verifyUser, authenticate.verifyAdmin, dashboardController.getDashboard);\\r\\n\\r\\nmodule.exports = dashboardRouter;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/07/dashboardRouter_0791a49f2f45fc0f57ade98f27175c5c.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2547\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\dashboardRouter.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":2824,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":2821,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":482,\"endOffset\":522,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const Place = require('../models/visitingPlaces');\\n\\nconst User = require('../models/users');\\n\\nconst Schedule = require('../models/schedules');\\n\\nexports.getDashboard = async (req, res, next) => {\\n try {\\n const users_count = (await User.find().countDocuments()) - 1;\\n const tourist_count_total = await User.find({\\n \\\"role\\\": \\\"user\\\"\\n }).countDocuments();\\n const assistant_count_total = await User.find({\\n \\\"role\\\": \\\"moderater\\\"\\n }).countDocuments();\\n const tourist_count_in = await User.find({\\n \\\"role\\\": \\\"user\\\",\\n \\\"userstate\\\": \\\"in\\\"\\n }).countDocuments();\\n const place_count = await Place.find().countDocuments();\\n const place_names = await Place.find({}, {\\n _id: 0,\\n name: 1\\n });\\n const place_locations = await Place.find({}, {\\n _id: 0,\\n \\\"location.coordinates\\\": 1\\n });\\n var locations = [];\\n place_locations.forEach(element => {\\n var longitude = element.location.coordinates[0];\\n var latitude = element.location.coordinates[1];\\n locations.push({\\n longitude,\\n latitude\\n });\\n });\\n const schedules_count_total = await Schedule.find().countDocuments();\\n const schedules_count_new = await Schedule.find({\\n \\\"state\\\": \\\"new\\\"\\n }).countDocuments();\\n const schedules_count_canceled = await Schedule.find({\\n \\\"state\\\": \\\"cancled\\\"\\n }).countDocuments();\\n const schedules_count_notcompleted = await Schedule.find({\\n \\\"state\\\": \\\"notcompleted\\\"\\n }).countDocuments();\\n const schedules_count_completed = await Schedule.find({\\n \\\"state\\\": \\\"completed\\\"\\n }).countDocuments();\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n dashboardValues: {\\n users_count: users_count,\\n tourist_count_total: tourist_count_total,\\n assistant_count_total: assistant_count_total,\\n tourist_count_in: tourist_count_in,\\n place_count: place_count,\\n place_names: place_names,\\n place_locations: locations,\\n schedules_count_total: schedules_count_total,\\n schedules_count_new: schedules_count_new,\\n schedules_count_canceled: schedules_count_canceled,\\n schedules_count_notcompleted: schedules_count_notcompleted,\\n schedules_count_completed: schedules_count_completed\\n }\\n });\\n } catch (err) {\\n next(err);\\n }\\n};\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRhc2hib2FyZENvbnRyb2xsZXIuanMiXSwibmFtZXMiOlsiUGxhY2UiLCJyZXF1aXJlIiwiVXNlciIsIlNjaGVkdWxlIiwiZXhwb3J0cyIsImdldERhc2hib2FyZCIsInJlcSIsInJlcyIsIm5leHQiLCJ1c2Vyc19jb3VudCIsImZpbmQiLCJjb3VudERvY3VtZW50cyIsInRvdXJpc3RfY291bnRfdG90YWwiLCJhc3Npc3RhbnRfY291bnRfdG90YWwiLCJ0b3VyaXN0X2NvdW50X2luIiwicGxhY2VfY291bnQiLCJwbGFjZV9uYW1lcyIsIl9pZCIsIm5hbWUiLCJwbGFjZV9sb2NhdGlvbnMiLCJsb2NhdGlvbnMiLCJmb3JFYWNoIiwiZWxlbWVudCIsImxvbmdpdHVkZSIsImxvY2F0aW9uIiwiY29vcmRpbmF0ZXMiLCJsYXRpdHVkZSIsInB1c2giLCJzY2hlZHVsZXNfY291bnRfdG90YWwiLCJzY2hlZHVsZXNfY291bnRfbmV3Iiwic2NoZWR1bGVzX2NvdW50X2NhbmNlbGVkIiwic2NoZWR1bGVzX2NvdW50X25vdGNvbXBsZXRlZCIsInNjaGVkdWxlc19jb3VudF9jb21wbGV0ZWQiLCJzdGF0dXNDb2RlIiwic2V0SGVhZGVyIiwianNvbiIsInN1Y2Nlc3MiLCJkYXNoYm9hcmRWYWx1ZXMiLCJlcnIiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLEtBQUssR0FBR0MsT0FBTyxDQUFDLDBCQUFELENBQXJCOztBQUNBLE1BQU1DLElBQUksR0FBR0QsT0FBTyxDQUFDLGlCQUFELENBQXBCOztBQUNBLE1BQU1FLFFBQVEsR0FBR0YsT0FBTyxDQUFDLHFCQUFELENBQXhCOztBQUVBRyxPQUFPLENBQUNDLFlBQVIsR0FBdUIsT0FBT0MsR0FBUCxFQUFZQyxHQUFaLEVBQWlCQyxJQUFqQixLQUEwQjtBQUM3QyxNQUFJO0FBQ0EsVUFBTUMsV0FBVyxHQUFHLE9BQU1QLElBQUksQ0FBQ1EsSUFBTCxHQUFZQyxjQUFaLEVBQU4sSUFBcUMsQ0FBekQ7QUFDQSxVQUFNQyxtQkFB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QUFFQSw0QkFYRjtBQVk1QkMsUUFBQUEseUJBQXlCLEVBQUVBO0FBWkM7QUFEM0IsS0FBVDtBQWdCSCxHQXRDRCxDQXNDRSxPQUFPTSxHQUFQLEVBQVk7QUFDVjlCLElBQUFBLElBQUksQ0FBQzhCLEdBQUQsQ0FBSjtBQUNIO0FBQ0osQ0ExQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBQbGFjZSA9IHJlcXVpcmUoJy4uL21vZGVscy92aXNpdGluZ1BsYWNlcycpO1xyXG5jb25zdCBVc2VyID0gcmVxdWlyZSgnLi4vbW9kZWxzL3VzZXJzJyk7XHJcbmNvbnN0IFNjaGVkdWxlID0gcmVxdWlyZSgnLi4vbW9kZWxzL3NjaGVkdWxlcycpO1xyXG5cclxuZXhwb3J0cy5nZXREYXNoYm9hcmQgPSBhc3luYyAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgICAgY29uc3QgdXNlcnNfY291bnQgPSBhd2FpdCBVc2VyLmZpbmQoKS5jb3VudERvY3VtZW50cygpIC0gMTtcclxuICAgICAgICBjb25zdCB0b3VyaXN0X2NvdW50X3RvdGFsID0gYXdhaXQgVXNlci5maW5kKHsgXCJyb2xlXCI6IFwidXNlclwiIH0pLmNvdW50RG9jdW1lbnRzKCk7XHJcbiAgICAgICAgY29uc3QgYXNzaXN0YW50X2NvdW50X3RvdGFsID0gYXdhaXQgVXNlci5maW5kKHsgXCJyb2xlXCI6IFwibW9kZXJhdGVyXCIgfSkuY291bnREb2N1bWVudHMoKTtcclxuICAgICAgICBjb25zdCB0b3VyaXN0X2NvdW50X2luID0gYXdhaXQgVXNlci5maW5kKHsgXCJyb2xlXCI6IFwidXNlclwiLCBcInVzZXJzdGF0ZVwiOiBcImluXCIgfSkuY291bnREb2N1bWVudHMoKTtcclxuICAgICAgICBjb25zdCBwbGFjZV9jb3VudCA9IGF3YWl0IFBsYWNlLmZpbmQoKS5jb3VudERvY3VtZW50cygpO1xyXG4gICAgICAgIGNvbnN0IHBsYWNlX25hbWVzID0gYXdhaXQgUGxhY2UuZmluZCh7fSwgeyBfaWQ6IDAsIG5hbWU6IDEgfSk7XHJcbiAgICAgICAgY29uc3QgcGxhY2VfbG9jYXRpb25zID0gYXdhaXQgUGxhY2UuZmluZCh7fSwgeyBfaWQ6IDAsIFwibG9jYXRpb24uY29vcmRpbmF0ZXNcIjogMSB9KTtcclxuICAgICAgICB2YXIgbG9jYXRpb25zID0gW107XHJcbiAgICAgICAgcGxhY2VfbG9jYXRpb25zLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICAgIHZhciBsb25naXR1ZGUgPSBlbGVtZW50LmxvY2F0aW9uLmNvb3JkaW5hdGVzWzBdO1xyXG4gICAgICAgICAgICB2YXIgbGF0aXR1ZGUgPSBlbGVtZW50LmxvY2F0aW9uLmNvb3JkaW5hdGVzWzFdO1xyXG4gICAgICAgICAgICBsb2NhdGlvbnMucHVzaCh7IGxvbmdpdHVkZSwgbGF0aXR1ZGUgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgY29uc3Qgc2NoZWR1bGVzX2NvdW50X3RvdGFsID0gYXdhaXQgU2NoZWR1bGUuZmluZCgpLmNvdW50RG9jdW1lbnRzKCk7XHJcbiAgICAgICAgY29uc3Qgc2NoZWR1bGVzX2NvdW50X25ldyA9IGF3YWl0IFNjaGVkdWxlLmZpbmQoeyBcInN0YXRlXCI6IFwibmV3XCIgfSkuY291bnREb2N1bWVudHMoKTtcclxuICAgICAgICBjb25zdCBzY2hlZHVsZXNfY291bnRfY2FuY2VsZWQgPSBhd2FpdCBTY2hlZHVsZS5maW5kKHsgXCJzdGF0ZVwiOiBcImNhbmNsZWRcIiB9KS5jb3VudERvY3VtZW50cygpO1xyXG4gICAgICAgIGNvbnN0IHNjaGVkdWxlc19jb3VudF9ub3Rjb21wbGV0ZWQgPSBhd2FpdCBTY2hlZHVsZS5maW5kKHsgXCJzdGF0ZVwiOiBcIm5vdGNvbXBsZXRlZFwiIH0pLmNvdW50RG9jdW1lbnRzKCk7XHJcbiAgICAgICAgY29uc3Qgc2NoZWR1bGVzX2NvdW50X2NvbXBsZXRlZCA9IGF3YWl0IFNjaGVkdWxlLmZpbmQoeyBcInN0YXRlXCI6IFwiY29tcGxldGVkXCIgfSkuY291bnREb2N1bWVudHMoKTtcclxuXHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICByZXMuanNvbih7XHJcbiAgICAgICAgICAgIHN1Y2Nlc3M6IHRydWUsIGRhc2hib2FyZFZhbHVlczoge1xyXG4gICAgICAgICAgICAgICAgdXNlcnNfY291bnQ6IHVzZXJzX2NvdW50LFxyXG4gICAgICAgICAgICAgICAgdG91cmlzdF9jb3VudF90b3RhbDogdG91cmlzdF9jb3VudF90b3RhbCxcclxuICAgICAgICAgICAgICAgIGFzc2lzdGFudF9jb3VudF90b3RhbDogYXNzaXN0YW50X2NvdW50X3RvdGFsLFxyXG4gICAgICAgICAgICAgICAgdG91cmlzdF9jb3VudF9pbjogdG91cmlzdF9jb3VudF9pbixcclxuICAgICAgICAgICAgICAgIHBsYWNlX2NvdW50OiBwbGFjZV9jb3VudCxcclxuICAgICAgICAgICAgICAgIHBsYWNlX25hbWVzOiBwbGFjZV9uYW1lcyxcclxuICAgICAgICAgICAgICAgIHBsYWNlX2xvY2F0aW9uczogbG9jYXRpb25zLFxyXG4gICAgICAgICAgICAgICAgc2NoZWR1bGVzX2NvdW50X3RvdGFsOiBzY2hlZHVsZXNfY291bnRfdG90YWwsXHJcbiAgICAgICAgICAgICAgICBzY2hlZHVsZXNfY291bnRfbmV3OiBzY2hlZHVsZXNfY291bnRfbmV3LFxyXG4gICAgICAgICAgICAgICAgc2NoZWR1bGVzX2NvdW50X2NhbmNlbGVkOiBzY2hlZHVsZXNfY291bnRfY2FuY2VsZWQsXHJcbiAgICAgICAgICAgICAgICBzY2hlZHVsZXNfY291bnRfbm90Y29tcGxldGVkOiBzY2hlZHVsZXNfY291bnRfbm90Y29tcGxldGVkLFxyXG4gICAgICAgICAgICAgICAgc2NoZWR1bGVzX2NvdW50X2NvbXBsZXRlZDogc2NoZWR1bGVzX2NvdW50X2NvbXBsZXRlZFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICBuZXh0KGVycik7XHJcbiAgICB9XHJcbn1cclxuXHJcbiJdfQ==\",\"originalCode\":\"const Place = require('../models/visitingPlaces');\\r\\nconst User = require('../models/users');\\r\\nconst Schedule = require('../models/schedules');\\r\\n\\r\\nexports.getDashboard = async (req, res, next) => {\\r\\n try {\\r\\n const users_count = await User.find().countDocuments() - 1;\\r\\n const tourist_count_total = await User.find({ \\\"role\\\": \\\"user\\\" }).countDocuments();\\r\\n const assistant_count_total = await User.find({ \\\"role\\\": \\\"moderater\\\" }).countDocuments();\\r\\n const tourist_count_in = await User.find({ \\\"role\\\": \\\"user\\\", \\\"userstate\\\": \\\"in\\\" }).countDocuments();\\r\\n const place_count = await Place.find().countDocuments();\\r\\n const place_names = await Place.find({}, { _id: 0, name: 1 });\\r\\n const place_locations = await Place.find({}, { _id: 0, \\\"location.coordinates\\\": 1 });\\r\\n var locations = [];\\r\\n place_locations.forEach(element => {\\r\\n var longitude = element.location.coordinates[0];\\r\\n var latitude = element.location.coordinates[1];\\r\\n locations.push({ longitude, latitude });\\r\\n });\\r\\n const schedules_count_total = await Schedule.find().countDocuments();\\r\\n const schedules_count_new = await Schedule.find({ \\\"state\\\": \\\"new\\\" }).countDocuments();\\r\\n const schedules_count_canceled = await Schedule.find({ \\\"state\\\": \\\"cancled\\\" }).countDocuments();\\r\\n const schedules_count_notcompleted = await Schedule.find({ \\\"state\\\": \\\"notcompleted\\\" }).countDocuments();\\r\\n const schedules_count_completed = await Schedule.find({ \\\"state\\\": \\\"completed\\\" }).countDocuments();\\r\\n\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({\\r\\n success: true, dashboardValues: {\\r\\n users_count: users_count,\\r\\n tourist_count_total: tourist_count_total,\\r\\n assistant_count_total: assistant_count_total,\\r\\n tourist_count_in: tourist_count_in,\\r\\n place_count: place_count,\\r\\n place_names: place_names,\\r\\n place_locations: locations,\\r\\n schedules_count_total: schedules_count_total,\\r\\n schedules_count_new: schedules_count_new,\\r\\n schedules_count_canceled: schedules_count_canceled,\\r\\n schedules_count_notcompleted: schedules_count_notcompleted,\\r\\n schedules_count_completed: schedules_count_completed\\r\\n }\\r\\n });\\r\\n } catch (err) {\\r\\n next(err);\\r\\n }\\r\\n}\\r\\n\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/34/dashboardController_34872bbac017cfae6fcc33926d204118.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2548\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\dashboardController.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":9854,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":9851,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
.exports.getDashboard\",\"ranges\":[{\"startOffset\":256,\"endOffset\":2463,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const app = require('../../app');\\n\\nconst server = require(\\\"supertest\\\")(app);\\n\\nconst jwt_decode = require('jwt-decode');\\n\\nconst Users = require('../../models/users');\\n\\nvar userToken;\\nvar assistantToken;\\nvar adminToken;\\nvar passwordAssistant;\\nvar passwordUser;\\nconst admin = {\\n \\\"firstname\\\": \\\"Admin\\\",\\n \\\"lastname\\\": \\\"Admin\\\",\\n \\\"email\\\": \\\"admin@gmail.com\\\",\\n \\\"password\\\": \\\"admin-password\\\"\\n};\\nconst assistant = {\\n \\\"firstname\\\": \\\"Pasan\\\",\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\n \\\"email\\\": \\\"pasanFernamdo@gmail.com\\\"\\n};\\nconst tourist = {\\n \\\"firstname\\\": \\\"Sunil\\\",\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\n \\\"email\\\": \\\"sunilFernamdo@gmail.com\\\"\\n};\\n\\nconst signupAdmin = async () => {\\n await Users.deleteMany({});\\n await server.post(\\\"/users/signup/admin\\\").send(admin);\\n};\\n\\nconst getAdminToken = async () => {\\n if (adminToken) {\\n return adminToken;\\n }\\n\\n await signupAdmin();\\n var creds = {\\n username: admin.email,\\n password: admin.password\\n };\\n const response = await server.post(\\\"/users/login\\\").send(creds);\\n adminToken = response.body.token;\\n return adminToken;\\n};\\n\\nconst addAssistant = async () => {\\n if (!adminToken) {\\n await getAdminToken();\\n }\\n\\n const response = await server.post(\\\"/employees\\\").set(\\\"Authorization\\\", `Bearer ${adminToken}`).send(assistant).expect(200);\\n passwordAssistant = response.body.password;\\n};\\n\\nconst getAssistantToken = async () => {\\n if (assistantToken) {\\n return assistantToken;\\n }\\n\\n if (passwordAssistant == null) {\\n await addAssistant();\\n }\\n\\n var creds = {\\n username: assistant.email,\\n password: passwordAssistant\\n };\\n const response = await server.post(\\\"/users/login\\\").send(creds);\\n assistantToken = response.body.token;\\n return assistantToken;\\n};\\n\\nconst addTourist = async () => {\\n if (!assistantToken) {\\n await getAssistantToken();\\n }\\n\\n const response = await server.post(\\\"/tourists\\\").set(\\\"Authorization\\\", `Bearer ${assistantToken}`).send(tourist).expect(200);\\n passwordUser = response.body.password;\\n};\\n\\nconst getTouristToken = async () => {\\n if (userToken) {\\n return userToken;\\n }\\n\\n if (passwordUser == null) {\\n await addTourist();\\n }\\n\\n var creds = {\\n username: tourist.email,\\n password: passwordUser\\n };\\n const response = await server.post(\\\"/users/login\\\").send(creds);\\n userToken = response.body.token;\\n return userToken;\\n};\\n\\nconst getExistingId = async () => {\\n const newTourist = {\\n \\\"firstname\\\": \\\"Namal\\\",\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\n \\\"email\\\": \\\"namalfernamdo@gmail.com\\\",\\n \\\"mobile\\\": \\\"981114844\\\",\\n \\\"rommnumber\\\": \\\"41\\\"\\n };\\n const tourist = new Users(newTourist);\\n await tourist.save();\\n return tourist._id.toString();\\n};\\n\\nconst getNonExistingId = async () => {\\n const newTourist = {\\n \\\"firstname\\\": \\\"Kamal\\\",\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\n \\\"email\\\": \\\"kamalfernamdo@gmail.com\\\",\\n \\\"username\\\": \\\"kamalfernamdo@gmail.com\\\"\\n };\\n const tourist = new Users(newTourist);\\n await tourist.save();\\n await tourist.remove();\\n return tourist._id.toString();\\n};\\n\\nconst getExistingIdAssistanct = async () => {\\n const newAssistant = {\\n \\\"firstname\\\": \\\"Kasun\\\",\\n \\\"lastname\\\": \\\"Perera\\\",\\n \\\"email\\\": \\\"kasun@gmail.com\\\"\\n };\\n const assistant = new Users(newAssistant);\\n await assistant.save();\\n return assistant._id.toString();\\n};\\n\\nconst getNonExistingIdAssistant = async () => {\\n const newAssistant = {\\n \\\"firstname\\\": \\\"Kamal\\\",\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\n \\\"email\\\": \\\"kamalfernamdo@gmail.com\\\"\\n };\\n const assistant = new Users(newAssistant);\\n await assistant.save();\\n await assistant.remove();\\n return assistant._id.toString();\\n};\\n\\nconst decodeToken = token => {\\n var decoded = jwt_decode(token);\\n return decoded;\\n};\\n\\nmodule.exports = {\\n getAdminToken,\\n getAssistantToken,\\n getTouristToken,\\n decodeToken,\\n addTourist,\\n getTouristToken,\\n getExistingId,\\n getNonExistingId,\\n getExistingIdAssistanct,\\n getNonExistingIdAssistant,\\n addAssistant\\n};\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVzZXJfaGVscGVyLmpzIl0sIm5hbWVzIjpbImFwcCIsInJlcXVpcmUiLCJzZXJ2ZXIiLCJqd3RfZGVjb2RlIiwiVXNlcnMiLCJ1c2VyVG9rZW4iLCJhc3Npc3RhbnRUb2tlbiIsImFkbWluVG9rZW4iLCJwYXNzd29yZEFzc2lzdGFudCIsInBhc3N3b3JkVXNlciIsImFkbWluIiwiYXNzaXN0YW50IiwidG91cmlzdCIsInNpZ251cEFkbWluIiwiZGVsZXRlTWFueSIsInBvc3QiLCJzZW5kIiwiZ2V0QWRtaW5Ub2tlbiIsImNyZWRzIiwidXNlcm5hbWUiLCJlbWFpbCIsInBhc3N3b3JkIiwicmVzcG9uc2UiLCJib2R5IiwidG9rZW4iLCJhZGRBc3Npc3RhbnQiLCJzZXQiLCJleHBlY3QiLCJnZXRBc3Npc3RhbnRUb2tlbiIsImFkZFRvdXJpc3QiLCJnZXRUb3VyaXN0VG9rZW4iLCJnZXRFeGlzdGluZ0lkIiwibmV3VG91cmlzdCIsInNhdmUiLCJfaWQiLCJ0b1N0cmluZyIsImdldE5vbkV4aXN0aW5nSWQiLCJyZW1vdmUiLCJnZXRFeGlzdGluZ0lkQXNzaXN0YW5jdCIsIm5ld0Fzc2lzdGFudCIsImdldE5vbkV4aXN0aW5nSWRBc3Npc3RhbnQiLCJkZWNvZGVUb2tlbiIsImRlY29kZWQiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxHQUFHLEdBQUdDLE9BQU8sQ0FBQyxXQUFELENBQW5COztBQUNBLE1BQU1DLE1BQU0sR0FBR0QsT0FBTyxDQUFDLFdBQUQsQ0FBUCxDQUFxQkQsR0FBckIsQ0FBZjs7QUFDQSxNQUFNRyxVQUFVLEdBQUdGLE9BQU8sQ0FBQyxZQUFELENBQTFCOztBQUNBLE1BQU1HLEtBQUssR0FBR0gsT0FBTyxDQUFDLG9CQUFELENBQXJCOztBQUVBLElBQUlJLFNBQUo7QUFDQSxJQUFJQyxjQUFKO0FBQ0EsSUFBSUMsVUFBSjtBQUNBLElBQUlDLGlCQUFKO0FBQ0EsSUFBSUMsWUFBSjtBQUVBLE1BQU1DLEtB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dGVudCI6WyJjb25zdCBhcHAgPSByZXF1aXJlKCcuLi8uLi9hcHAnKTtcclxuY29uc3Qgc2VydmVyID0gcmVxdWlyZShcInN1cGVydGVzdFwiKShhcHApO1xyXG5jb25zdCBqd3RfZGVjb2RlID0gcmVxdWlyZSgnand0LWRlY29kZScpO1xyXG5jb25zdCBVc2VycyA9IHJlcXVpcmUoJy4uLy4uL21vZGVscy91c2VycycpO1xyXG5cclxudmFyIHVzZXJUb2tlbjtcclxudmFyIGFzc2lzdGFudFRva2VuO1xyXG52YXIgYWRtaW5Ub2tlbjtcclxudmFyIHBhc3N3b3JkQXNzaXN0YW50O1xyXG52YXIgcGFzc3dvcmRVc2VyO1xyXG5cclxuY29uc3QgYWRtaW4gPSB7XHJcbiAgICBcImZpcnN0bmFtZVwiOiBcIkFkbWluXCIsXHJcbiAgICBcImxhc3RuYW1lXCI6IFwiQWRtaW5cIixcclxuICAgIFwiZW1haWxcIjogXCJhZG1pbkBnbWFpbC5jb21cIixcclxuICAgIFwicGFzc3dvcmRcIjogXCJhZG1pbi1wYXNzd29yZFwiXHJcbn07XHJcbmNvbnN0IGFzc2lzdGFudCA9IHtcclxuICAgIFwiZmlyc3RuYW1lXCI6IFwiUGFzYW5cIixcclxuICAgIFwibGFzdG5hbWVcIjogXCJGZXJuYW1kb1wiLFxyXG4gICAgXCJlbWFpbFwiOiBcInBhc2FuRmVybmFtZG9AZ21haWwuY29tXCJcclxufTtcclxuY29uc3QgdG91cmlzdCA9IHtcclxuICAgIFwiZmlyc3RuYW1lXCI6IFwiU3VuaWxcIixcclxuICAgIFwibGFzdG5hbWVcIjogXCJGZXJuYW1kb1wiLFxyXG4gICAgXCJlbWFpbFwiOiBcInN1bmlsRmVybmFtZG9AZ21haWwuY29tXCJcclxufTtcclxuXHJcbmNvbnN0IHNpZ251cEFkbWluID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgYXdhaXQgVXNlcnMuZGVsZXRlTWFueSh7fSk7XHJcbiAgICBhd2FpdCBzZXJ2ZXJcclxuICAgICAgICAucG9zdChcIi91c2Vycy9zaWdudXAvYWRtaW5cIilcclxuICAgICAgICAuc2VuZChhZG1pbik7XHJcbn07XHJcblxyXG5jb25zdCBnZXRBZG1pblRva2VuID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgaWYgKGFkbWluVG9rZW4pIHtcclxuICAgICAgICByZXR1cm4gYWRtaW5Ub2tlbjtcclxuICAgIH1cclxuICAgIGF3YWl0IHNpZ251cEFkbWluKCk7XHJcbiAgICB2YXIgY3JlZHMgPSB7XHJcbiAgICAgICAgdXNlcm5hbWU6IGFkbWluLmVtYWlsLFxyXG4gICAgICAgIHBhc3N3b3JkOiBhZG1pbi5wYXNzd29yZCxcclxuICAgIH07XHJcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHNlcnZlclxyXG4gICAgICAgIC5wb3N0KFwiL3VzZXJzL2xvZ2luXCIpXHJcbiAgICAgICAgLnNlbmQoY3JlZHMpO1xyXG4gICAgYWRtaW5Ub2tlbiA9IHJlc3BvbnNlLmJvZHkudG9rZW47XHJcbiAgICByZXR1cm4gYWRtaW5Ub2tlbjtcclxufVxyXG5cclxuY29uc3QgYWRkQXNzaXN0YW50ID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgaWYgKCFhZG1pblRva2VuKSB7XHJcbiAgICAgICAgYXdhaXQgZ2V0QWRtaW5Ub2tlbigpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBzZXJ2ZXJcclxuICAgICAgICAucG9zdChcIi9lbXBsb3llZXNcIilcclxuICAgICAgICAuc2V0KFwiQXV0aG9yaXphdGlvblwiLCBgQmVhcmVyICR7YWRtaW5Ub2tlbn1gKVxyXG4gICAgICAgIC5zZW5kKGFzc2lzdGFudClcclxuICAgICAgICAuZXhwZWN0KDIwMCk7XHJcbiAgICAgICAgICAgXHJcbiAgICBwYXNzd29yZEFzc2lzdGFudCA9ICByZXNwb25zZS5ib2R5LnBhc3N3b3JkO1xyXG59O1xyXG5cclxuY29uc3QgZ2V0QXNzaXN0YW50VG9rZW4gPSBhc3luYyAoKSA9PiB7XHJcbiAgICBpZiAoYXNzaXN0YW50VG9rZW4pIHtcclxuICAgICAgICByZXR1cm4gYXNzaXN0YW50VG9rZW47XHJcbiAgICB9XHJcbiAgICBpZihwYXNzd29yZEFzc2lzdGFudD09bnVsbCl7YXdhaXQgYWRkQXNzaXN0YW50KCk7fVxyXG4gICAgdmFyIGNyZWRzID0ge1xyXG4gICAgICAgIHVzZXJuYW1lOiBhc3Npc3RhbnQuZW1haWwsXHJcbiAgICAgICAgcGFzc3dvcmQ6IHBhc3N3b3JkQXNzaXN0YW50LFxyXG4gICAgfTtcclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgc2VydmVyXHJcbiAgICAgICAgLnBvc3QoXCIvdXNlcnMvbG9naW5cIilcclxuICAgICAgICAuc2VuZChjcmVkcyk7XHJcbiAgICBhc3Npc3RhbnRUb2tlbiA9IHJlc3BvbnNlLmJvZHkudG9rZW47XHJcbiAgICByZXR1cm4gYXNzaXN0YW50VG9rZW47XHJcbn1cclxuXHJcbmNvbnN0IGFkZFRvdXJpc3QgPSBhc3luYyAoKSA9PiB7XHJcbiAgICBpZiAoIWFzc2lzdGFudFRva2VuKSB7XHJcbiAgICAgICAgYXdhaXQgZ2V0QXNzaXN0YW50VG9rZW4oKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgc2VydmVyXHJcbiAgICAgICAgLnBvc3QoXCIvdG91cmlzdHNcIilcclxuICAgICAgICAuc2V0KFwiQXV0aG9yaXphdGlvblwiLCBgQmVhcmVyICR7YXNzaXN0YW50VG9rZW59YClcclxuICAgICAgICAuc2VuZCh0b3VyaXN0KVxyXG4gICAgICAgIC5leHBlY3QoMjAwKTtcclxuICAgIHBhc3N3b3JkVXNlcj0gIHJlc3BvbnNlLmJvZHkucGFzc3dvcmQ7XHJcbn07XHJcbiBcclxuXHJcbmNvbnN0IGdldFRvdXJpc3RUb2tlbiA9IGFzeW5jICgpID0+IHtcclxuICAgIGlmICh1c2VyVG9rZW4pIHtcclxuICAgICAgICByZXR1cm4gdXNlclRva2VuO1xyXG4gICAgfVxyXG4gICAgaWYocGFzc3dvcmRVc2VyID09IG51bGwpIHsgYXdhaXQgYWRkVG91cmlzdCgpO31cclxuICAgIHZhciBjcmVkcyA9IHtcclxuICAgICAgICB1c2VybmFtZTogdG91cmlzdC5lbWFpbCxcclxuICAgICAgICBwYXNzd29yZDogcGFzc3dvcmRVc2VyLFxyXG4gICAgfTtcclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgc2VydmVyXHJcbiAgICAgICAgLnBvc3QoXCIvdXNlcnMvbG9naW5cIilcclxuICAgICAgICAuc2VuZChjcmVkcyk7XHJcbiAgICB1c2VyVG9rZW4gPSByZXNwb25zZS5ib2R5LnRva2VuO1xyXG4gICAgcmV0dXJuIHVzZXJUb2tlbjtcclxufVxyXG5cclxuY29uc3QgZ2V0RXhpc3RpbmdJZCA9IGFzeW5jICgpID0+IHtcclxuICAgIGNvbnN0IG5ld1RvdXJpc3QgPSB7XHJcbiAgICAgICAgXCJmaXJzdG5hbWVcIjogXCJOYW1hbFwiLFxyXG4gICAgICAgIFwibGFzdG5hbWVcIjogXCJGZXJuYW1kb1wiLFxyXG4gICAgICAgIFwiZW1haWxcIjogXCJuYW1hbGZlcm5hbWRvQGdtYWlsLmNvbVwiLFxyXG4gICAgICAgIFwibW9iaWxlXCI6IFwiOTgxMTE0ODQ0XCIsXHJcbiAgICAgICAgXCJyb21tbnVtYmVyXCIgOiBcIjQxXCIsXHJcblxyXG4gICAgfVxyXG4gICAgY29uc3QgdG91cmlzdCA9IG5ldyBVc2VycyhuZXdUb3VyaXN0KTtcclxuICAgIGF3YWl0IHRvdXJpc3Quc2F2ZSgpO1xyXG5cclxuICAgIHJldHVybiB0b3VyaXN0Ll9pZC50b1N0cmluZygpO1xyXG5cclxuICAgIFxyXG59XHJcblxyXG5jb25zdCBnZXROb25FeGlzdGluZ0lkID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgY29uc3QgbmV3VG91cmlzdCA9IHtcclxuICAgICAgICBcImZpcnN0bmFtZVwiOiBcIkthbWFsXCIsXHJcbiAgICAgICAgXCJsYXN0bmFtZVwiOiBcIkZlcm5hbWRvXCIsXHJcbiAgICAgICAgXCJlbWFpbFwiOiBcImthbWFsZmVybmFtZG9AZ21haWwuY29tXCIsXHJcbiAgICAgICAgXCJ1c2VybmFtZVwiOiBcImthbWFsZmVybmFtZG9AZ21haWwuY29tXCJcclxuICAgIH1cclxuICAgIGNvbnN0IHRvdXJpc3QgPSBuZXcgVXNlcnMobmV3VG91cmlzdCk7XHJcbiAgICBhd2FpdCB0b3VyaXN0LnNhdmUoKTtcclxuICAgIGF3YWl0IHRvdXJpc3QucmVtb3ZlKCk7XHJcblxyXG4gICAgcmV0dXJuIHRvdXJpc3QuX2lkLnRvU3RyaW5nKCk7XHJcbn1cclxuXHJcbmNvbnN0IGdldEV4aXN0aW5nSWRBc3Npc3RhbmN0ID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgY29uc3QgbmV3QXNzaXN0YW50ID0ge1xyXG4gICAgICAgIFwiZmlyc3RuYW1lXCI6IFwiS2FzdW5cIixcclxuICAgICAgICBcImxhc3RuYW1lXCI6IFwiUGVyZXJhXCIsXHJcbiAgICAgICAgXCJlbWFpbFwiOiBcImthc3VuQGdtYWlsLmNvbVwiLFxyXG4gICAgfVxyXG4gICAgY29uc3QgYXNzaXN0YW50ID0gbmV3IFVzZXJzKG5ld0Fzc2lzdGFudCk7XHJcbiAgICBhd2FpdCBhc3Npc3RhbnQuc2F2ZSgpO1xyXG5cclxuICAgIHJldHVybiBhc3Npc3RhbnQuX2lkLnRvU3RyaW5nKCk7XHJcblxyXG4gICAgXHJcbn1cclxuXHJcbmNvbnN0IGdldE5vbkV4aXN0aW5nSWRBc3Npc3RhbnQgPSBhc3luYyAoKSA9PiB7XHJcbiAgICBjb25zdCBuZXdBc3Npc3RhbnQgPSB7XHJcbiAgICAgICAgXCJmaXJzdG5hbWVcIjogXCJLYW1hbFwiLFxyXG4gICAgICAgIFwibGFzdG5hbWVcIjogXCJGZXJuYW1kb1wiLFxyXG4gICAgICAgIFwiZW1haWxcIjogXCJrYW1hbGZlcm5hbWRvQGdtYWlsLmNvbVwiXHJcbiAgICB9XHJcbiAgICBjb25zdCBhc3Npc3RhbnQgPSBuZXcgVXNlcnMobmV3QXNzaXN0YW50KTtcclxuICAgIGF3YWl0IGFzc2lzdGFudC5zYXZlKCk7XHJcbiAgICBhd2FpdCBhc3Npc3RhbnQucmVtb3ZlKCk7XHJcblxyXG4gICAgcmV0dXJuIGFzc2lzdGFudC5faWQudG9TdHJpbmcoKTtcclxufVxyXG5cclxuY29uc3QgZGVjb2RlVG9rZW4gPSAodG9rZW4pID0+IHtcclxuICAgIHZhciBkZWNvZGVkID0gand0X2RlY29kZSh0b2tlbik7XHJcbiAgICByZXR1cm4gZGVjb2RlZDtcclxufVxyXG5cclxubW9kdWxlLmV4cG9ydHMgPSB7XHJcbiAgICBnZXRBZG1pblRva2VuLCBnZXRBc3Npc3RhbnRUb2tlbiwgZ2V0VG91cmlzdFRva2VuLCBkZWNvZGVUb2tlbiwgYWRkVG91cmlzdCwgZ2V0VG91cmlzdFRva2VuICxnZXRFeGlzdGluZ0lkICxnZXROb25FeGlzdGluZ0lkLCBnZXRFeGlzdGluZ0lkQXNzaXN0YW5jdCwgZ2V0Tm9uRXhpc3RpbmdJZEFzc2lzdGFudCwgYWRkQXNzaXN0YW50XHJcbn1cclxuIl19\",\"originalCode\":\"const app = require('../../app');\\r\\nconst server = require(\\\"supertest\\\")(app);\\r\\nconst jwt_decode = require('jwt-decode');\\r\\nconst Users = require('../../models/users');\\r\\n\\r\\nvar userToken;\\r\\nvar assistantToken;\\r\\nvar adminToken;\\r\\nvar passwordAssistant;\\r\\nvar passwordUser;\\r\\n\\r\\nconst admin = {\\r\\n \\\"firstname\\\": \\\"Admin\\\",\\r\\n \\\"lastname\\\": \\\"Admin\\\",\\r\\n \\\"email\\\": \\\"admin@gmail.com\\\",\\r\\n \\\"password\\\": \\\"admin-password\\\"\\r\\n};\\r\\nconst assistant = {\\r\\n \\\"firstname\\\": \\\"Pasan\\\",\\r\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\r\\n \\\"email\\\": \\\"pasanFernamdo@gmail.com\\\"\\r\\n};\\r\\nconst tourist = {\\r\\n \\\"firstname\\\": \\\"Sunil\\\",\\r\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\r\\n \\\"email\\\": \\\"sunilFernamdo@gmail.com\\\"\\r\\n};\\r\\n\\r\\nconst signupAdmin = async () => {\\r\\n await Users.deleteMany({});\\r\\n await server\\r\\n .post(\\\"/users/signup/admin\\\")\\r\\n .send(admin);\\r\\n};\\r\\n\\r\\nconst getAdminToken = async () => {\\r\\n if (adminToken) {\\r\\n return adminToken;\\r\\n }\\r\\n await signupAdmin();\\r\\n var creds = {\\r\\n username: admin.email,\\r\\n password: admin.password,\\r\\n };\\r\\n const response = await server\\r\\n .post(\\\"/users/login\\\")\\r\\n .send(creds);\\r\\n adminToken = response.body.token;\\r\\n return adminToken;\\r\\n}\\r\\n\\r\\nconst addAssistant = async () => {\\r\\n if (!adminToken) {\\r\\n await getAdminToken();\\r\\n }\\r\\n const response = await server\\r\\n .post(\\\"/employees\\\")\\r\\n .set(\\\"Authorization\\\", `Bearer ${adminToken}`)\\r\\n .send(assistant)\\r\\n .expect(200);\\r\\n \\r\\n passwordAssistant = response.body.password;\\r\\n};\\r\\n\\r\\nconst getAssistantToken = async () => {\\r\\n if (assistantToken) {\\r\\n return assistantToken;\\r\\n }\\r\\n if(passwordAssistant==null){await addAssistant();}\\r\\n var creds = {\\r\\n username: assistant.email,\\r\\n password: passwordAssistant,\\r\\n };\\r\\n const response = await server\\r\\n .post(\\\"/users/login\\\")\\r\\n .send(creds);\\r\\n assistantToken = response.body.token;\\r\\n return assistantToken;\\r\\n}\\r\\n\\r\\nconst addTourist = async () => {\\r\\n if (!assistantToken) {\\r\\n await getAssistantToken();\\r\\n }\\r\\n const response = await server\\r\\n .post(\\\"/tourists\\\")\\r\\n .set(\\\"Authorization\\\", `Bearer ${assistantToken}`)\\r\\n .send(tourist)\\r\\n .expect(200);\\r\\n passwordUser= response.body.password;\\r\\n};\\r\\n \\r\\n\\r\\nconst getTouristToken = async () => {\\r\\n if (userToken) {\\r\\n return userToken;\\r\\n }\\r\\n if(passwordUser == null) { await addTourist();}\\r\\n var creds = {\\r\\n username: tourist.email,\\r\\n password: passwordUser,\\r\\n };\\r\\n const response = await server\\r\\n .post(\\\"/users/login\\\")\\r\\n .send(creds);\\r\\n userToken = response.body.token;\\r\\n return userToken;\\r\\n}\\r\\n\\r\\nconst getExistingId = async () => {\\r\\n const newTourist = {\\r\\n \\\"firstname\\\": \\\"Namal\\\",\\r\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\r\\n \\\"email\\\": \\\"namalfernamdo@gmail.com\\\",\\r\\n \\\"mobile\\\": \\\"981114844\\\",\\r\\n \\\"rommnumber\\\" : \\\"41\\\",\\r\\n\\r\\n }\\r\\n const tourist = new Users(newTourist);\\r\\n await tourist.save();\\r\\n\\r\\n return tourist._id.toString();\\r\\n\\r\\n \\r\\n}\\r\\n\\r\\nconst getNonExistingId = async () => {\\r\\n const newTourist = {\\r\\n \\\"firstname\\\": \\\"Kamal\\\",\\r\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\r\\n \\\"email\\\": \\\"kamalfernamdo@gmail.com\\\",\\r\\n \\\"username\\\": \\\"kamalfernamdo@gmail.com\\\"\\r\\n }\\r\\n const tourist = new Users(newTourist);\\r\\n await tourist.save();\\r\\n await tourist.remove();\\r\\n\\r\\n return tourist._id.toString();\\r\\n}\\r\\n\\r\\nconst getExistingIdAssistanct = async () => {\\r\\n const newAssistant = {\\r\\n \\\"firstname\\\": \\\"Kasun\\\",\\r\\n \\\"lastname\\\": \\\"Perera\\\",\\r\\n \\\"email\\\": \\\"kasun@gmail.com\\\",\\r\\n }\\r\\n const assistant = new Users(newAssistant);\\r\\n await assistant.save();\\r\\n\\r\\n return assistant._id.toString();\\r\\n\\r\\n \\r\\n}\\r\\n\\r\\nconst getNonExistingIdAssistant = async () => {\\r\\n const newAssistant = {\\r\\n \\\"firstname\\\": \\\"Kamal\\\",\\r\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\r\\n \\\"email\\\": \\\"kamalfernamdo@gmail.com\\\"\\r\\n }\\r\\n const assistant = new Users(newAssistant);\\r\\n await assistant.save();\\r\\n await assistant.remove();\\r\\n\\r\\n return assistant._id.toString();\\r\\n}\\r\\n\\r\\nconst decodeToken = (token) => {\\r\\n var decoded = jwt_decode(token);\\r\\n return decoded;\\r\\n}\\r\\n\\r\\nmodule.exports = {\\r\\n getAdminToken, getAssistantToken, getTouristToken, decodeToken, addTourist, getTouristToken ,getExistingId ,getNonExistingId, getExistingIdAssistanct, getNonExistingIdAssistant, addAssistant\\r\\n}\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/79/user_helper_79166e334a8b342d542dc0574b645dc7.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2692\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\tests\\\\helpers\\\\user_helper.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":16466,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":16463,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"signupAdmin\",\"ranges\":[{\"startOffset\":714,\"endOffset\":815,\"count\":3}],\"isBlockCoverage\":false},{\"functionName\":\"getAdminToken\",\"ranges\":[{\"startOffset\":840,\"endOffset\":1126,\"count\":4}],\"isBlockCoverage\":false},{\"functionName\":\"addAssistant\",\"ranges\":[{\"startOffset\":1150,\"endOffset\":1389,\"count\":3}],\"isBlockCoverage\":false},{\"functionName\":\"getAssistantToken\",\"ranges\":[{\"startOffset\":1418,\"endOffset\":1770,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"addTourist\",\"ranges\":[{\"startOffset\":1792,\"endOffset\":2035,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getTouristToken\",\"ranges\":[{\"startOffset\":2062,\"endOffset\":2380,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getExistingId\",\"ranges\":[{\"startOffset\":2405,\"endOffset\":2690,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getNonExistingId\",\"ranges\":[{\"startOffset\":2718,\"endOffset\":3021,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getExistingIdAssistanct\",\"ranges\":[{\"startOffset\":3056,\"endOffset\":3290,\"count\":2}],\"isBlockCoverage\":false},{\"functionName\":\"getNonExistingIdAssistant\",\"ranges\":[{\"startOffset\":3327,\"endOffset\":3599,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"decodeToken\",\"ranges\":[{\"startOffset\":3622,\"endOffset\":3687,\"count\":0}],\"isBlockCoverage\":false}]}}]},{\"leaks\":false,\"numFailingTests\":0,\"numPassingTests\":8,\"numPendingTests\":0,\"numTodoTests\":0,\"openHandles\":[],\"perfStats\":{\"end\":1615204325209,\"runtime\":1516,\"slow\":false,\"start\":1615204323693},\"skipped\":false,\"snapshot\":{\"added\":0,\"fileDeleted\":false,\"matched\":0,\"unchecked\":0,\"unmatched\":0,\"updated\":0,\"uncheckedKeys\":[]},\"testFilePath\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\tests\\\\schedule-id.test.js\",\"testResults\":[{\"ancestorTitles\":[\"GET /schedule/:scheduleId\"],\"duration\":10,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"GET /schedule/:scheduleId requires Authorization - 401\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"requires Authorization - 401\"},{\"ancestorTitles\":[\"GET /schedule/:scheduleId\"],\"duration\":19,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"GET /schedule/:scheduleId with Authorization - 200\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"with Authorization - 200\"},{\"ancestorTitles\":[\"GET /schedule/:scheduleId\"],\"duration\":15,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"GET /schedule/:scheduleId invalid schedule id - 404\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"invalid schedule id - 404\"},{\"ancestorTitles\":[\"POST /schedules/:scheduleId\"],\"duration\":12,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"POST /schedules/:scheduleId does not support - 403\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"does not support - 403\"},{\"ancestorTitles\":[\"PUT /schedules/:scheduleId\"],\"duration\":9,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"PUT /schedules/:scheduleId requires Authorization - 401\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"requires Authorization - 401\"},{\"ancestorTitles\":[\"PUT /schedules/:scheduleId\"],\"duration\":26,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"PUT /schedules/:scheduleId with Authorization - 200\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"with Authorization - 200\"},{\"ancestorTitles\":[\"DELETE /schedule/:scheduleId\"],\"duration\":13,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"DELETE /schedule/:scheduleId requires Authorization - 401\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"requires Authorization - 401\"},{\"ancestorTitles\":[\"DELETE /schedule/:scheduleId\"],\"duration\":20,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"DELETE /schedule/:scheduleId with Authorization - 200\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"with Authorization - 200\"}],\"failureMessage\":null,\"v8Coverage\":[{\"codeTransformResult\":{\"code\":\"var createError = require('http-errors');\\n\\nvar express = require('express');\\n\\nconst cors = require('cors');\\n\\nvar path = require('path');\\n\\nconst bodyParser = require('body-parser');\\n\\nconst expressValidator = require('express-validator');\\n\\nvar session = require('express-session');\\n\\nvar FileStore = require('session-file-store')(session);\\n\\nvar cookieParser = require('cookie-parser');\\n\\nvar logger = require('morgan');\\n\\nvar passport = require('passport');\\n\\nconst mongoose = require('mongoose');\\n\\nrequire('dotenv').config();\\n\\nvar userRouter = require('./routes/userRouter');\\n\\nvar employeeRouter = require('./routes/employeeRouter');\\n\\nvar placeRouter = require('./routes/placeRouter');\\n\\nvar scheduleRouter = require('./routes/scheduleRouter');\\n\\nvar touristRouter = require('./routes/touristRouter');\\n\\nvar dashboardRouter = require('./routes/dashboardRouter');\\n\\nvar app = express(); // view engine setup\\n\\napp.set('views', path.join(__dirname, 'views'));\\napp.set('view engine', 'jade');\\napp.use(cors());\\napp.use(passport.initialize());\\napp.use(bodyParser.json());\\napp.use(cookieParser('the-immortal-coils')); // app.use(logger('dev'));\\n\\napp.use(express.json());\\napp.use(express.urlencoded({\\n extended: false\\n}));\\napp.use(cookieParser()); // app.use(express.static('build'));\\n\\napp.use(express.static(path.join(__dirname, 'build')));\\nvar url = process.env.mongoUrl;\\n\\nif (process.env.NODE_ENV === 'test') {\\n url = process.env.testMongoUrl;\\n}\\n\\nmongoose.connect(url, {\\n useNewUrlParser: true,\\n useCreateIndex: true,\\n useUnifiedTopology: true\\n}).then(db => {}, err => {\\n if (err) {\\n console.log('👺 Error connecting to MongoDB');\\n } else {\\n console.log('✅ Connected to MongoDB');\\n }\\n});\\napp.use('/users', userRouter);\\napp.use('/employees', employeeRouter);\\napp.use('/places', placeRouter);\\napp.use('/schedules', scheduleRouter);\\napp.use('/tourists', touristRouter);\\napp.use('/dashboard', dashboardRouter); // catch 404 and forward to error handler\\n\\napp.use(function (req, res, next) {\\n next(createError(404));\\n}); // error handler\\n\\napp.use(function (err, req, res, next) {\\n // set locals, only providing error in development\\n res.locals.message = err.message;\\n res.locals.error = req.app.get('env') === 'development' ? err : {}; // render the error page\\n\\n res.status(err.status || 500);\\n res.render('error');\\n});\\nmodule.exports = app;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC5qcyJdLCJuYW1lcyI6WyJjcmVhdGVFcnJvciIsInJlcXVpcmUiLCJleHByZXNzIiwiY29ycyIsInBhdGgiLCJib2R5UGFyc2VyIiwiZXhwcmVzc1ZhbGlkYXRvciIsInNlc3Npb24iLCJGaWxlU3RvcmUiLCJjb29raWVQYXJzZXIiLCJsb2dnZXIiLCJwYXNzcG9ydCIsIm1vbmdvb3NlIiwiY29uZmlnIiwidXNlclJvdXRlciIsImVtcGxveWVlUm91dGVyIiwicGxhY2VSb3V0ZXIiLCJzY2hlZHVsZVJvdXRlciIsInRvdXJpc3RSb3V0ZXIiLCJkYXNoYm9hcmRSb3V0ZXIiLCJhcHAiLCJzZXQiLCJqb2luIiwiX19kaXJuYW1lIiwidXNlIiwiaW5pdGlhbGl6ZSIsImpzb24iLCJ1cmxlbmNvZGVkIiwiZXh0ZW5kZWQiLCJzdGF0aWMiLCJ1cmwiLCJwcm9jZXNzIiwiZW52IiwibW9uZ29VcmwiLCJOT0RFX0VOViIsInRlc3RNb25nb1VybCIsImNvbm5lY3QiLCJ1c2VOZXdVcmxQYXJzZXIiLCJ1c2VDcmVhdGVJbmRleCIsInVzZVVuaWZpZWRUb3BvbG9neSIsInRoZW4iLCJkYiIsImVyciIsImNvbnNvbGUiLCJsb2ciLCJyZXEiLCJyZXMiLCJuZXh0IiwibG9jYWxzIiwibWVzc2FnZSIsImVycm9yIiwiZ2V0Iiwic3RhdHVzIiwicmVuZGVyIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsSUFBSUEsV0FBVyxHQUFHQyxPQUFPLENBQUMsYUFBRCxDQUF6Qjs7QUFDQSxJQUFJQyxPQUFPLEdBQUdELE9BQU8sQ0FBQyxTQUFELENBQXJCOztBQUNBLE1BQU1FLElBQUksR0FBR0YsT0FBTyxDQUFDLE1BQUQsQ0FBcEI7O0FBQ0EsSUFBSUcsSUFBSSxHQUFHSCxPQUFPLENBQUMsTUFBRCxDQUFsQjs7QUFDQSxNQUFNSSxVQUFVLEdBQUdKLE9BQU8sQ0FBQyxhQUFELENBQTFCOztBQUNBLE1BQU1LLGdCQUFnQixHQUFHTCxPQUFPLENBQUMs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a0JWLFVBQWxCO0FBQ0FNLEdBQUcsQ0FBQ0ksR0FBSixDQUFRLFlBQVIsRUFBc0JULGNBQXRCO0FBQ0FLLEdBQUcsQ0FBQ0ksR0FBSixDQUFRLFNBQVIsRUFBbUJSLFdBQW5CO0FBQ0FJLEdBQUcsQ0FBQ0ksR0FBSixDQUFRLFlBQVIsRUFBc0JQLGNBQXRCO0FBQ0FHLEdBQUcsQ0FBQ0ksR0FBSixDQUFRLFdBQVIsRUFBcUJOLGFBQXJCO0FBQ0FFLEdBQUcsQ0FBQ0ksR0FBSixDQUFRLFlBQVIsRUFBc0JMLGVBQXRCLEUsQ0FFQTs7QUFDQUMsR0FBRyxDQUFDSSxHQUFKLENBQVEsVUFBVXFCLEdBQVYsRUFBZUMsR0FBZixFQUFvQkMsSUFBcEIsRUFBMEI7QUFDaENBLEVBQUFBLElBQUksQ0FBQy9DLFdBQVcsQ0FBQyxHQUFELENBQVosQ0FBSjtBQUNELENBRkQsRSxDQUlBOztBQUNBb0IsR0FBRyxDQUFDSSxHQUFKLENBQVEsVUFBVWtCLEdBQVYsRUFBZUcsR0FBZixFQUFvQkMsR0FBcEIsRUFBeUJDLElBQXpCLEVBQStCO0FBQ3JDO0FBQ0FELEVBQUFBLEdBQUcsQ0FBQ0UsTUFBSixDQUFXQyxPQUFYLEdBQXFCUCxHQUFHLENBQUNPLE9BQXpCO0FBQ0FILEVBQUFBLEdBQUcsQ0FBQ0UsTUFBSixDQUFXRSxLQUFYLEdBQW1CTCxHQUFHLENBQUN6QixHQUFKLENBQVErQixHQUFSLENBQVksS0FBWixNQUF1QixhQUF2QixHQUF1Q1QsR0FBdkMsR0FBNkMsRUFBaEUsQ0FIcUMsQ0FLckM7O0FBQ0FJLEVBQUFBLEdBQUcsQ0FBQ00sTUFBSixDQUFXVixHQUFHLENBQUNVLE1BQUosSUFBYyxHQUF6QjtBQUNBTixFQUFBQSxHQUFHLENBQUNPLE1BQUosQ0FBVyxPQUFYO0FBQ0QsQ0FSRDtBQVVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUJuQyxHQUFqQiIsInNvdXJjZXNDb250ZW50IjpbInZhciBjcmVhdGVFcnJvciA9IHJlcXVpcmUoJ2h0dHAtZXJyb3JzJyk7XHJcbnZhciBleHByZXNzID0gcmVxdWlyZSgnZXhwcmVzcycpO1xyXG5jb25zdCBjb3JzID0gcmVxdWlyZSgnY29ycycpO1xyXG52YXIgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcclxuY29uc3QgYm9keVBhcnNlciA9IHJlcXVpcmUoJ2JvZHktcGFyc2VyJylcclxuY29uc3QgZXhwcmVzc1ZhbGlkYXRvciA9IHJlcXVpcmUoJ2V4cHJlc3MtdmFsaWRhdG9yJylcclxudmFyIHNlc3Npb24gPSByZXF1aXJlKCdleHByZXNzLXNlc3Npb24nKTtcclxudmFyIEZpbGVTdG9yZSA9IHJlcXVpcmUoJ3Nlc3Npb24tZmlsZS1zdG9yZScpKHNlc3Npb24pO1xyXG52YXIgY29va2llUGFyc2VyID0gcmVxdWlyZSgnY29va2llLXBhcnNlcicpO1xyXG52YXIgbG9nZ2VyID0gcmVxdWlyZSgnbW9yZ2FuJyk7XHJcbnZhciBwYXNzcG9ydCA9IHJlcXVpcmUoJ3Bhc3Nwb3J0Jyk7XHJcbmNvbnN0IG1vbmdvb3NlID0gcmVxdWlyZSgnbW9uZ29vc2UnKTtcclxucmVxdWlyZSgnZG90ZW52JykuY29uZmlnKClcclxuXHJcbnZhciB1c2VyUm91dGVyID0gcmVxdWlyZSgnLi9yb3V0ZXMvdXNlclJvdXRlcicpO1xyXG52YXIgZW1wbG95ZWVSb3V0ZXIgPSByZXF1aXJlKCcuL3JvdXRlcy9lbXBsb3llZVJvdXRlcicpO1xyXG52YXIgcGxhY2VSb3V0ZXIgPSByZXF1aXJlKCcuL3JvdXRlcy9wbGFjZVJvdXRlcicpO1xyXG52YXIgc2NoZWR1bGVSb3V0ZXIgPSByZXF1aXJlKCcuL3JvdXRlcy9zY2hlZHVsZVJvdXRlcicpO1xyXG52YXIgdG91cmlzdFJvdXRlciA9IHJlcXVpcmUoJy4vcm91dGVzL3RvdXJpc3RSb3V0ZXInKTtcclxudmFyIGRhc2hib2FyZFJvdXRlciA9IHJlcXVpcmUoJy4vcm91dGVzL2Rhc2hib2FyZFJvdXRlcicpO1xyXG5cclxudmFyIGFwcCA9IGV4cHJlc3MoKTtcclxuXHJcbi8vIHZpZXcgZW5naW5lIHNldHVwXHJcbmFwcC5zZXQoJ3ZpZXdzJywgcGF0aC5qb2luKF9fZGlybmFtZSwgJ3ZpZXdzJykpO1xyXG5hcHAuc2V0KCd2aWV3IGVuZ2luZScsICdqYWRlJyk7XHJcbmFwcC51c2UoY29ycygpKTtcclxuYXBwLnVzZShwYXNzcG9ydC5pbml0aWFsaXplKCkpO1xyXG5cclxuYXBwLnVzZShib2R5UGFyc2VyLmpzb24oKSk7XHJcblxyXG5hcHAudXNlKGNvb2tpZVBhcnNlcigndGhlLWltbW9ydGFsLWNvaWxzJykpO1xyXG4vLyBhcHAudXNlKGxvZ2dlcignZGV2JykpO1xyXG5hcHAudXNlKGV4cHJlc3MuanNvbigpKTtcclxuYXBwLnVzZShleHByZXNzLnVybGVuY29kZWQoeyBleHRlbmRlZDogZmFsc2UgfSkpO1xyXG5hcHAudXNlKGNvb2tpZVBhcnNlcigpKTtcclxuLy8gYXBwLnVzZShleHByZXNzLnN0YXRpYygnYnVpbGQnKSk7XHJcbmFwcC51c2UoZXhwcmVzcy5zdGF0aWMocGF0aC5qb2luKF9fZGlybmFtZSwgJ2J1aWxkJykpKTtcclxuXHJcbnZhciB1cmwgPSBwcm9jZXNzLmVudi5tb25nb1VybDtcclxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAndGVzdCcpIHtcclxuICB1cmwgPSBwcm9jZXNzLmVudi50ZXN0TW9uZ29Vcmw7XHJcbn1cclxubW9uZ29vc2UuY29ubmVjdCh1cmwsIHsgdXNlTmV3VXJsUGFyc2VyOiB0cnVlLCB1c2VDcmVhdGVJbmRleDogdHJ1ZSwgdXNlVW5pZmllZFRvcG9sb2d5OiB0cnVlIH0pLnRoZW4oKGRiKSA9PiB7XHJcbn0sIChlcnIpID0+IHtcclxuICBpZiAoZXJyKSB7XHJcbiAgICBjb25zb2xlLmxvZygn8J+RuiAgRXJyb3IgY29ubmVjdGluZyB0byBNb25nb0RCJyk7XHJcbiAgfSBlbHNlIHtcclxuICAgIGNvbnNvbGUubG9nKCfinIUgIENvbm5lY3RlZCB0byBNb25nb0RCJyk7XHJcbiAgfVxyXG59KTtcclxuXHJcbmFwcC51c2UoJy91c2VycycsIHVzZXJSb3V0ZXIpO1xyXG5hcHAudXNlKCcvZW1wbG95ZWVzJywgZW1wbG95ZWVSb3V0ZXIpO1xyXG5hcHAudXNlKCcvcGxhY2VzJywgcGxhY2VSb3V0ZXIpO1xyXG5hcHAudXNlKCcvc2NoZWR1bGVzJywgc2NoZWR1bGVSb3V0ZXIpO1xyXG5hcHAudXNlKCcvdG91cmlzdHMnLCB0b3VyaXN0Um91dGVyKTtcclxuYXBwLnVzZSgnL2Rhc2hib2FyZCcsIGRhc2hib2FyZFJvdXRlcik7XHJcblxyXG4vLyBjYXRjaCA0MDQgYW5kIGZvcndhcmQgdG8gZXJyb3IgaGFuZGxlclxyXG5hcHAudXNlKGZ1bmN0aW9uIChyZXEsIHJlcywgbmV4dCkge1xyXG4gIG5leHQoY3JlYXRlRXJyb3IoNDA0KSk7XHJcbn0pO1xyXG5cclxuLy8gZXJyb3IgaGFuZGxlclxyXG5hcHAudXNlKGZ1bmN0aW9uIChlcnIsIHJlcSwgcmVzLCBuZXh0KSB7XHJcbiAgLy8gc2V0IGxvY2Fscywgb25seSBwcm92aWRpbmcgZXJyb3IgaW4gZGV2ZWxvcG1lbnRcclxuICByZXMubG9jYWxzLm1lc3NhZ2UgPSBlcnIubWVzc2FnZTtcclxuICByZXMubG9jYWxzLmVycm9yID0gcmVxLmFwcC5nZXQoJ2VudicpID09PSAnZGV2ZWxvcG1lbnQnID8gZXJyIDoge307XHJcblxyXG4gIC8vIHJlbmRlciB0aGUgZXJyb3IgcGFnZVxyXG4gIHJlcy5zdGF0dXMoZXJyLnN0YXR1cyB8fCA1MDApO1xyXG4gIHJlcy5yZW5kZXIoJ2Vycm9yJyk7XHJcbn0pO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBhcHA7XHJcbiJdfQ==\",\"originalCode\":\"var createError = require('http-errors');\\r\\nvar express = require('express');\\r\\nconst cors = require('cors');\\r\\nvar path = require('path');\\r\\nconst bodyParser = require('body-parser')\\r\\nconst expressValidator = require('express-validator')\\r\\nvar session = require('express-session');\\r\\nvar FileStore = require('session-file-store')(session);\\r\\nvar cookieParser = require('cookie-parser');\\r\\nvar logger = require('morgan');\\r\\nvar passport = require('passport');\\r\\nconst mongoose = require('mongoose');\\r\\nrequire('dotenv').config()\\r\\n\\r\\nvar userRouter = require('./routes/userRouter');\\r\\nvar employeeRouter = require('./routes/employeeRouter');\\r\\nvar placeRouter = require('./routes/placeRouter');\\r\\nvar scheduleRouter = require('./routes/scheduleRouter');\\r\\nvar touristRouter = require('./routes/touristRouter');\\r\\nvar dashboardRouter = require('./routes/dashboardRouter');\\r\\n\\r\\nvar app = express();\\r\\n\\r\\n// view engine setup\\r\\napp.set('views', path.join(__dirname, 'views'));\\r\\napp.set('view engine', 'jade');\\r\\napp.use(cors());\\r\\napp.use(passport.initialize());\\r\\n\\r\\napp.use(bodyParser.json());\\r\\n\\r\\napp.use(cookieParser('the-immortal-coils'));\\r\\n// app.use(logger('dev'));\\r\\napp.use(express.json());\\r\\napp.use(express.urlencoded({ extended: false }));\\r\\napp.use(cookieParser());\\r\\n// app.use(express.static('build'));\\r\\napp.use(express.static(path.join(__dirname, 'build')));\\r\\n\\r\\nvar url = process.env.mongoUrl;\\r\\nif (process.env.NODE_ENV === 'test') {\\r\\n url = process.env.testMongoUrl;\\r\\n}\\r\\nmongoose.connect(url, { useNewUrlParser: true, useCreateIndex: true, useUnifiedTopology: true }).then((db) => {\\r\\n}, (err) => {\\r\\n if (err) {\\r\\n console.log('👺 Error connecting to MongoDB');\\r\\n } else {\\r\\n console.log('✅ Connected to MongoDB');\\r\\n }\\r\\n});\\r\\n\\r\\napp.use('/users', userRouter);\\r\\napp.use('/employees', employeeRouter);\\r\\napp.use('/places', placeRouter);\\r\\napp.use('/schedules', scheduleRouter);\\r\\napp.use('/tourists', touristRouter);\\r\\napp.use('/dashboard', dashboardRouter);\\r\\n\\r\\n// catch 404 and forward to error handler\\r\\napp.use(function (req, res, next) {\\r\\n next(createError(404));\\r\\n});\\r\\n\\r\\n// error handler\\r\\napp.use(function (err, req, res, next) {\\r\\n // set locals, only providing error in development\\r\\n res.locals.message = err.message;\\r\\n res.locals.error = req.app.get('env') === 'development' ? err : {};\\r\\n\\r\\n // render the error page\\r\\n res.status(err.status || 500);\\r\\n res.render('error');\\r\\n});\\r\\n\\r\\nmodule.exports = app;\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/01/app_010e21b7416079df77678cc6cb70a530.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"1596\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\app.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":10626,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":10623,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1632,\"endOffset\":1640,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1642,\"endOffset\":1776,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":2049,\"endOffset\":2104,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":2133,\"endOffset\":2408,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"var express = require('express');\\n\\nvar userRouter = express.Router();\\n\\nconst bodyParser = require('body-parser');\\n\\nvar upload = require('../controllers/upload');\\n\\nconst {\\n checkSchema\\n} = require('express-validator');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nvar validationRules = require('../middleware/validation');\\n\\nvar userController = require('../controllers/userController');\\n\\nconst cors = require('./cors');\\n\\nuserRouter.use(bodyParser.json());\\nuserRouter.options('*', cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n});\\nuserRouter.post('/signup/admin', cors.corsWithOptions, userController.signupAdmin);\\nuserRouter.post('/login', cors.corsWithOptions, userController.login);\\nuserRouter.post('/changepassoword/:id', authenticate.verifyUser, userController.changePassoword);\\nuserRouter.post(\\\"/updateprofilepicture/:id\\\", authenticate.verifyUser, upload.UploadUserImage);\\nuserRouter.get('/logout', authenticate.verifyUser, userController.logout);\\nmodule.exports = userRouter;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVzZXJSb3V0ZXIuanMiXSwibmFtZXMiOlsiZXhwcmVzcyIsInJlcXVpcmUiLCJ1c2VyUm91dGVyIiwiUm91dGVyIiwiYm9keVBhcnNlciIsInVwbG9hZCIsImNoZWNrU2NoZW1hIiwiYXV0aGVudGljYXRlIiwidmFsaWRhdGlvblJ1bGVzIiwidXNlckNvbnRyb2xsZXIiLCJjb3JzIiwidXNlIiwianNvbiIsIm9wdGlvbnMiLCJjb3JzV2l0aE9wdGlvbnMiLCJyZXEiLCJyZXMiLCJzZW5kU3RhdHVzIiwicG9zdCIsInNpZ251cEFkbWluIiwibG9naW4iLCJ2ZXJpZnlVc2VyIiwiY2hhbmdlUGFzc293b3JkIiwiVXBsb2FkVXNlckltYWdlIiwiZ2V0IiwibG9nb3V0IiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsSUFBSUEsT0FBTyxHQUFHQyxPQUFPLENBQUMsU0FBRCxDQUFyQjs7QUFDQSxJQUFJQyxVQUFVLEdBQUdGLE9BQU8sQ0FBQ0csTUFBUixFQUFqQjs7QUFFQSxNQUFNQyxVQUFVLEdBQUdILE9BQU8sQ0FBQyxhQUFELENBQTFCOztBQUNBLElBQUlJLE1BQU0sR0FBR0osT0FBTyxDQUFDLHVCQUFELENBQXBCOztBQUNBLE1BQU07QUFBRUssRUFBQUE7QUFBRixJQUFrQkwsT0FBTyxDQUFDLG1CQUFELENBQS9COztBQUNBLElBQUlNLFlBQVksR0FBR04sT0FBTyxDQUFDLDRCQUFELENBQTFCOztBQUNBLElBQUlPLGVBQWUsR0FBR1AsT0FBTyxDQUFDLDBCQUFELENBQTdCOztBQUNBLElBQUlRLGNBQWMsR0FBR1IsT0FBTyxDQUFDLCtCQUFELENBQTVCOztBQUNBLE1BQU1TLElBQUksR0FBR1QsT0FBTyxDQUFDLFFBQUQsQ0FBcEI7O0FBRUFDLFVBQVUsQ0FBQ1MsR0FBWCxDQUFlUCxVQUFVLENBQUNRLElBQVgsRUFBZjtBQUVBVixVQUFVLENBQUNXLE9BQVgsQ0FBbUIsR0FBbkIsRUFBd0JILElBQUksQ0FBQ0ksZUFBN0IsRUFBOEMsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEtBQWM7QUFBRUEsRUFBQUEsR0FBRyxDQUFDQyxVQUFKLENBQWUsR0FBZjtBQUFzQixDQUFwRjtBQUVBZixVQUFVLENBQUNnQixJQUFYLENBQWdCLGVBQWhCLEVBQWlDUixJQUFJLENBQUNJLGVBQXRDLEVBQXVETCxjQUFjLENBQUNVLFdBQXRFO0FBRUFqQixVQUFVLENBQUNnQixJQUFYLENBQWdCLFFBQWhCLEVBQTBCUixJQUFJLENBQUNJLGVBQS9CLEVBQWdETCxjQUFjLENBQUNXLEtBQS9EO0FBRUFsQixVQUFVLENBQUNnQixJQUFYLENBQWdCLHNCQUFoQixFQUF1Q1gsWUFBWSxDQUFDYyxVQUFwRCxFQUFnRVosY0FBYyxDQUFDYSxlQUEvRTtBQUVBcEIsVUFBVSxDQUFDZ0IsSUFBWCxDQUFnQiwyQkFBaEIsRUFBNENYLFlBQVksQ0FBQ2MsVUFBekQsRUFBcUVoQixNQUFNLENBQUNrQixlQUE1RTtBQUVBckIsVUFBVSxDQUFDc0IsR0FBWCxDQUFlLFNBQWYsRUFBeUJqQixZQUFZLENBQUNjLFVBQXRDLEVBQWtEWixjQUFjLENBQUNnQixNQUFqRTtBQUVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUJ6QixVQUFqQiIsInNvdXJjZXNDb250ZW50IjpbInZhciBleHByZXNzID0gcmVxdWlyZSgnZXhwcmVzcycpO1xyXG52YXIgdXNlclJvdXRlciA9IGV4cHJlc3MuUm91dGVyKCk7XHJcblxyXG5jb25zdCBib2R5UGFyc2VyID0gcmVxdWlyZSgnYm9keS1wYXJzZXInKTtcclxudmFyIHVwbG9hZCA9IHJlcXVpcmUoJy4uL2NvbnRyb2xsZXJzL3VwbG9hZCcpO1xyXG5jb25zdCB7IGNoZWNrU2NoZW1hIH0gPSByZXF1aXJlKCdleHByZXNzLXZhbGlkYXRvcicpO1xyXG52YXIgYXV0aGVudGljYXRlID0gcmVxdWlyZSgnLi4vbWlkZGxld2FyZS9hdXRoZW50aWNhdGUnKTtcclxudmFyIHZhbGlkYXRpb25SdWxlcyA9IHJlcXVpcmUoJy4uL21pZGRsZXdhcmUvdmFsaWRhdGlvbicpO1xyXG52YXIgdXNlckNvbnRyb2xsZXIgPSByZXF1aXJlKCcuLi9jb250cm9sbGVycy91c2VyQ29udHJvbGxlcicpO1xyXG5jb25zdCBjb3JzID0gcmVxdWlyZSgnLi9jb3JzJyk7XHJcblxyXG51c2VyUm91dGVyLnVzZShib2R5UGFyc2VyLmpzb24oKSk7XHJcblxyXG51c2VyUm91dGVyLm9wdGlvbnMoJyonLCBjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcblxyXG51c2VyUm91dGVyLnBvc3QoJy9zaWdudXAvYWRtaW4nLCBjb3JzLmNvcnNXaXRoT3B0aW9ucywgdXNlckNvbnRyb2xsZXIuc2lnbnVwQWRtaW4pO1xyXG5cclxudXNlclJvdXRlci5wb3N0KCcvbG9naW4nLCBjb3JzLmNvcnNXaXRoT3B0aW9ucywgdXNlckNvbnRyb2xsZXIubG9naW4pO1xyXG5cclxudXNlclJvdXRlci5wb3N0KCcvY2hhbmdlcGFzc293b3JkLzppZCcsYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIHVzZXJDb250cm9sbGVyLmNoYW5nZVBhc3Nvd29yZCk7XHJcblxyXG51c2VyUm91dGVyLnBvc3QoXCIvdXBkYXRlcHJvZmlsZXBpY3R1cmUvOmlkXCIsYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIHVwbG9hZC5VcGxvYWRVc2VySW1hZ2UpO1xyXG5cclxudXNlclJvdXRlci5nZXQoJy9sb2dvdXQnLGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCB1c2VyQ29udHJvbGxlci5sb2dvdXQpO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSB1c2VyUm91dGVyO1xyXG4iXX0=\",\"originalCode\":\"var express = require('express');\\r\\nvar userRouter = express.Router();\\r\\n\\r\\nconst bodyParser = require('body-parser');\\r\\nvar upload = require('../controllers/upload');\\r\\nconst { checkSchema } = require('express-validator');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\nvar validationRules = require('../middleware/validation');\\r\\nvar userController = require('../controllers/userController');\\r\\nconst cors = require('./cors');\\r\\n\\r\\nuserRouter.use(bodyParser.json());\\r\\n\\r\\nuserRouter.options('*', cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n\\r\\nuserRouter.post('/signup/admin', cors.corsWithOptions, userController.signupAdmin);\\r\\n\\r\\nuserRouter.post('/login', cors.corsWithOptions, userController.login);\\r\\n\\r\\nuserRouter.post('/changepassoword/:id',authenticate.verifyUser, userController.changePassoword);\\r\\n\\r\\nuserRouter.post(\\\"/updateprofilepicture/:id\\\",authenticate.verifyUser, upload.UploadUserImage);\\r\\n\\r\\nuserRouter.get('/logout',authenticate.verifyUser, userController.logout);\\r\\n\\r\\nmodule.exports = userRouter;\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/a6/userRouter_a6221ff3be20743fe1c0fd1dc9fd8435.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2377\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\userRouter.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":4566,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":4563,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":606,\"endOffset\":646,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const sharp = require('sharp');\\n\\nconst uid = require('uid');\\n\\nconst fs = require('fs');\\n\\nconst Users = require('../models/users');\\n\\nconst Places = require('../models/visitingPlaces');\\n\\nconst uploadFile = async (req, res) => {\\n try {\\n await upload(req, res);\\n\\n if (req.file == undefined) {\\n return res.send(`You must select a file.`);\\n }\\n\\n return res.send(`File has been uploaded.`);\\n } catch (error) {\\n return res.send(`Error when trying upload image: ${error}`);\\n }\\n};\\n\\nconst UploadUserImage = async (req, res, next) => {\\n try {\\n const user_id = req.params._id;\\n const user = await Users.findById(user_id);\\n console.log(req);\\n let imageUrl;\\n\\n if (req.file) {\\n imageUrl = `${uid()}__${req.file.originalname}`;\\n let filename = `images/userImages/${imageUrl}`;\\n let previousImagePath = `images/userImages/${user.image}`;\\n const imageExist = fs.existsSync(previousImagePath);\\n\\n if (imageExist) {\\n deleteImage(previousImagePath);\\n }\\n\\n await sharp(req.file.path).rotate().resize(500, 500).toFile(filename);\\n fs.unlink(req.file.path, err => {\\n if (err) {}\\n });\\n } else {\\n imageUrl = 'profile.png';\\n }\\n\\n user.image = imageUrl;\\n await user.save();\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n message: 'Successfully updated profile picture'\\n });\\n } catch (err) {\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Error while updating profile picture'\\n });\\n }\\n};\\n\\nconst uploadPlaceImage = async (req, res, next) => {\\n try {\\n const place_id = req.params._id;\\n const place = await Places.findById(place_id);\\n let imageUrl;\\n\\n if (req.file) {\\n imageUrl = `${uid()}__${req.file.originalname}`;\\n let filename = `images/placeImages/${imageUrl}`;\\n let previousImagePath = `images/placeImages/${place.image}`;\\n const imageExist = fs.existsSync(previousImagePath);\\n\\n if (imageExist) {\\n deleteImage(previousImagePath);\\n }\\n\\n await sharp(req.file.path).rotate().resize(500, 500).toFile(filename);\\n fs.unlink(req.file.path, err => {\\n if (err) {}\\n });\\n } else {\\n imageUrl = 'image.png';\\n }\\n\\n place.image = imageUrl;\\n await place.save();\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n message: 'Successfully updated profile picture'\\n });\\n } catch (err) {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Error while updating profile picture'\\n });\\n }\\n};\\n\\nexports.UploadUserImage = UploadUserImage;\\nexports.uploadFile = uploadFile;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVwbG9hZC5qcyJdLCJuYW1lcyI6WyJzaGFycCIsInJlcXVpcmUiLCJ1aWQiLCJmcyIsIlVzZXJzIiwiUGxhY2VzIiwidXBsb2FkRmlsZSIsInJlcSIsInJlcyIsInVwbG9hZCIsImZpbGUiLCJ1bmRlZmluZWQiLCJzZW5kIiwiZXJyb3IiLCJVcGxvYWRVc2VySW1hZ2UiLCJuZXh0IiwidXNlcl9pZCIsInBhcmFtcyIsIl9pZCIsInVzZXIiLCJmaW5kQnlJZCIsImNvbnNvbGUiLCJsb2ciLCJpbWFnZVVybCIsIm9yaWdpbmFsbmFtZSIsImZpbGVuYW1lIiwicHJldmlvdXNJbWFnZVBhdGgiLCJpbWFnZSIsImltYWdlRXhpc3QiLCJleGlzdHNTeW5jIiwiZGVsZXRlSW1hZ2UiLCJwYXRoIiwicm90YXRlIiwicmVzaXplIiwidG9GaWxlIiwidW5saW5rIiwiZXJyIiwic2F2ZSIsInN0YXR1c0NvZGUiLCJzZXRIZWFkZXIiLCJqc29uIiwic3VjY2VzcyIsIm1lc3NhZ2UiLCJ1cGxvYWRQbGFjZUltYWdlIiwicGxhY2VfaWQiLCJwbGFjZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLEtBQUssR0FBR0MsT0FBTyxDQUFDLE9BQUQsQ0FBckI7O0FBQ0EsTUFBTUMsR0FBRyxHQUFHRCxPQUFPLENBQUMsS0FBRCxDQUFuQjs7QUFDQSxNQUFNRSxFQUFFLEdBQUdGLE9BQU8sQ0FBQyxJQUFELENBQWxCOztBQUNBLE1BQU1HLEtBQUssR0FBR0gsT0FBTyxDQUFDLGlCQUFELENBQXJCOztBQUNBLE1BQU1JLE1BQU0sR0FBR0osT0FBTyxDQUFDLDBCQUFELENBQXRCOztBQUVBLE1BQU1LLFVBQVUsR0FBRyxPQUFPQyxHQUFQLEVBQVlDLEdBQVosS0FBb0I7QUFDbkMsTUFBSTtBQUNBLFVBQU1DLE1BQU0sQ0FBQ0YsR0FBRCxFQUFNQyxHQUFOLENBQVo7O0FBRUEsUUFBSUQsR0FBRyxDQUFDRyxJQUFKLElBQVlDLFNBQWhCLEVBQTJCO0FBQ3ZCLGFBQU9I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Q0FBQzhCLFVBQUosR0FBaUIsR0FBakI7QUFDQTlCLElBQUFBLEdBQUcsQ0FBQytCLFNBQUosQ0FBYyxjQUFkLEVBQThCLGtCQUE5QjtBQUNBL0IsSUFBQUEsR0FBRyxDQUFDZ0MsSUFBSixDQUFTO0FBQUVDLE1BQUFBLE9BQU8sRUFBRSxLQUFYO0FBQWtCQyxNQUFBQSxPQUFPLEVBQUU7QUFBM0IsS0FBVDtBQUNIO0FBQ0osQ0F6Q0Q7O0FBMkNBSSxPQUFPLENBQUNoQyxlQUFSLEdBQTBCQSxlQUExQjtBQUNBZ0MsT0FBTyxDQUFDeEMsVUFBUixHQUFxQkEsVUFBckIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBzaGFycCA9IHJlcXVpcmUoJ3NoYXJwJyk7XHJcbmNvbnN0IHVpZCA9IHJlcXVpcmUoJ3VpZCcpO1xyXG5jb25zdCBmcyA9IHJlcXVpcmUoJ2ZzJyk7XHJcbmNvbnN0IFVzZXJzID0gcmVxdWlyZSgnLi4vbW9kZWxzL3VzZXJzJyk7XHJcbmNvbnN0IFBsYWNlcyA9IHJlcXVpcmUoJy4uL21vZGVscy92aXNpdGluZ1BsYWNlcycpXHJcblxyXG5jb25zdCB1cGxvYWRGaWxlID0gYXN5bmMgKHJlcSwgcmVzKSA9PiB7XHJcbiAgICB0cnkge1xyXG4gICAgICAgIGF3YWl0IHVwbG9hZChyZXEsIHJlcyk7XHJcblxyXG4gICAgICAgIGlmIChyZXEuZmlsZSA9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlcy5zZW5kKGBZb3UgbXVzdCBzZWxlY3QgYSBmaWxlLmApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHJlcy5zZW5kKGBGaWxlIGhhcyBiZWVuIHVwbG9hZGVkLmApO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICByZXR1cm4gcmVzLnNlbmQoYEVycm9yIHdoZW4gdHJ5aW5nIHVwbG9hZCBpbWFnZTogJHtlcnJvcn1gKTtcclxuICAgIH1cclxufTtcclxuXHJcbmNvbnN0IFVwbG9hZFVzZXJJbWFnZSA9IGFzeW5jIChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgICBjb25zdCB1c2VyX2lkID0gcmVxLnBhcmFtcy5faWQ7XHJcbiAgICAgICAgY29uc3QgdXNlciA9IGF3YWl0IFVzZXJzLmZpbmRCeUlkKHVzZXJfaWQpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKHJlcSk7XHJcblxyXG4gICAgICAgIGxldCBpbWFnZVVybDtcclxuICAgICAgICBpZiAocmVxLmZpbGUpIHtcclxuICAgICAgICAgICAgaW1hZ2VVcmwgPSBgJHt1aWQoKX1fXyR7cmVxLmZpbGUub3JpZ2luYWxuYW1lfWA7XHJcbiAgICAgICAgICAgIGxldCBmaWxlbmFtZSA9IGBpbWFnZXMvdXNlckltYWdlcy8ke2ltYWdlVXJsfWA7XHJcbiAgICAgICAgICAgIGxldCBwcmV2aW91c0ltYWdlUGF0aCA9IGBpbWFnZXMvdXNlckltYWdlcy8ke3VzZXIuaW1hZ2V9YDtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGltYWdlRXhpc3QgPSBmcy5leGlzdHNTeW5jKHByZXZpb3VzSW1hZ2VQYXRoKTtcclxuICAgICAgICAgICAgaWYgKGltYWdlRXhpc3QpIHtcclxuICAgICAgICAgICAgICAgIGRlbGV0ZUltYWdlKHByZXZpb3VzSW1hZ2VQYXRoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBhd2FpdCBzaGFycChyZXEuZmlsZS5wYXRoKVxyXG4gICAgICAgICAgICAgICAgLnJvdGF0ZSgpXHJcbiAgICAgICAgICAgICAgICAucmVzaXplKDUwMCwgNTAwKVxyXG4gICAgICAgICAgICAgICAgLnRvRmlsZShmaWxlbmFtZSk7XHJcblxyXG4gICAgICAgICAgICBmcy51bmxpbmsocmVxLmZpbGUucGF0aCwgKGVycikgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGltYWdlVXJsID0gJ3Byb2ZpbGUucG5nJztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHVzZXIuaW1hZ2UgPSBpbWFnZVVybDtcclxuICAgICAgICBhd2FpdCB1c2VyLnNhdmUoKTtcclxuXHJcblxyXG4gICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCBtZXNzYWdlOiAnU3VjY2Vzc2Z1bGx5IHVwZGF0ZWQgcHJvZmlsZSBwaWN0dXJlJyB9KTtcclxuXHJcbiAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDUwMDtcclxuICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogZmFsc2UsIG1lc3NhZ2U6ICdFcnJvciB3aGlsZSB1cGRhdGluZyBwcm9maWxlIHBpY3R1cmUnIH0pO1xyXG4gICAgfVxyXG59O1xyXG5cclxuY29uc3QgdXBsb2FkUGxhY2VJbWFnZSA9IGFzeW5jIChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgICBjb25zdCBwbGFjZV9pZCA9IHJlcS5wYXJhbXMuX2lkO1xyXG4gICAgICAgIGNvbnN0IHBsYWNlID0gYXdhaXQgUGxhY2VzLmZpbmRCeUlkKHBsYWNlX2lkKTtcclxuXHJcbiAgICAgICAgbGV0IGltYWdlVXJsO1xyXG4gICAgICAgIGlmIChyZXEuZmlsZSkge1xyXG4gICAgICAgICAgICBpbWFnZVVybCA9IGAke3VpZCgpfV9fJHtyZXEuZmlsZS5vcmlnaW5hbG5hbWV9YDtcclxuICAgICAgICAgICAgbGV0IGZpbGVuYW1lID0gYGltYWdlcy9wbGFjZUltYWdlcy8ke2ltYWdlVXJsfWA7XHJcbiAgICAgICAgICAgIGxldCBwcmV2aW91c0ltYWdlUGF0aCA9IGBpbWFnZXMvcGxhY2VJbWFnZXMvJHtwbGFjZS5pbWFnZX1gO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgaW1hZ2VFeGlzdCA9IGZzLmV4aXN0c1N5bmMocHJldmlvdXNJbWFnZVBhdGgpO1xyXG4gICAgICAgICAgICBpZiAoaW1hZ2VFeGlzdCkge1xyXG4gICAgICAgICAgICAgICAgZGVsZXRlSW1hZ2UocHJldmlvdXNJbWFnZVBhdGgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGF3YWl0IHNoYXJwKHJlcS5maWxlLnBhdGgpXHJcbiAgICAgICAgICAgICAgICAucm90YXRlKClcclxuICAgICAgICAgICAgICAgIC5yZXNpemUoNTAwLCA1MDApXHJcbiAgICAgICAgICAgICAgICAudG9GaWxlKGZpbGVuYW1lKTtcclxuXHJcbiAgICAgICAgICAgIGZzLnVubGluayhyZXEuZmlsZS5wYXRoLCAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaW1hZ2VVcmwgPSAnaW1hZ2UucG5nJztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHBsYWNlLmltYWdlID0gaW1hZ2VVcmw7XHJcbiAgICAgICAgYXdhaXQgcGxhY2Uuc2F2ZSgpO1xyXG5cclxuXHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA1MDA7XHJcbiAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIG1lc3NhZ2U6ICdTdWNjZXNzZnVsbHkgdXBkYXRlZCBwcm9maWxlIHBpY3R1cmUnIH0pO1xyXG5cclxuICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogJ0Vycm9yIHdoaWxlIHVwZGF0aW5nIHByb2ZpbGUgcGljdHVyZScgfSk7XHJcbiAgICB9XHJcbn07XHJcblxyXG5leHBvcnRzLlVwbG9hZFVzZXJJbWFnZSA9IFVwbG9hZFVzZXJJbWFnZTtcclxuZXhwb3J0cy51cGxvYWRGaWxlID0gdXBsb2FkRmlsZTsiXX0=\",\"originalCode\":\"const sharp = require('sharp');\\r\\nconst uid = require('uid');\\r\\nconst fs = require('fs');\\r\\nconst Users = require('../models/users');\\r\\nconst Places = require('../models/visitingPlaces')\\r\\n\\r\\nconst uploadFile = async (req, res) => {\\r\\n try {\\r\\n await upload(req, res);\\r\\n\\r\\n if (req.file == undefined) {\\r\\n return res.send(`You must select a file.`);\\r\\n }\\r\\n\\r\\n return res.send(`File has been uploaded.`);\\r\\n } catch (error) {\\r\\n return res.send(`Error when trying upload image: ${error}`);\\r\\n }\\r\\n};\\r\\n\\r\\nconst UploadUserImage = async (req, res, next) => {\\r\\n try {\\r\\n const user_id = req.params._id;\\r\\n const user = await Users.findById(user_id);\\r\\n console.log(req);\\r\\n\\r\\n let imageUrl;\\r\\n if (req.file) {\\r\\n imageUrl = `${uid()}__${req.file.originalname}`;\\r\\n let filename = `images/userImages/${imageUrl}`;\\r\\n let previousImagePath = `images/userImages/${user.image}`;\\r\\n\\r\\n const imageExist = fs.existsSync(previousImagePath);\\r\\n if (imageExist) {\\r\\n deleteImage(previousImagePath);\\r\\n }\\r\\n await sharp(req.file.path)\\r\\n .rotate()\\r\\n .resize(500, 500)\\r\\n .toFile(filename);\\r\\n\\r\\n fs.unlink(req.file.path, (err) => {\\r\\n if (err) {\\r\\n }\\r\\n })\\r\\n } else {\\r\\n imageUrl = 'profile.png';\\r\\n }\\r\\n\\r\\n user.image = imageUrl;\\r\\n await user.save();\\r\\n\\r\\n\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, message: 'Successfully updated profile picture' });\\r\\n\\r\\n } catch (err) {\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Error while updating profile picture' });\\r\\n }\\r\\n};\\r\\n\\r\\nconst uploadPlaceImage = async (req, res, next) => {\\r\\n try {\\r\\n const place_id = req.params._id;\\r\\n const place = await Places.findById(place_id);\\r\\n\\r\\n let imageUrl;\\r\\n if (req.file) {\\r\\n imageUrl = `${uid()}__${req.file.originalname}`;\\r\\n let filename = `images/placeImages/${imageUrl}`;\\r\\n let previousImagePath = `images/placeImages/${place.image}`;\\r\\n\\r\\n const imageExist = fs.existsSync(previousImagePath);\\r\\n if (imageExist) {\\r\\n deleteImage(previousImagePath);\\r\\n }\\r\\n await sharp(req.file.path)\\r\\n .rotate()\\r\\n .resize(500, 500)\\r\\n .toFile(filename);\\r\\n\\r\\n fs.unlink(req.file.path, (err) => {\\r\\n if (err) {\\r\\n }\\r\\n })\\r\\n } else {\\r\\n imageUrl = 'image.png';\\r\\n }\\r\\n\\r\\n place.image = imageUrl;\\r\\n await place.save();\\r\\n\\r\\n\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, message: 'Successfully updated profile picture' });\\r\\n\\r\\n } catch (err) {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Error while updating profile picture' });\\r\\n }\\r\\n};\\r\\n\\r\\nexports.UploadUserImage = UploadUserImage;\\r\\nexports.uploadFile = uploadFile;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/7c/upload_7c4638f764653e4bdd79a0ce3f99ff41.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2378\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\upload.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":12934,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":12931,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"uploadFile\",\"ranges\":[{\"startOffset\":293,\"endOffset\":580,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"UploadUserImage\",\"ranges\":[{\"startOffset\":607,\"endOffset\":1726,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"uploadPlaceImage\",\"ranges\":[{\"startOffset\":1754,\"endOffset\":2858,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"var mongoose = require('mongoose');\\n\\nvar Schema = mongoose.Schema;\\n\\nvar passportLocalMongoose = require('passport-local-mongoose');\\n\\nvar User = new Schema({\\n firstname: {\\n type: String,\\n required: true\\n },\\n lastname: {\\n type: String,\\n required: true\\n },\\n email: {\\n type: String,\\n required: true,\\n unique: true\\n },\\n mobile: {\\n type: String\\n },\\n role: {\\n type: String,\\n default: \\\"user\\\",\\n enum: ['user', 'moderater', 'admin']\\n },\\n image: {\\n type: String\\n },\\n suite: {\\n type: String,\\n enum: ['gold', 'luxury', 'platinum']\\n },\\n rommnumber: {\\n type: String\\n },\\n userstate: {\\n type: String,\\n default: \\\"in\\\",\\n enum: ['in', 'out']\\n }\\n}, {\\n timestamps: true\\n});\\nUser.plugin(passportLocalMongoose);\\nUser.index({\\n '$**': 'text'\\n});\\nvar Users = mongoose.model('User', User);\\nmodule.exports = Users;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVzZXJzLmpzIl0sIm5hbWVzIjpbIm1vbmdvb3NlIiwicmVxdWlyZSIsIlNjaGVtYSIsInBhc3Nwb3J0TG9jYWxNb25nb29zZSIsIlVzZXIiLCJmaXJzdG5hbWUiLCJ0eXBlIiwiU3RyaW5nIiwicmVxdWlyZWQiLCJsYXN0bmFtZSIsImVtYWlsIiwidW5pcXVlIiwibW9iaWxlIiwicm9sZSIsImRlZmF1bHQiLCJlbnVtIiwiaW1hZ2UiLCJzdWl0ZSIsInJvbW1udW1iZXIiLCJ1c2Vyc3RhdGUiLCJ0aW1lc3RhbXBzIiwicGx1Z2luIiwiaW5kZXgiLCJVc2VycyIsIm1vZGVsIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsSUFBSUEsUUFBUSxHQUFHQyxPQUFPLENBQUMsVUFBRCxDQUF0Qjs7QUFDQSxJQUFJQyxNQUFNLEdBQUdGLFFBQVEsQ0FBQ0UsTUFBdEI7O0FBRUEsSUFBSUMscUJBQXFCLEdBQUdGLE9BQU8sQ0FBQyx5QkFBRCxDQUFuQzs7QUFFQSxJQUFJRyxJQUFJLEdBQUcsSUFBSUYsTUFBSixDQUFXO0FBQ2xCRyxFQUFBQSxTQUFTLEVBQUU7QUFDUEMsSUFBQUEsSUFBSSxFQUFFQyxNQURDO0FBRVBDLElBQUFBLFFBQVEsRUFBRTtBQUZILEdBRE87QUFLbEJDLEVBQUFBLFFBQVEsRUFBRTtBQUNOSCxJQUFBQSxJQUFJLEVBQUVDLE1BREE7QUFFTkMsSUFBQUEsUUFBUSxFQUFFO0FBRkosR0FMUTtBQVNsQkUsRUFBQUEsS0FBSyxFQUFFO0FBQ0hKLElBQUFBLElBQUksRUFBRUMsTUFESDtBQUVIQyxJQUFBQSxRQUFRLEVBQUUsSUFGUDtBQUdIRyxJQUFBQSxNQUFNLEVBQUU7QUFITCxHQVRXO0FBY2xCQyxFQUFBQSxNQUFNLEVBQUM7QUFDSE4sSUFBQUEsSUFBSSxFQUFFQztBQURILEdBZFc7QUFpQmxCTSxFQUFBQSxJQUFJLEVBQ0o7QUFDSVAsSUFBQUEsSUFBSSxFQUFFQyxNQURWO0FBRUlPLElBQUFBLE9BQU8sRUFBRSxNQUZiO0FBR0lDLElBQUFBLElBQUksRUFBQyxDQUFDLE1BQUQsRUFBUSxXQUFSLEVBQW9CLE9BQXBCO0FBSFQsR0FsQmtCO0FBdUJsQkMsRUFBQUEsS0FBSyxFQUFFO0FBQ0hWLElBQUFBLElBQUksRUFBRUM7QUFESCxHQXZCVztBQTBCbEJVLEVBQUFBLEtBQUssRUFBQztBQUNGWCxJQUFBQSxJQUFJLEVBQUVDLE1BREo7QUFFRlEsSUFBQUEsSUFBSSxFQUFDLENBQUMsTUFBRCxFQUFRLFFBQVIsRUFBaUIsVUFBakI7QUFGSCxHQTFCWTtBQThCbEJHLEVBQUFBLFVBQVUsRUFBQztBQUNQWixJQUFBQSxJQUFJLEVBQUVDO0FBREMsR0E5Qk87QUFpQ2xCWSxFQUFBQSxTQUFTLEVBQUM7QUFDTmIsSUFBQUEsSUFBSSxFQUFFQyxNQURBO0FBRU5PLElBQUFBLE9BQU8sRUFBRSxJQUZIO0FBR05DLElBQUFBLElBQUksRUFBQyxDQUFDLElBQUQsRUFBTSxLQUFOO0FBSEM7QUFqQ1EsQ0FBWCxFQXNDUjtBQUNDSyxFQUFBQSxVQUFVLEVBQUU7QUFEYixDQXRDUSxDQUFYO0FBMENBaEIsSUFBSSxDQUFDaUIsTUFBTCxDQUFZbEIscUJBQVo7QUFDQUMsSUFBSSxDQUFDa0IsS0FBTCxDQUFXO0FBQUMsU0FBTTtBQUFQLENBQVg7QUFDQSxJQUFJQyxLQUFLLEdBQUd2QixRQUFRLENBQUN3QixLQUFULENBQWUsTUFBZixFQUF1QnBCLElBQXZCLENBQVo7QUFFQXFCLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQkgsS0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgbW9uZ29vc2UgPSByZXF1aXJlKCdtb25nb29zZScpO1xyXG52YXIgU2NoZW1hID0gbW9uZ29vc2UuU2NoZW1hO1xyXG5cclxudmFyIHBhc3Nwb3J0TG9jYWxNb25nb29zZSA9IHJlcXVpcmUoJ3Bhc3Nwb3J0LWxvY2FsLW1vbmdvb3NlJyk7XHJcblxyXG52YXIgVXNlciA9IG5ldyBTY2hlbWEoe1xyXG4gICAgZmlyc3RuYW1lOiB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlXHJcbiAgICB9LFxyXG4gICAgbGFzdG5hbWU6IHtcclxuICAgICAgICB0eXBlOiBTdHJpbmcsXHJcbiAgICAgICAgcmVxdWlyZWQ6IHRydWVcclxuICAgIH0sXHJcbiAgICBlbWFpbDoge1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgICB1bmlxdWU6IHRydWVcclxuICAgIH0sXHJcbiAgICBtb2JpbGU6e1xyXG4gICAgICAgIHR5cGU6IFN0cmluZ1xyXG4gICAgfSxcclxuICAgIHJvbGU6XHJcbiAgICB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICAgIGRlZmF1bHQ6IFwidXNlclwiLFxyXG4gICAgICAgIGVudW06Wyd1c2VyJywnbW9kZXJhdGVyJywnYWRtaW4nXVxyXG4gICAgfSxcclxuICAgIGltYWdlOiB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nXHJcbiAgICB9LFxyXG4gICAgc3VpdGU6e1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICBlbnVtOlsnZ29sZCcsJ2x1eHVyeScsJ3BsYXRpbnVtJ11cclxuICAgIH0sXHJcbiAgICByb21tbnVtYmVyOntcclxuICAgICAgICB0eXBlOiBTdHJpbmdcclxuICAgIH0sXHJcbiAgICB1c2Vyc3RhdGU6e1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICBkZWZhdWx0OiBcImluXCIsXHJcbiAgICAgICAgZW51bTpbJ2luJywnb3V0J11cclxuICAgIH1cclxufSwge1xyXG4gICAgdGltZXN0YW1wczogdHJ1ZVxyXG59KTtcclxuXHJcblVzZXIucGx1Z2luKHBhc3Nwb3J0TG9jYWxNb25nb29zZSk7XHJcblVzZXIuaW5kZXgoeyckKionOid0ZXh0J30pO1xyXG52YXIgVXNlcnMgPSBtb25nb29zZS5tb2RlbCgnVXNlcicsIFVzZXIpO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBVc2VyczsiXX0=\",\"originalCode\":\"var mongoose = require('mongoose');\\r\\nvar Schema = mongoose.Schema;\\r\\n\\r\\nvar passportLocalMongoose = require('passport-local-mongoose');\\r\\n\\r\\nvar User = new Schema({\\r\\n firstname: {\\r\\n type: String,\\r\\n required: true\\r\\n },\\r\\n lastname: {\\r\\n type: String,\\r\\n required: true\\r\\n },\\r\\n email: {\\r\\n type: String,\\r\\n required: true,\\r\\n unique: true\\r\\n },\\r\\n mobile:{\\r\\n type: String\\r\\n },\\r\\n role:\\r\\n {\\r\\n type: String,\\r\\n default: \\\"user\\\",\\r\\n enum:['user','moderater','admin']\\r\\n },\\r\\n image: {\\r\\n type: String\\r\\n },\\r\\n suite:{\\r\\n type: String,\\r\\n enum:['gold','luxury','platinum']\\r\\n },\\r\\n rommnumber:{\\r\\n type: String\\r\\n },\\r\\n userstate:{\\r\\n type: String,\\r\\n default: \\\"in\\\",\\r\\n enum:['in','out']\\r\\n }\\r\\n}, {\\r\\n timestamps: true\\r\\n});\\r\\n\\r\\nUser.plugin(passportLocalMongoose);\\r\\nUser.index({'$**':'text'});\\r\\nvar Users = mongoose.model('User', User);\\r\\n\\r\\nmodule.exports = Users;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/fa/users_fa250a82bd410ffb1909f920e93eed19.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2448\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\models\\\\users.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":4633,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":4630,\"count\":1}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const mongoose = require('mongoose');\\n\\nconst Schema = mongoose.Schema;\\nconst pointSchema = new Schema({\\n type: {\\n type: String,\\n enum: ['Point'],\\n required: true,\\n default: 'Point'\\n },\\n coordinates: {\\n type: [Number],\\n required: true\\n }\\n});\\nconst placeSchema = new Schema({\\n name: {\\n type: String,\\n required: true,\\n unique: true\\n },\\n description: {\\n type: String,\\n required: true\\n },\\n location: {\\n type: pointSchema,\\n index: '2dsphere',\\n required: true\\n },\\n distance: {\\n type: String,\\n required: true\\n },\\n timeToReach: {\\n type: String,\\n required: true\\n },\\n image: {\\n type: String\\n },\\n travellingMethods: [{\\n type: String,\\n enum: ['Bus', 'Car', 'Train', 'Threewheeler', 'Foot']\\n }]\\n}, {\\n timestamps: true\\n});\\nplaceSchema.index({\\n '$**': 'text'\\n});\\nvar Places = mongoose.model('Place', placeSchema);\\nmodule.exports = Places;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInZpc2l0aW5nUGxhY2VzLmpzIl0sIm5hbWVzIjpbIm1vbmdvb3NlIiwicmVxdWlyZSIsIlNjaGVtYSIsInBvaW50U2NoZW1hIiwidHlwZSIsIlN0cmluZyIsImVudW0iLCJyZXF1aXJlZCIsImRlZmF1bHQiLCJjb29yZGluYXRlcyIsIk51bWJlciIsInBsYWNlU2NoZW1hIiwibmFtZSIsInVuaXF1ZSIsImRlc2NyaXB0aW9uIiwibG9jYXRpb24iLCJpbmRleCIsImRpc3RhbmNlIiwidGltZVRvUmVhY2giLCJpbWFnZSIsInRyYXZlbGxpbmdNZXRob2RzIiwidGltZXN0YW1wcyIsIlBsYWNlcyIsIm1vZGVsIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsUUFBUSxHQUFHQyxPQUFPLENBQUMsVUFBRCxDQUF4Qjs7QUFDQSxNQUFNQyxNQUFNLEdBQUdGLFFBQVEsQ0FBQ0UsTUFBeEI7QUFFQSxNQUFNQyxXQUFXLEdBQUcsSUFBSUQsTUFBSixDQUFXO0FBQzNCRSxFQUFBQSxJQUFJLEVBQUU7QUFDRkEsSUFBQUEsSUFBSSxFQUFFQyxNQURKO0FBRUZDLElBQUFBLElBQUksRUFBRSxDQUFDLE9BQUQsQ0FGSjtBQUdGQyxJQUFBQSxRQUFRLEVBQUUsSUFIUjtBQUlGQyxJQUFBQSxPQUFPLEVBQUU7QUFKUCxHQURxQjtBQU8zQkMsRUFBQUEsV0FBVyxFQUFFO0FBQ1RMLElBQUFBLElBQUksRUFBRSxDQUFDTSxNQUFELENBREc7QUFFVEgsSUFBQUEsUUFBUSxFQUFFO0FBRkQ7QUFQYyxDQUFYLENBQXBCO0FBYUEsTUFBTUksV0FBVyxHQUFHLElBQUlULE1BQUosQ0FBVztBQUMzQlUsRUFBQUEsSUFBSSxFQUFFO0FBQ0ZSLElBQUFBLElBQUksRUFBRUMsTUFESjtBQUVGRSxJQUFBQSxRQUFRLEVBQUUsSUFGUjtBQUdGTSxJQUFBQSxNQUFNLEVBQUU7QUFITixHQURxQjtBQU0zQkMsRUFBQUEsV0FBVyxFQUFFO0FBQ1RWLElBQUFBLElBQUksRUFBRUMsTUFERztBQUVURSxJQUFBQSxRQUFRLEVBQUU7QUFGRCxHQU5jO0FBVTNCUSxFQUFBQSxRQUFRLEVBQUU7QUFDTlgsSUFBQUEsSUFBSSxFQUFFRCxXQURBO0FBRU5hLElBQUFBLEtBQUssRUFBRSxVQUZEO0FBR05ULElBQUFBLFFBQVEsRUFBRTtBQUhKLEdBVmlCO0FBZTNCVSxFQUFBQSxRQUFRLEVBQUU7QUFDTmIsSUFBQUEsSUFBSSxFQUFFQyxNQURBO0FBRU5FLElBQUFBLFFBQVEsRUFBRTtBQUZKLEdBZmlCO0FBbUIzQlcsRUFBQUEsV0FBVyxFQUFFO0FBQ1RkLElBQUFBLElBQUksRUFBRUMsTUFERztBQUVURSxJQUFBQSxRQUFRLEVBQUU7QUFGRCxHQW5CYztBQXVCM0JZLEVBQUFBLEtBQUssRUFDTDtBQUNJZixJQUFBQSxJQUFJLEVBQUVDO0FBRFYsR0F4QjJCO0FBMkIzQmUsRUFBQUEsaUJBQWlCLEVBQUUsQ0FDZjtBQUNJaEIsSUFBQUEsSUFBSSxFQUFFQyxNQURWO0FBRUlDLElBQUFBLElBQUksRUFBRSxDQUFDLEtBQUQsRUFBUSxLQUFSLEVBQWUsT0FBZixFQUF3QixjQUF4QixFQUF3QyxNQUF4QztBQUZWLEdBRGU7QUEzQlEsQ0FBWCxFQWlDakI7QUFDQ2UsRUFBQUEsVUFBVSxFQUFFO0FBRGIsQ0FqQ2lCLENBQXBCO0FBcUNBVixXQUFXLENBQUNLLEtBQVosQ0FBa0I7QUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJTSxNQUFNLEdBQUd0QixRQUFRLENBQUN1QixLQUFULENBQWUsT0FBZixFQUF3QlosV0FBeEIsQ0FBYjtBQUVBYSxNQUFNLENBQUNDLE9BQVAsR0FBaUJILE1BQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgbW9uZ29vc2UgPSByZXF1aXJlKCdtb25nb29zZScpO1xyXG5jb25zdCBTY2hlbWEgPSBtb25nb29zZS5TY2hlbWE7XHJcblxyXG5jb25zdCBwb2ludFNjaGVtYSA9IG5ldyBTY2hlbWEoe1xyXG4gICAgdHlwZToge1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICBlbnVtOiBbJ1BvaW50J10sXHJcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXHJcbiAgICAgICAgZGVmYXVsdDogJ1BvaW50J1xyXG4gICAgfSxcclxuICAgIGNvb3JkaW5hdGVzOiB7XHJcbiAgICAgICAgdHlwZTogW051bWJlcl0sXHJcbiAgICAgICAgcmVxdWlyZWQ6IHRydWVcclxuICAgIH1cclxufSk7XHJcblxyXG5jb25zdCBwbGFjZVNjaGVtYSA9IG5ldyBTY2hlbWEoe1xyXG4gICAgbmFtZToge1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgICB1bmlxdWU6IHRydWVcclxuICAgIH0sXHJcbiAgICBkZXNjcmlwdGlvbjoge1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICByZXF1aXJlZDogdHJ1ZVxyXG4gICAgfSxcclxuICAgIGxvY2F0aW9uOiB7XHJcbiAgICAgICAgdHlwZTogcG9pbnRTY2hlbWEsXHJcbiAgICAgICAgaW5kZXg6ICcyZHNwaGVyZScsXHJcbiAgICAgICAgcmVxdWlyZWQ6IHRydWVcclxuICAgIH0sXHJcbiAgICBkaXN0YW5jZToge1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICByZXF1aXJlZDogdHJ1ZVxyXG4gICAgfSxcclxuICAgIHRpbWVUb1JlYWNoOiB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlXHJcbiAgICB9LFxyXG4gICAgaW1hZ2U6XHJcbiAgICB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgfSxcclxuICAgIHRyYXZlbGxpbmdNZXRob2RzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXHJcbiAgICAgICAgICAgIGVudW06IFsnQnVzJywgJ0NhcicsICdUcmFpbicsICdUaHJlZXdoZWVsZXInLCAnRm9vdCddXHJcbiAgICAgICAgfVxyXG4gICAgXVxyXG59LCB7XHJcbiAgICB0aW1lc3RhbXBzOiB0cnVlXHJcbn0pO1xyXG5cclxucGxhY2VTY2hlbWEuaW5kZXgoeyAnJCoqJzogJ3RleHQnIH0pO1xyXG52YXIgUGxhY2VzID0gbW9uZ29vc2UubW9kZWwoJ1BsYWNlJywgcGxhY2VTY2hlbWEpO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBQbGFjZXM7Il19\",\"originalCode\":\"const mongoose = require('mongoose');\\r\\nconst Schema = mongoose.Schema;\\r\\n\\r\\nconst pointSchema = new Schema({\\r\\n type: {\\r\\n type: String,\\r\\n enum: ['Point'],\\r\\n required: true,\\r\\n default: 'Point'\\r\\n },\\r\\n coordinates: {\\r\\n type: [Number],\\r\\n required: true\\r\\n }\\r\\n});\\r\\n\\r\\nconst placeSchema = new Schema({\\r\\n name: {\\r\\n type: String,\\r\\n required: true,\\r\\n unique: true\\r\\n },\\r\\n description: {\\r\\n type: String,\\r\\n required: true\\r\\n },\\r\\n location: {\\r\\n type: pointSchema,\\r\\n index: '2dsphere',\\r\\n required: true\\r\\n },\\r\\n distance: {\\r\\n type: String,\\r\\n required: true\\r\\n },\\r\\n timeToReach: {\\r\\n type: String,\\r\\n required: true\\r\\n },\\r\\n image:\\r\\n {\\r\\n type: String,\\r\\n },\\r\\n travellingMethods: [\\r\\n {\\r\\n type: String,\\r\\n enum: ['Bus', 'Car', 'Train', 'Threewheeler', 'Foot']\\r\\n }\\r\\n ]\\r\\n}, {\\r\\n timestamps: true\\r\\n});\\r\\n\\r\\nplaceSchema.index({ '$**': 'text' });\\r\\nvar Places = mongoose.model('Place', placeSchema);\\r\\n\\r\\nmodule.exports = Places;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/c4/visitingPlaces_c4ccc91c117df8c4aeada72a82534688.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2459\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\models\\\\visitingPlaces.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":4920,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":4917,\"count\":1}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"var passport = require('passport');\\n\\nvar LocalStrategy = require('passport-local').Strategy;\\n\\nvar User = require('../models/users');\\n\\nvar JwtStrategy = require('passport-jwt').Strategy;\\n\\nvar ExtractJwt = require('passport-jwt').ExtractJwt;\\n\\nvar jwt = require('jsonwebtoken');\\n\\npassport.use(new LocalStrategy(User.authenticate()));\\npassport.serializeUser(User.serializeUser());\\npassport.deserializeUser(User.deserializeUser());\\n\\nexports.getToken = user => {\\n return jwt.sign(user, process.env.secretKey, {\\n expiresIn: 3600\\n });\\n};\\n\\nvar opts = {};\\nopts.jwtFromRequest = ExtractJwt.fromAuthHeaderAsBearerToken();\\nopts.secretOrKey = process.env.secretKey;\\nexports.jwtPassport = passport.use(new JwtStrategy(opts, (jwt_payload, done) => {\\n User.findOne({\\n _id: jwt_payload._id\\n }, (err, user) => {\\n if (err) {\\n return done(err, false);\\n } else if (user) {\\n return done(null, user);\\n } else {\\n return done(null, false);\\n }\\n });\\n}));\\nexports.verifyUser = passport.authenticate('jwt', {\\n session: false\\n});\\n\\nexports.verifyAdmin = (req, res, next) => {\\n if (req.user.role == 'admin') {\\n return next();\\n } else if (req.user.role != 'admin') {\\n err = new Error('You are not authorized to perform this operation!');\\n err.status = 403;\\n return next(err);\\n } else {\\n err = new Error('Admin Verification Failed!');\\n err.status = 500;\\n return next(err);\\n }\\n};\\n\\nexports.verifyModerater = (req, res, next) => {\\n if (req.user.role != 'user') {\\n return next();\\n } else if (req.user.role == 'user') {\\n err = new Error('You are not authorized to perform this operation!');\\n err.status = 403;\\n return next(err);\\n }\\n};\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF1dGhlbnRpY2F0ZS5qcyJdLCJuYW1lcyI6WyJwYXNzcG9ydCIsInJlcXVpcmUiLCJMb2NhbFN0cmF0ZWd5IiwiU3RyYXRlZ3kiLCJVc2VyIiwiSnd0U3RyYXRlZ3kiLCJFeHRyYWN0Snd0Iiwiand0IiwidXNlIiwiYXV0aGVudGljYXRlIiwic2VyaWFsaXplVXNlciIsImRlc2VyaWFsaXplVXNlciIsImV4cG9ydHMiLCJnZXRUb2tlbiIsInVzZXIiLCJzaWduIiwicHJvY2VzcyIsImVudiIsInNlY3JldEtleSIsImV4cGlyZXNJbiIsIm9wdHMiLCJqd3RGcm9tUmVxdWVzdCIsImZyb21BdXRoSGVhZGVyQXNCZWFyZXJUb2tlbiIsInNlY3JldE9yS2V5Iiwiand0UGFzc3BvcnQiLCJqd3RfcGF5bG9hZCIsImRvbmUiLCJmaW5kT25lIiwiX2lkIiwiZXJyIiwidmVyaWZ5VXNlciIsInNlc3Npb24iLCJ2ZXJpZnlBZG1pbiIsInJlcSIsInJlcyIsIm5leHQiLCJyb2xlIiwiRXJyb3IiLCJzdGF0dXMiLCJ2ZXJpZnlNb2RlcmF0ZXIiXSwibWFwcGluZ3MiOiJBQUFBLElBQUlBLFFBQVEsR0FBR0MsT0FBTyxDQUFDLFVBQUQsQ0FBdEI7O0FBQ0EsSUFBSUMsYUFBYSxHQUFHRCxPQUFPLENBQUMsZ0JBQUQsQ0FBUCxDQUEwQkUsUUFBOUM7O0FBQ0EsSUFBSUMsSUFBSSxHQUFHSCxPQUFPLENBQUMsaUJBQUQsQ0FBbEI7O0FBRUEsSUFBSUksV0FBVyxHQUFHSixPQUFPLENBQUMsY0FBRCxDQUFQLENBQXdCRSxRQUExQzs7QUFDQSxJQUFJRyxVQUFVLEdBQUdMLE9BQU8sQ0FBQyxjQUFELENBQVAsQ0FBd0JLLFVBQXpDOztBQUNBLElBQUlDLEdBQUcsR0FBR04sT0FBTyxDQUFDLGNBQUQsQ0FBakI7O0FBR0FELFFBQVEsQ0FBQ1EsR0FBVCxDQUFhLElBQUlOLGFBQUosQ0FBa0JFLElBQUksQ0FBQ0ssWUFBTCxFQUFsQixDQUFiO0FBQ0FULFFBQVEsQ0FBQ1UsYUFB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dCI6WyJ2YXIgcGFzc3BvcnQgPSByZXF1aXJlKCdwYXNzcG9ydCcpO1xyXG52YXIgTG9jYWxTdHJhdGVneSA9IHJlcXVpcmUoJ3Bhc3Nwb3J0LWxvY2FsJykuU3RyYXRlZ3k7XHJcbnZhciBVc2VyID0gcmVxdWlyZSgnLi4vbW9kZWxzL3VzZXJzJyk7XHJcblxyXG52YXIgSnd0U3RyYXRlZ3kgPSByZXF1aXJlKCdwYXNzcG9ydC1qd3QnKS5TdHJhdGVneTtcclxudmFyIEV4dHJhY3RKd3QgPSByZXF1aXJlKCdwYXNzcG9ydC1qd3QnKS5FeHRyYWN0Snd0O1xyXG52YXIgand0ID0gcmVxdWlyZSgnanNvbndlYnRva2VuJyk7XHJcblxyXG5cclxucGFzc3BvcnQudXNlKG5ldyBMb2NhbFN0cmF0ZWd5KFVzZXIuYXV0aGVudGljYXRlKCkpKTtcclxucGFzc3BvcnQuc2VyaWFsaXplVXNlcihVc2VyLnNlcmlhbGl6ZVVzZXIoKSk7XHJcbnBhc3Nwb3J0LmRlc2VyaWFsaXplVXNlcihVc2VyLmRlc2VyaWFsaXplVXNlcigpKTtcclxuXHJcbmV4cG9ydHMuZ2V0VG9rZW4gPSAodXNlcikgPT4ge1xyXG4gICAgcmV0dXJuIGp3dC5zaWduKHVzZXIsIHByb2Nlc3MuZW52LnNlY3JldEtleSxcclxuICAgICAgICB7IGV4cGlyZXNJbjogMzYwMCB9KTtcclxufTtcclxuXHJcbnZhciBvcHRzID0ge307XHJcbm9wdHMuand0RnJvbVJlcXVlc3QgPSBFeHRyYWN0Snd0LmZyb21BdXRoSGVhZGVyQXNCZWFyZXJUb2tlbigpO1xyXG5vcHRzLnNlY3JldE9yS2V5ID0gcHJvY2Vzcy5lbnYuc2VjcmV0S2V5O1xyXG5cclxuZXhwb3J0cy5qd3RQYXNzcG9ydCA9IHBhc3Nwb3J0LnVzZShuZXcgSnd0U3RyYXRlZ3kob3B0cyxcclxuICAgIChqd3RfcGF5bG9hZCwgZG9uZSkgPT4ge1xyXG4gICAgICAgIFVzZXIuZmluZE9uZSh7IF9pZDogand0X3BheWxvYWQuX2lkIH0sIChlcnIsIHVzZXIpID0+IHtcclxuICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRvbmUoZXJyLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAodXNlcikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRvbmUobnVsbCwgdXNlcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZG9uZShudWxsLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH0pKTtcclxuXHJcbmV4cG9ydHMudmVyaWZ5VXNlciA9IHBhc3Nwb3J0LmF1dGhlbnRpY2F0ZSgnand0JywgeyBzZXNzaW9uOiBmYWxzZSB9KTtcclxuXHJcbmV4cG9ydHMudmVyaWZ5QWRtaW4gPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIGlmIChyZXEudXNlci5yb2xlID09ICdhZG1pbicpIHtcclxuICAgICAgICByZXR1cm4gbmV4dCgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAocmVxLnVzZXIucm9sZSAhPSAnYWRtaW4nKSB7XHJcbiAgICAgICAgZXJyID0gbmV3IEVycm9yKCdZb3UgYXJlIG5vdCBhdXRob3JpemVkIHRvIHBlcmZvcm0gdGhpcyBvcGVyYXRpb24hJyk7XHJcbiAgICAgICAgZXJyLnN0YXR1cyA9IDQwMztcclxuICAgICAgICByZXR1cm4gbmV4dChlcnIpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgZXJyID0gbmV3IEVycm9yKCdBZG1pbiBWZXJpZmljYXRpb24gRmFpbGVkIScpO1xyXG4gICAgICAgIGVyci5zdGF0dXMgPSA1MDA7XHJcbiAgICAgICAgcmV0dXJuIG5leHQoZXJyKTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0cy52ZXJpZnlNb2RlcmF0ZXIgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIGlmIChyZXEudXNlci5yb2xlICE9ICd1c2VyJykge1xyXG4gICAgICAgIHJldHVybiBuZXh0KCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChyZXEudXNlci5yb2xlID09ICd1c2VyJykge1xyXG4gICAgICAgIGVyciA9IG5ldyBFcnJvcignWW91IGFyZSBub3QgYXV0aG9yaXplZCB0byBwZXJmb3JtIHRoaXMgb3BlcmF0aW9uIScpO1xyXG4gICAgICAgIGVyci5zdGF0dXMgPSA0MDM7XHJcbiAgICAgICAgcmV0dXJuIG5leHQoZXJyKTtcclxuICAgIH1cclxufVxyXG4iXX0=\",\"originalCode\":\"var passport = require('passport');\\r\\nvar LocalStrategy = require('passport-local').Strategy;\\r\\nvar User = require('../models/users');\\r\\n\\r\\nvar JwtStrategy = require('passport-jwt').Strategy;\\r\\nvar ExtractJwt = require('passport-jwt').ExtractJwt;\\r\\nvar jwt = require('jsonwebtoken');\\r\\n\\r\\n\\r\\npassport.use(new LocalStrategy(User.authenticate()));\\r\\npassport.serializeUser(User.serializeUser());\\r\\npassport.deserializeUser(User.deserializeUser());\\r\\n\\r\\nexports.getToken = (user) => {\\r\\n return jwt.sign(user, process.env.secretKey,\\r\\n { expiresIn: 3600 });\\r\\n};\\r\\n\\r\\nvar opts = {};\\r\\nopts.jwtFromRequest = ExtractJwt.fromAuthHeaderAsBearerToken();\\r\\nopts.secretOrKey = process.env.secretKey;\\r\\n\\r\\nexports.jwtPassport = passport.use(new JwtStrategy(opts,\\r\\n (jwt_payload, done) => {\\r\\n User.findOne({ _id: jwt_payload._id }, (err, user) => {\\r\\n if (err) {\\r\\n return done(err, false);\\r\\n }\\r\\n else if (user) {\\r\\n return done(null, user);\\r\\n }\\r\\n else {\\r\\n return done(null, false);\\r\\n }\\r\\n });\\r\\n }));\\r\\n\\r\\nexports.verifyUser = passport.authenticate('jwt', { session: false });\\r\\n\\r\\nexports.verifyAdmin = (req, res, next) => {\\r\\n if (req.user.role == 'admin') {\\r\\n return next();\\r\\n }\\r\\n else if (req.user.role != 'admin') {\\r\\n err = new Error('You are not authorized to perform this operation!');\\r\\n err.status = 403;\\r\\n return next(err);\\r\\n }\\r\\n else {\\r\\n err = new Error('Admin Verification Failed!');\\r\\n err.status = 500;\\r\\n return next(err);\\r\\n }\\r\\n}\\r\\n\\r\\nexports.verifyModerater = (req, res, next) => {\\r\\n if (req.user.role != 'user') {\\r\\n return next();\\r\\n }\\r\\n else if (req.user.role == 'user') {\\r\\n err = new Error('You are not authorized to perform this operation!');\\r\\n err.status = 403;\\r\\n return next(err);\\r\\n }\\r\\n}\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/17/authenticate_1749ed24acd3b9174e3e8d9c003de68d.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2460\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\middleware\\\\authenticate.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":8164,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":8161,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
.exports.getToken\",\"ranges\":[{\"startOffset\":536,\"endOffset\":622,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":803,\"endOffset\":1050,\"count\":5}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":875,\"endOffset\":1046,\"count\":5}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
.exports.verifyAdmin\",\"ranges\":[{\"startOffset\":1150,\"endOffset\":1495,\"count\":2}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
.exports.verifyModerater\",\"ranges\":[{\"startOffset\":1524,\"endOffset\":1761,\"count\":1}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"var validationRules = {\\n id: {\\n in: ['params', 'query'],\\n errorMessage: 'ID is wrong',\\n isInt: true,\\n toInt: true\\n },\\n name: {\\n errorMessage: 'Name should be at least 2 chars long and maximum of 50 chars',\\n isLength: {\\n options: {\\n min: 2,\\n max: 50\\n }\\n },\\n trim: true\\n },\\n description: {\\n errorMessage: 'Description should be at least 2 chars long and maximum of 200 chars',\\n isLength: {\\n options: {\\n min: 2,\\n max: 200\\n }\\n },\\n trim: true\\n },\\n distance: {\\n errorMessage: 'Distance should be at least 1 chars long and maximum of 200 chars',\\n isLength: {\\n options: {\\n min: 1,\\n max: 200\\n }\\n },\\n trim: true\\n },\\n timeToReach: {\\n errorMessage: 'Time To Reach should be at least 2 chars long and maximum of 200 chars',\\n isLength: {\\n options: {\\n min: 2,\\n max: 200\\n }\\n },\\n trim: true\\n },\\n firstname: {\\n errorMessage: 'First Name should be at least 3 chars long and maximum of 50 chars',\\n isLength: {\\n options: {\\n min: 3,\\n max: 50\\n }\\n },\\n trim: true\\n },\\n lastname: {\\n errorMessage: 'Last Name should be at least 3 chars long and maximum of 50 chars',\\n isLength: {\\n options: {\\n min: 3,\\n max: 50\\n }\\n },\\n trim: true\\n },\\n email: {\\n errorMessage: 'Please enter a valid email address',\\n isEmail: true,\\n trim: true\\n },\\n mobile: {\\n errorMessage: 'Please enter Phone Number in 10 digits',\\n isLength: {\\n options: {\\n min: 10,\\n max: 10\\n }\\n },\\n matches: {\\n options: [/^\\\\d{10}$/],\\n errorMessage: \\\"Please enter digits\\\"\\n },\\n trim: true\\n },\\n password: {\\n isLength: {\\n errorMessage: 'Password should be at least 6 chars long',\\n options: {\\n min: 6\\n }\\n }\\n },\\n confirm_password: {\\n errorMessage: 'Must have the same value as the password field',\\n custom: {\\n options: (value, {\\n req\\n }) => value === req.body.password\\n }\\n },\\n suite: {\\n errorMessage: 'Please select suite type',\\n isIn: {\\n options: [['gold', 'luxury', 'platinum']]\\n }\\n },\\n roomnumber: {\\n errorMessage: 'Room Number should be at least 3 chars long and maximum of 50 chars',\\n isLength: {\\n options: {\\n min: 3,\\n max: 50\\n }\\n },\\n trim: true\\n },\\n state: {\\n errorMessage: 'Please select correct state',\\n isIn: {\\n options: [[\\\"new\\\", \\\"not-completed\\\", \\\"canceled\\\", \\\"completed\\\"]]\\n }\\n },\\n method: {\\n errorMessage: 'Please select correct travelling method',\\n isIn: {\\n options: [['Bus', 'Car', 'Train', 'Threewheeler', 'Foot']]\\n }\\n }\\n};\\nexports.validationRules = validationRules;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInZhbGlkYXRpb24uanMiXSwibmFtZXMiOlsidmFsaWRhdGlvblJ1bGVzIiwiaWQiLCJpbiIsImVycm9yTWVzc2FnZSIsImlzSW50IiwidG9JbnQiLCJuYW1lIiwiaXNMZW5ndGgiLCJvcHRpb25zIiwibWluIiwibWF4IiwidHJpbSIsImRlc2NyaXB0aW9uIiwiZGlzdGFuY2UiLCJ0aW1lVG9SZWFjaCIsImZpcnN0bmFtZSIsImxhc3RuYW1lIiwiZW1haWwiLCJpc0VtYWlsIiwibW9iaWxlIiwibWF0Y2hlcyIsInBhc3N3b3JkIiwiY29uZmlybV9wYXNzd29yZCIsImN1c3RvbSIsInZhbHVlIiwicmVxIiwiYm9keSIsInN1aXRlIiwiaXNJbiIsInJvb21udW1iZXIiLCJzdGF0ZSIsIm1ldGhvZCIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLElBQUlBLGVBQWUsR0FBRztBQUNsQkMsRUFBQUEsRUFBRSxFQUFFO0FBQ0FDLElBQUFBLEVBQUUsRUFBRSxDQUFDLFFBQUQsRUFBVyxPQUFYLENBREo7QUFFQUMsSUFBQUEsWUFBWSxFQUFFLGFBRmQ7QUFHQUMsSUFBQUEsS0FBSyxFQUFFLElBSFA7QUFJQUMsSUFBQUEsS0FBSyxFQUFFO0FBSlAsR0FEYztBQU9sQkMsRUFBQUEsSUFBSSxFQUFFO0FBQ0ZILElBQUFBLFlBQVksRUFBRSw4REFEWjtBQUVGSSxJQUFBQSxRQUFRLEVBQUU7QUFDTkMsTUFBQUEsT0FBTyxFQUFFO0FBQUVDLFFBQUFBLEdBQUcsRUFBRSxDQUFQO0FBQVVDLFFBQUFBLEdBQUcsRUFBRTtBQUFmO0FBREgsS0FGUjtBQUtGQyxJQUFBQSxJQUFJLEVBQUU7QUFMSixHQVBZO0FBY2xCQyxFQUFBQSxXQUFXLEVBQUU7QUFDVFQsSUFBQUEsWUFBWSxFQUFFLHNFQURMO0FBRVRJLElBQUFBLFFBQVEsRUFBRTtBQUNOQyxNQUFBQSxPQUFPLEVBQUU7QUFBRUMsUUFBQUEsR0FBRyxFQUFFLENBQVA7QUFBVUMsUUFBQUEsR0FBRyxFQUFFO0FBQWY7QUFESCxLQUZEO0FBS1RDLElBQUFBLElBQUksRUFBRTtBQUxHLEdBZEs7QUFxQmxCRSxFQUFBQSxRQUFRLEVBQUU7QUFDTlYsSUFBQUEsWUFBWSxFQUFFLG1FQURSO0FBRU5JLElBQUFBLFFBQVEsRUFBRTtBQUNOQyxNQUFBQSxPQUFPLEVBQUU7QUFBRUMsUUFBQUEsR0FBRyxFQUFFLENBQVA7QUFBVUMsUUFBQUEsR0FBRyxFQUFFO0FBQWY7QUFESCxLQUZKO0FBS05DLElBQUFBLElBQUksRUFBRTtBQUxBLEdBckJRO0FBNEJsQkcsRUFBQUEsV0FBVyxFQUFFO0FBQ1RYLElBQUFBLFlBQVksRUFBRSx3RUFETDtBQUVUSSxJQUFBQSxRQUFRLEVBQUU7QUFDTkMsTUFBQUEsT0FBTyxFQUFFO0FBQUVDLFFBQUFBLEdBQUcsRUFBRSxDQUFQO0FBQVVDLFFBQUFBLEdBQUcsRUFBRTtBQUFmO0FBREgsS0FGRDtBQUtUQyxJQUFBQSxJQUFJLEVBQUU7QUFMRyxHQTVCSztBQW1DbEJJLEVBQUFBLFNBQVMsRUFBRTtBQUNQWixJQUFBQSxZQUFZLEVBQUUsb0VBRFA7QUFFUEksSUFBQUEsUUFBUSxFQUFFO0FBQ05DLE1BQUFBLE9BQU8sRUFBRTtBQUFFQyxRQUFBQSxHQUFHLEVBQUUsQ0FBUDtBQUFVQyxRQUFBQSxHQUFHLEVBQUU7QUFBZjtBQURILEtBRkg7QUFLUEMsSUFBQUEsSUFBSSxFQUFFO0FBTEMsR0FuQ087QUEwQ2xCSyxFQUFBQSxRQUFRLEVBQUU7QUFDTmIsSUFBQUEsWUFBWSxFQUFFLG1FQURSO0FBRU5JLElBQUFBLFFBQVEsRUFBRTtBQUNOQyxNQUFBQSxPQUFPLEVBQUU7QUFBRUMsUUFBQUEsR0FBRyxFQUFFLENBQVA7QUFBVUMsUUFBQUEsR0FBRyxFQUFFO0FBQWY7QUFESCxLQUZKO0FBS05DLElBQUFBLElBQUksRUFBRTtBQUxBLEdBMUNRO0FBaURsQk0sRUFBQUEsS0FBSyxFQUFFO0FBQ0hkLElBQUFBLFlBQVksRUFBRSxvQ0FEWDtBQUVIZSxJQUFBQSxPQUFPLEVBQUUsSUFGTjtBQUdIUCxJQUFBQSxJQUFJLEVBQUU7QUFISCxHQWpEVztBQXNEbEJRLEVBQUFBLE1BQU0sRUFBRTtBQUNKaEIsSUFBQUEsWUFBWSxFQUFFLHdDQURWO0FBRUpJLElBQUFBLFFBQVEsRUFBRTtBQUNOQyxNQUFBQSxPQUFPLEVBQUU7QUFBRUMsUUFBQUEsR0FBRyxFQUFFLEVBQVA7QUFBV0MsUUFBQUEsR0FBRyxFQUFFO0FBQWhCO0FBREgsS0FGTjtBQUtKVSxJQUFBQSxPQUFPLEVBQUU7QUFDTFosTUFBQUEsT0FBTyxFQUFFLENBQUMsVUFBRCxDQURKO0FBRUxMLE1BQUFBLFlBQVksRUFBRTtBQUZULEtBTEw7QUFTSlEsSUFBQUEsSUFBSSxFQUFFO0FBVEYsR0F0RFU7QUFpRWxCVSxFQUFBQSxRQUFRLEVBQUU7QUFDTmQsSUFBQUEsUUFBUSxFQUFFO0FBQ05KLE1BQUFBLFlBQVksRUFBRSwwQ0FEUjtBQUVOSyxNQUFBQSxPQUFPLEVBQUU7QUFBRUMsUUFBQUEsR0FBRyxFQUFFO0FBQVA7QUFGSDtBQURKLEdBakVRO0FBdUVsQmEsRUFBQUEsZ0JBQWdCLEVBQUU7QUFDZG5CLElBQUFBLFlBQVksRUFBRSxnREFEQTtBQUVkb0IsSUFBQUEsTUFBTSxFQUFFO0FBQ0pmLE1BQUFBLE9BQU8sRUFBRSxDQUFDZ0IsS0FBRCxFQUFRO0FBQUVDLFFBQUFBO0FBQUYsT0FBUixLQUFvQkQsS0FBSyxLQUFLQyxHQUFHLENBQUNDLElBQUosQ0FBU0w7QUFENUM7QUFGTSxHQXZFQTtBQTZFbEJNLEVBQUFBLEtBQUssRUFBRTtBQUNIeEIsSUFBQUEsWUFBWSxFQUFFLDBCQURYO0FBRUh5QixJQUFBQSxJQUFJLEVBQUU7QUFDRnBCLE1BQUFBLE9BQU8sRUFBRSxDQUFDLENBQUMsTUFBRCxFQUFTLFFBQVQsRUFBbUIsVUFBbkIsQ0FBRDtBQURQO0FBRkgsR0E3RVc7QUFtRmxCcUIsRUFBQUEsVUFBVSxFQUFFO0FBQ1IxQixJQUFBQSxZQUFZLEVBQUUscUVBRE47QUFFUkksSUFBQUEsUUFBUSxFQUFFO0FBQ05DLE1BQUFBLE9BQU8sRUFBRTtBQUFFQyxRQUFBQSxHQUFHLEVBQUUsQ0FBUDtBQUFVQyxRQUFBQSxHQUFHLEVBQUU7QUFBZjtBQURILEtBRkY7QUFLUkMsSUFBQUEsSUFBSSxFQUFFO0FBTEUsR0FuRk07QUEwRmxCbUIsRUFBQUEsS0FBSyxFQUFFO0FBQ0gzQixJQUFBQSxZQUFZLEVBQUUsNkJBRFg7QUFFSHlCLElBQUFBLElBQUksRUFBRTtBQUNGcEIsTUFBQUEsT0FBTyxFQUFFLENBQUMsQ0FBQyxLQUFELEVBQVEsZUFBUixFQUF5QixVQUF6QixFQUFxQyxXQUFyQyxDQUFEO0FBRFA7QUFGSCxHQTFGVztBQWdHbEJ1QixFQUFBQSxNQUFNLEVBQUU7QUFDSjVCLElBQUFBLFlBQVksRUFBRSx5Q0FEVjtBQUVKeUIsSUFBQUEsSUFBSSxFQUFFO0FBQ0ZwQixNQUFBQSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEtBQUQsRUFBUSxLQUFSLEVBQWUsT0FBZixFQUF3QixjQUF4QixFQUF3QyxNQUF4QyxDQUFEO0FBRFA7QUFGRjtBQWhHVSxDQUF0QjtBQXdHQXdCLE9BQU8sQ0FBQ2hDLGVBQVIsR0FBMEJBLGVBQTFCIiwic291cmNlc0NvbnRlbnQiOlsidmFyIHZhbGlkYXRpb25SdWxlcyA9IHtcclxuICAgIGlkOiB7XHJcbiAgICAgICAgaW46IFsncGFyYW1zJywgJ3F1ZXJ5J10sXHJcbiAgICAgICAgZXJyb3JNZXNzYWdlOiAnSUQgaXMgd3JvbmcnLFxyXG4gICAgICAgIGlzSW50OiB0cnVlLFxyXG4gICAgICAgIHRvSW50OiB0cnVlLFxyXG4gICAgfSxcclxuICAgIG5hbWU6IHtcclxuICAgICAgICBlcnJvck1lc3NhZ2U6ICdOYW1lIHNob3VsZCBiZSBhdCBsZWFzdCAyIGNoYXJzIGxvbmcgYW5kIG1heGltdW0gb2YgNTAgY2hhcnMnLFxyXG4gICAgICAgIGlzTGVuZ3RoOiB7XHJcbiAgICAgICAgICAgIG9wdGlvbnM6IHsgbWluOiAyLCBtYXg6IDUwIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHRyaW06IHRydWVcclxuICAgIH0sXHJcbiAgICBkZXNjcmlwdGlvbjoge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ0Rlc2NyaXB0aW9uIHNob3VsZCBiZSBhdCBsZWFzdCAyIGNoYXJzIGxvbmcgYW5kIG1heGltdW0gb2YgMjAwIGNoYXJzJyxcclxuICAgICAgICBpc0xlbmd0aDoge1xyXG4gICAgICAgICAgICBvcHRpb25zOiB7IG1pbjogMiwgbWF4OiAyMDAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHJpbTogdHJ1ZVxyXG4gICAgfSxcclxuICAgIGRpc3RhbmNlOiB7XHJcbiAgICAgICAgZXJyb3JNZXNzYWdlOiAnRGlzdGFuY2Ugc2hvdWxkIGJlIGF0IGxlYXN0IDEgY2hhcnMgbG9uZyBhbmQgbWF4aW11bSBvZiAyMDAgY2hhcnMnLFxyXG4gICAgICAgIGlzTGVuZ3RoOiB7XHJcbiAgICAgICAgICAgIG9wdGlvbnM6IHsgbWluOiAxLCBtYXg6IDIwMCB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICB0cmltOiB0cnVlXHJcbiAgICB9LFxyXG4gICAgdGltZVRvUmVhY2g6IHtcclxuICAgICAgICBlcnJvck1lc3NhZ2U6ICdUaW1lIFRvIFJlYWNoIHNob3VsZCBiZSBhdCBsZWFzdCAyIGNoYXJzIGxvbmcgYW5kIG1heGltdW0gb2YgMjAwIGNoYXJzJyxcclxuICAgICAgICBpc0xlbmd0aDoge1xyXG4gICAgICAgICAgICBvcHRpb25zOiB7IG1pbjogMiwgbWF4OiAyMDAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHJpbTogdHJ1ZVxyXG4gICAgfSxcclxuICAgIGZpcnN0bmFtZToge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ0ZpcnN0IE5hbWUgc2hvdWxkIGJlIGF0IGxlYXN0IDMgY2hhcnMgbG9uZyBhbmQgbWF4aW11bSBvZiA1MCBjaGFycycsXHJcbiAgICAgICAgaXNMZW5ndGg6IHtcclxuICAgICAgICAgICAgb3B0aW9uczogeyBtaW46IDMsIG1heDogNTAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHJpbTogdHJ1ZVxyXG4gICAgfSxcclxuICAgIGxhc3RuYW1lOiB7XHJcbiAgICAgICAgZXJyb3JNZXNzYWdlOiAnTGFzdCBOYW1lIHNob3VsZCBiZSBhdCBsZWFzdCAzIGNoYXJzIGxvbmcgYW5kIG1heGltdW0gb2YgNTAgY2hhcnMnLFxyXG4gICAgICAgIGlzTGVuZ3RoOiB7XHJcbiAgICAgICAgICAgIG9wdGlvbnM6IHsgbWluOiAzLCBtYXg6IDUwIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHRyaW06IHRydWVcclxuICAgIH0sXHJcbiAgICBlbWFpbDoge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ1BsZWFzZSBlbnRlciBhIHZhbGlkIGVtYWlsIGFkZHJlc3MnLFxyXG4gICAgICAgIGlzRW1haWw6IHRydWUsXHJcbiAgICAgICAgdHJpbTogdHJ1ZSxcclxuICAgIH0sXHJcbiAgICBtb2JpbGU6IHtcclxuICAgICAgICBlcnJvck1lc3NhZ2U6ICdQbGVhc2UgZW50ZXIgUGhvbmUgTnVtYmVyIGluIDEwIGRpZ2l0cycsXHJcbiAgICAgICAgaXNMZW5ndGg6IHtcclxuICAgICAgICAgICAgb3B0aW9uczogeyBtaW46IDEwLCBtYXg6IDEwIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIG1hdGNoZXM6IHtcclxuICAgICAgICAgICAgb3B0aW9uczogWy9eXFxkezEwfSQvXSxcclxuICAgICAgICAgICAgZXJyb3JNZXNzYWdlOiBcIlBsZWFzZSBlbnRlciBkaWdpdHNcIlxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHJpbTogdHJ1ZVxyXG4gICAgfSxcclxuICAgIHBhc3N3b3JkOiB7XHJcbiAgICAgICAgaXNMZW5ndGg6IHtcclxuICAgICAgICAgICAgZXJyb3JNZXNzYWdlOiAnUGFzc3dvcmQgc2hvdWxkIGJlIGF0IGxlYXN0IDYgY2hhcnMgbG9uZycsXHJcbiAgICAgICAgICAgIG9wdGlvbnM6IHsgbWluOiA2IH1cclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgY29uZmlybV9wYXNzd29yZDoge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ011c3QgaGF2ZSB0aGUgc2FtZSB2YWx1ZSBhcyB0aGUgcGFzc3dvcmQgZmllbGQnLFxyXG4gICAgICAgIGN1c3RvbToge1xyXG4gICAgICAgICAgICBvcHRpb25zOiAodmFsdWUsIHsgcmVxIH0pID0+IHZhbHVlID09PSByZXEuYm9keS5wYXNzd29yZFxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICBzdWl0ZToge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ1BsZWFzZSBzZWxlY3Qgc3VpdGUgdHlwZScsXHJcbiAgICAgICAgaXNJbjoge1xyXG4gICAgICAgICAgICBvcHRpb25zOiBbWydnb2xkJywgJ2x1eHVyeScsICdwbGF0aW51bSddXSxcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgcm9vbW51bWJlcjoge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ1Jvb20gTnVtYmVyIHNob3VsZCBiZSBhdCBsZWFzdCAzIGNoYXJzIGxvbmcgYW5kIG1heGltdW0gb2YgNTAgY2hhcnMnLFxyXG4gICAgICAgIGlzTGVuZ3RoOiB7XHJcbiAgICAgICAgICAgIG9wdGlvbnM6IHsgbWluOiAzLCBtYXg6IDUwIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHRyaW06IHRydWVcclxuICAgIH0sXHJcbiAgICBzdGF0ZToge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ1BsZWFzZSBzZWxlY3QgY29ycmVjdCBzdGF0ZScsXHJcbiAgICAgICAgaXNJbjoge1xyXG4gICAgICAgICAgICBvcHRpb25zOiBbW1wibmV3XCIsIFwibm90LWNvbXBsZXRlZFwiLCBcImNhbmNlbGVkXCIsIFwiY29tcGxldGVkXCJdXSxcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgbWV0aG9kOiB7XHJcbiAgICAgICAgZXJyb3JNZXNzYWdlOiAnUGxlYXNlIHNlbGVjdCBjb3JyZWN0IHRyYXZlbGxpbmcgbWV0aG9kJyxcclxuICAgICAgICBpc0luOiB7XHJcbiAgICAgICAgICAgIG9wdGlvbnM6IFtbJ0J1cycsICdDYXInLCAnVHJhaW4nLCAnVGhyZWV3aGVlbGVyJywgJ0Zvb3QnXV0sXHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxufVxyXG5cclxuZXhwb3J0cy52YWxpZGF0aW9uUnVsZXMgPSB2YWxpZGF0aW9uUnVsZXM7Il19\",\"originalCode\":\"var validationRules = {\\r\\n id: {\\r\\n in: ['params', 'query'],\\r\\n errorMessage: 'ID is wrong',\\r\\n isInt: true,\\r\\n toInt: true,\\r\\n },\\r\\n name: {\\r\\n errorMessage: 'Name should be at least 2 chars long and maximum of 50 chars',\\r\\n isLength: {\\r\\n options: { min: 2, max: 50 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n description: {\\r\\n errorMessage: 'Description should be at least 2 chars long and maximum of 200 chars',\\r\\n isLength: {\\r\\n options: { min: 2, max: 200 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n distance: {\\r\\n errorMessage: 'Distance should be at least 1 chars long and maximum of 200 chars',\\r\\n isLength: {\\r\\n options: { min: 1, max: 200 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n timeToReach: {\\r\\n errorMessage: 'Time To Reach should be at least 2 chars long and maximum of 200 chars',\\r\\n isLength: {\\r\\n options: { min: 2, max: 200 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n firstname: {\\r\\n errorMessage: 'First Name should be at least 3 chars long and maximum of 50 chars',\\r\\n isLength: {\\r\\n options: { min: 3, max: 50 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n lastname: {\\r\\n errorMessage: 'Last Name should be at least 3 chars long and maximum of 50 chars',\\r\\n isLength: {\\r\\n options: { min: 3, max: 50 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n email: {\\r\\n errorMessage: 'Please enter a valid email address',\\r\\n isEmail: true,\\r\\n trim: true,\\r\\n },\\r\\n mobile: {\\r\\n errorMessage: 'Please enter Phone Number in 10 digits',\\r\\n isLength: {\\r\\n options: { min: 10, max: 10 }\\r\\n },\\r\\n matches: {\\r\\n options: [/^\\\\d{10}$/],\\r\\n errorMessage: \\\"Please enter digits\\\"\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n password: {\\r\\n isLength: {\\r\\n errorMessage: 'Password should be at least 6 chars long',\\r\\n options: { min: 6 }\\r\\n }\\r\\n },\\r\\n confirm_password: {\\r\\n errorMessage: 'Must have the same value as the password field',\\r\\n custom: {\\r\\n options: (value, { req }) => value === req.body.password\\r\\n }\\r\\n },\\r\\n suite: {\\r\\n errorMessage: 'Please select suite type',\\r\\n isIn: {\\r\\n options: [['gold', 'luxury', 'platinum']],\\r\\n }\\r\\n },\\r\\n roomnumber: {\\r\\n errorMessage: 'Room Number should be at least 3 chars long and maximum of 50 chars',\\r\\n isLength: {\\r\\n options: { min: 3, max: 50 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n state: {\\r\\n errorMessage: 'Please select correct state',\\r\\n isIn: {\\r\\n options: [[\\\"new\\\", \\\"not-completed\\\", \\\"canceled\\\", \\\"completed\\\"]],\\r\\n }\\r\\n },\\r\\n method: {\\r\\n errorMessage: 'Please select correct travelling method',\\r\\n isIn: {\\r\\n options: [['Bus', 'Car', 'Train', 'Threewheeler', 'Foot']],\\r\\n }\\r\\n },\\r\\n}\\r\\n\\r\\nexports.validationRules = validationRules;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/4b/validation_4b7a8ff68e044daa8c6daa8312a761dc.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2493\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\middleware\\\\validation.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":11520,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":11517,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"options\",\"ranges\":[{\"startOffset\":2073,\"endOffset\":2134,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"var express = require('express');\\n\\nvar router = express.Router();\\n\\nvar Users = require('../models/users');\\n\\nvar passport = require('passport');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nconst signupAdmin = (req, res, next) => {\\n var admin = {\\n username: req.body.email,\\n firstname: req.body.firstname,\\n lastname: req.body.lastname,\\n email: req.body.email,\\n role: 'admin'\\n };\\n Users.register(new Users(admin), req.body.password, (err, user) => {\\n if (err) {\\n res.statusCode = 403;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n status: 'Registration Unsuccessful!'\\n });\\n } else {\\n if (req.body.firstname) user.firstname = req.body.firstname;\\n if (req.body.lastname) user.lastname = req.body.lastname;\\n user.save((err, user) => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n status: 'Registration Successful!'\\n });\\n });\\n }\\n });\\n};\\n\\nconst login = (req, res, next) => {\\n passport.authenticate('local', (err, user, info) => {\\n if (!user) {\\n res.statusCode = 401;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n status: 'Login Unsuccessful!',\\n err: info\\n });\\n return next(err);\\n }\\n\\n req.logIn(user, err => {\\n var token = authenticate.getToken({\\n _id: req.user._id,\\n role: user.role\\n });\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n status: 'Login Successful!',\\n token: token\\n });\\n });\\n })(req, res, next);\\n};\\n\\nconst changePassoword = (req, res, next) => {\\n var userId = req.params.id;\\n var newPasswordString = req.body.password;\\n Users.findById(userId).then(function (sanitizedUser) {\\n if (sanitizedUser) {\\n sanitizedUser.setPassword(newPasswordString, function () {\\n sanitizedUser.save();\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n message: 'password reset successful'\\n });\\n });\\n } else {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'This user does not exist'\\n });\\n }\\n }, function (err) {\\n next(err);\\n });\\n};\\n\\nconst logout = (req, res) => {\\n if (req.session) {\\n req.session.destroy();\\n res.clearCookie('session-id');\\n } else {\\n var err = new Error('You are not logged in!');\\n err.status = 403;\\n }\\n};\\n\\nexports.signupAdmin = signupAdmin;\\nexports.login = login;\\nexports.logout = logout;\\nexports.changePassoword = changePassoword;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVzZXJDb250cm9sbGVyLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwicm91dGVyIiwiUm91dGVyIiwiVXNlcnMiLCJwYXNzcG9ydCIsImF1dGhlbnRpY2F0ZSIsInNpZ251cEFkbWluIiwicmVxIiwicmVzIiwibmV4dCIsImFkbWluIiwidXNlcm5hbWUiLCJib2R5IiwiZW1haWwiLCJmaXJzdG5hbWUiLCJsYXN0bmFtZSIsInJvbGUiLCJyZWdpc3RlciIsInBhc3N3b3JkIiwiZXJyIiwidXNlciIsInN0YXR1c0NvZGUiLCJzZXRIZWFkZXIiLCJqc29uIiwic3VjY2VzcyIsInN0YXR1cyIsInNhdmUiLCJsb2dpbiIsImluZm8iLCJsb2dJbiIsInRva2VuIiwiZ2V0VG9rZW4iLCJfaWQiLCJjaGFuZ2VQYXNzb3dvcmQiLCJ1c2VySWQiLCJwYXJhbXMiLCJpZCIsIm5ld1Bhc3N3b3JkU3RyaW5nIiwiZmluZEJ5SWQiLCJ0aGVuIiwic2FuaXRpemVkVXNlciIsInNldFBhc3N3b3JkIiwibWVzc2FnZSIsImxvZ291dCIsInNlc3Npb24iLCJkZXN0cm95IiwiY2xlYXJDb29raWUiLCJFcnJvciIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLElBQUlBLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBckI7O0FBQ0EsSUFBSUMsTUFBTSxHQUFHRixPQUFPLENBQUNHLE1BQVIsRUFBYjs7QUFFQSxJQUFJQyxLQUFLLEdBQUdILE9BQU8sQ0FBQyxpQkFBRCxDQUFuQjs7QUFDQSxJQUFJSSxRQUFRLEdBQUdKLE9BQU8sQ0FBQyxVQUFELENBQXRCOztBQUNBLElBQUlLLFlBQVksR0FBR0wsT0FBTyxDQUFDLDRCQUFELENBQTFCOztBQUdBLE1BQU1NLFdBQVcsR0FBRyxDQUFDQyxHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUNwQyxNQUFJQyxLQUFLLEdBQUc7QUFDUkMsSUFBQUEsUUFBUSxFQUFFSixHQUFHLENBQUNLLElBQUos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YkQsRUFhRyxVQUFVdkIsR0FBVixFQUFlO0FBQ2RWLElBQUFBLElBQUksQ0FBQ1UsR0FBRCxDQUFKO0FBQ0gsR0FmRDtBQWdCSCxDQW5CRDs7QUFxQkEsTUFBTXdCLE1BQU0sR0FBRyxDQUFDcEMsR0FBRCxFQUFNQyxHQUFOLEtBQWM7QUFDekIsTUFBSUQsR0FBRyxDQUFDcUMsT0FBUixFQUFpQjtBQUNickMsSUFBQUEsR0FBRyxDQUFDcUMsT0FBSixDQUFZQyxPQUFaO0FBQ0FyQyxJQUFBQSxHQUFHLENBQUNzQyxXQUFKLENBQWdCLFlBQWhCO0FBQ0gsR0FIRCxNQUlLO0FBQ0QsUUFBSTNCLEdBQUcsR0FBRyxJQUFJNEIsS0FBSixDQUFVLHdCQUFWLENBQVY7QUFDQTVCLElBQUFBLEdBQUcsQ0FBQ00sTUFBSixHQUFhLEdBQWI7QUFDSDtBQUNKLENBVEQ7O0FBV0F1QixPQUFPLENBQUMxQyxXQUFSLEdBQXNCQSxXQUF0QjtBQUNBMEMsT0FBTyxDQUFDckIsS0FBUixHQUFnQkEsS0FBaEI7QUFDQXFCLE9BQU8sQ0FBQ0wsTUFBUixHQUFpQkEsTUFBakI7QUFDQUssT0FBTyxDQUFDZixlQUFSLEdBQTBCQSxlQUExQiIsInNvdXJjZXNDb250ZW50IjpbInZhciBleHByZXNzID0gcmVxdWlyZSgnZXhwcmVzcycpO1xyXG52YXIgcm91dGVyID0gZXhwcmVzcy5Sb3V0ZXIoKTtcclxuXHJcbnZhciBVc2VycyA9IHJlcXVpcmUoJy4uL21vZGVscy91c2VycycpO1xyXG52YXIgcGFzc3BvcnQgPSByZXF1aXJlKCdwYXNzcG9ydCcpO1xyXG52YXIgYXV0aGVudGljYXRlID0gcmVxdWlyZSgnLi4vbWlkZGxld2FyZS9hdXRoZW50aWNhdGUnKTtcclxuXHJcblxyXG5jb25zdCBzaWdudXBBZG1pbiA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgdmFyIGFkbWluID0ge1xyXG4gICAgICAgIHVzZXJuYW1lOiByZXEuYm9keS5lbWFpbCxcclxuICAgICAgICBmaXJzdG5hbWU6IHJlcS5ib2R5LmZpcnN0bmFtZSxcclxuICAgICAgICBsYXN0bmFtZTogcmVxLmJvZHkubGFzdG5hbWUsXHJcbiAgICAgICAgZW1haWw6IHJlcS5ib2R5LmVtYWlsLFxyXG4gICAgICAgIHJvbGU6ICdhZG1pbidcclxuICAgIH1cclxuICAgIFVzZXJzLnJlZ2lzdGVyKG5ldyBVc2VycyhhZG1pbiksXHJcbiAgICAgICAgcmVxLmJvZHkucGFzc3dvcmQsIChlcnIsIHVzZXIpID0+IHtcclxuICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgc3RhdHVzOiAnUmVnaXN0cmF0aW9uIFVuc3VjY2Vzc2Z1bCEnIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlcS5ib2R5LmZpcnN0bmFtZSlcclxuICAgICAgICAgICAgICAgICAgICB1c2VyLmZpcnN0bmFtZSA9IHJlcS5ib2R5LmZpcnN0bmFtZTtcclxuICAgICAgICAgICAgICAgIGlmIChyZXEuYm9keS5sYXN0bmFtZSlcclxuICAgICAgICAgICAgICAgICAgICB1c2VyLmxhc3RuYW1lID0gcmVxLmJvZHkubGFzdG5hbWU7XHJcbiAgICAgICAgICAgICAgICB1c2VyLnNhdmUoKGVyciwgdXNlcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCBzdGF0dXM6ICdSZWdpc3RyYXRpb24gU3VjY2Vzc2Z1bCEnIH0pO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxufVxyXG5cclxuY29uc3QgbG9naW4gPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHBhc3Nwb3J0LmF1dGhlbnRpY2F0ZSgnbG9jYWwnLCAoZXJyLCB1c2VyLCBpbmZvKSA9PiB7XHJcblxyXG4gICAgICAgIGlmICghdXNlcikge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwMTtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgc3RhdHVzOiAnTG9naW4gVW5zdWNjZXNzZnVsIScsIGVycjogaW5mbyB9KTtcclxuICAgICAgICAgICAgcmV0dXJuIG5leHQoZXJyKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmVxLmxvZ0luKHVzZXIsIChlcnIpID0+IHtcclxuICAgICAgICAgICAgdmFyIHRva2VuID0gYXV0aGVudGljYXRlLmdldFRva2VuKHsgX2lkOiByZXEudXNlci5faWQsIHJvbGU6IHVzZXIucm9sZSB9KTtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgc3RhdHVzOiAnTG9naW4gU3VjY2Vzc2Z1bCEnLCB0b2tlbjogdG9rZW4sIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSkocmVxLCByZXMsIG5leHQpO1xyXG59XHJcblxyXG5jb25zdCBjaGFuZ2VQYXNzb3dvcmQgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHZhciB1c2VySWQgPSByZXEucGFyYW1zLmlkO1xyXG4gICAgdmFyIG5ld1Bhc3N3b3JkU3RyaW5nID0gcmVxLmJvZHkucGFzc3dvcmQ7XHJcbiAgICBVc2Vycy5maW5kQnlJZCh1c2VySWQpLnRoZW4oZnVuY3Rpb24gKHNhbml0aXplZFVzZXIpIHtcclxuICAgICAgICBpZiAoc2FuaXRpemVkVXNlcikge1xyXG4gICAgICAgICAgICBzYW5pdGl6ZWRVc2VyLnNldFBhc3N3b3JkKG5ld1Bhc3N3b3JkU3RyaW5nLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICBzYW5pdGl6ZWRVc2VyLnNhdmUoKTtcclxuICAgICAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgbWVzc2FnZTogJ3Bhc3N3b3JkIHJlc2V0IHN1Y2Nlc3NmdWwnIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwNDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogJ1RoaXMgdXNlciBkb2VzIG5vdCBleGlzdCcgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSwgZnVuY3Rpb24gKGVycikge1xyXG4gICAgICAgIG5leHQoZXJyKTtcclxuICAgIH0pO1xyXG59XHJcblxyXG5jb25zdCBsb2dvdXQgPSAocmVxLCByZXMpID0+IHtcclxuICAgIGlmIChyZXEuc2Vzc2lvbikge1xyXG4gICAgICAgIHJlcS5zZXNzaW9uLmRlc3Ryb3koKTtcclxuICAgICAgICByZXMuY2xlYXJDb29raWUoJ3Nlc3Npb24taWQnKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoJ1lvdSBhcmUgbm90IGxvZ2dlZCBpbiEnKTtcclxuICAgICAgICBlcnIuc3RhdHVzID0gNDAzO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnRzLnNpZ251cEFkbWluID0gc2lnbnVwQWRtaW47XHJcbmV4cG9ydHMubG9naW4gPSBsb2dpbjtcclxuZXhwb3J0cy5sb2dvdXQgPSBsb2dvdXQ7XHJcbmV4cG9ydHMuY2hhbmdlUGFzc293b3JkID0gY2hhbmdlUGFzc293b3JkOyJdfQ==\",\"originalCode\":\"var express = require('express');\\r\\nvar router = express.Router();\\r\\n\\r\\nvar Users = require('../models/users');\\r\\nvar passport = require('passport');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\n\\r\\n\\r\\nconst signupAdmin = (req, res, next) => {\\r\\n var admin = {\\r\\n username: req.body.email,\\r\\n firstname: req.body.firstname,\\r\\n lastname: req.body.lastname,\\r\\n email: req.body.email,\\r\\n role: 'admin'\\r\\n }\\r\\n Users.register(new Users(admin),\\r\\n req.body.password, (err, user) => {\\r\\n if (err) {\\r\\n res.statusCode = 403;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, status: 'Registration Unsuccessful!' });\\r\\n }\\r\\n else {\\r\\n if (req.body.firstname)\\r\\n user.firstname = req.body.firstname;\\r\\n if (req.body.lastname)\\r\\n user.lastname = req.body.lastname;\\r\\n user.save((err, user) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, status: 'Registration Successful!' });\\r\\n });\\r\\n }\\r\\n });\\r\\n}\\r\\n\\r\\nconst login = (req, res, next) => {\\r\\n passport.authenticate('local', (err, user, info) => {\\r\\n\\r\\n if (!user) {\\r\\n res.statusCode = 401;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, status: 'Login Unsuccessful!', err: info });\\r\\n return next(err);\\r\\n }\\r\\n req.logIn(user, (err) => {\\r\\n var token = authenticate.getToken({ _id: req.user._id, role: user.role });\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, status: 'Login Successful!', token: token, });\\r\\n });\\r\\n })(req, res, next);\\r\\n}\\r\\n\\r\\nconst changePassoword = (req, res, next) => {\\r\\n var userId = req.params.id;\\r\\n var newPasswordString = req.body.password;\\r\\n Users.findById(userId).then(function (sanitizedUser) {\\r\\n if (sanitizedUser) {\\r\\n sanitizedUser.setPassword(newPasswordString, function () {\\r\\n sanitizedUser.save();\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, message: 'password reset successful' });\\r\\n });\\r\\n } else {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'This user does not exist' });\\r\\n }\\r\\n }, function (err) {\\r\\n next(err);\\r\\n });\\r\\n}\\r\\n\\r\\nconst logout = (req, res) => {\\r\\n if (req.session) {\\r\\n req.session.destroy();\\r\\n res.clearCookie('session-id');\\r\\n }\\r\\n else {\\r\\n var err = new Error('You are not logged in!');\\r\\n err.status = 403;\\r\\n }\\r\\n}\\r\\n\\r\\nexports.signupAdmin = signupAdmin;\\r\\nexports.login = login;\\r\\nexports.logout = logout;\\r\\nexports.changePassoword = changePassoword;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/df/userController_dfcc3c245d97ff3aba4c4e3eb1674b0e.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2494\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\userController.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":12954,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":12951,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"signupAdmin\",\"ranges\":[{\"startOffset\":313,\"endOffset\":1156,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":553,\"endOffset\":1152,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":926,\"endOffset\":1140,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"login\",\"ranges\":[{\"startOffset\":1173,\"endOffset\":1848,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1228,\"endOffset\":1828,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1512,\"endOffset\":1822,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"changePassoword\",\"ranges\":[{\"startOffset\":1875,\"endOffset\":2594,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"logout\",\"ranges\":[{\"startOffset\":2612,\"endOffset\":2800,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const express = require('express');\\n\\nconst cors = require('cors');\\n\\nconst app = express();\\n\\nconst util = require('util');\\n\\nconst whitelist = ['http://localhost:3000', 'http://localhost:3001', 'https://localhost:5000'];\\n\\nvar corsOptionsDelegate = (req, callback) => {\\n var corsOptions;\\n\\n if (whitelist.indexOf(req.header('Origin')) !== -1) {\\n corsOptions = {\\n origin: true\\n };\\n } else {\\n corsOptions = {\\n origin: false\\n };\\n }\\n\\n callback(null, corsOptions);\\n}; // if we want to allow all origins\\n\\n\\nexports.cors = cors(); // if we want to allow only the whitelisted origins\\n\\nexports.corsWithOptions = cors(corsOptionsDelegate);\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvcnMuanMiXSwibmFtZXMiOlsiZXhwcmVzcyIsInJlcXVpcmUiLCJjb3JzIiwiYXBwIiwidXRpbCIsIndoaXRlbGlzdCIsImNvcnNPcHRpb25zRGVsZWdhdGUiLCJyZXEiLCJjYWxsYmFjayIsImNvcnNPcHRpb25zIiwiaW5kZXhPZiIsImhlYWRlciIsIm9yaWdpbiIsImV4cG9ydHMiLCJjb3JzV2l0aE9wdGlvbnMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBdkI7O0FBQ0EsTUFBTUMsSUFBSSxHQUFHRCxPQUFPLENBQUMsTUFBRCxDQUFwQjs7QUFDQSxNQUFNRSxHQUFHLEdBQUdILE9BQU8sRUFBbkI7O0FBQ0EsTUFBTUksSUFBSSxHQUFHSCxPQUFPLENBQUMsTUFBRCxDQUFwQjs7QUFFQSxNQUFNSSxTQUFTLEdBQUcsQ0FBQyx1QkFBRCxFQUEwQix1QkFBMUIsRUFBbUQsd0JBQW5ELENBQWxCOztBQUNBLElBQUlDLG1CQUFtQixHQUFHLENBQUNDLEdBQUQsRUFBTUMsUUFBTixLQUFtQjtBQUN6QyxNQUFJQyxXQUFKOztBQUNBLE1BQUdKLFNBQVMsQ0FBQ0ssT0FBVixDQUFrQkgsR0FBRyxDQUFDSSxNQUFKLENBQVcsUUFBWCxDQUFsQixNQUE0QyxDQUFDLENBQWhELEVBQW1EO0FBQy9DRixJQUFBQSxXQUFXLEdBQUc7QUFBRUcsTUFBQUEsTUFBTSxFQUFFO0FBQVYsS0FBZDtBQUNILEdBRkQsTUFHSztBQUNESCxJQUFBQSxXQUFXLEdBQUc7QUFBRUcsTUFBQUEsTUFBTSxFQUFFO0FBQVYsS0FBZDtBQUNIOztBQUNESixFQUFBQSxRQUFRLENBQUMsSUFBRCxFQUFPQyxXQUFQLENBQVI7QUFDSCxDQVRELEMsQ0FXQTs7O0FBQ0FJLE9BQU8sQ0FBQ1gsSUFBUixHQUFlQSxJQUFJLEVBQW5CLEMsQ0FFQTs7QUFDQVcsT0FBTyxDQUFDQyxlQUFSLEdBQTBCWixJQUFJLENBQUNJLG1CQUFELENBQTlCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZXhwcmVzcyA9IHJlcXVpcmUoJ2V4cHJlc3MnKTtcclxuY29uc3QgY29ycyA9IHJlcXVpcmUoJ2NvcnMnKTtcclxuY29uc3QgYXBwID0gZXhwcmVzcygpO1xyXG5jb25zdCB1dGlsID0gcmVxdWlyZSgndXRpbCcpO1xyXG5cclxuY29uc3Qgd2hpdGVsaXN0ID0gWydodHRwOi8vbG9jYWxob3N0OjMwMDAnLCAnaHR0cDovL2xvY2FsaG9zdDozMDAxJywgJ2h0dHBzOi8vbG9jYWxob3N0OjUwMDAnXTtcclxudmFyIGNvcnNPcHRpb25zRGVsZWdhdGUgPSAocmVxLCBjYWxsYmFjaykgPT4ge1xyXG4gICAgdmFyIGNvcnNPcHRpb25zO1xyXG4gICAgaWYod2hpdGVsaXN0LmluZGV4T2YocmVxLmhlYWRlcignT3JpZ2luJykpICE9PSAtMSkge1xyXG4gICAgICAgIGNvcnNPcHRpb25zID0geyBvcmlnaW46IHRydWUgfTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGNvcnNPcHRpb25zID0geyBvcmlnaW46IGZhbHNlIH07XHJcbiAgICB9XHJcbiAgICBjYWxsYmFjayhudWxsLCBjb3JzT3B0aW9ucyk7XHJcbn07XHJcblxyXG4vLyBpZiB3ZSB3YW50IHRvIGFsbG93IGFsbCBvcmlnaW5zXHJcbmV4cG9ydHMuY29ycyA9IGNvcnMoKTtcclxuXHJcbi8vIGlmIHdlIHdhbnQgdG8gYWxsb3cgb25seSB0aGUgd2hpdGVsaXN0ZWQgb3JpZ2luc1xyXG5leHBvcnRzLmNvcnNXaXRoT3B0aW9ucyA9IGNvcnMoY29yc09wdGlvbnNEZWxlZ2F0ZSk7Il19\",\"originalCode\":\"const express = require('express');\\r\\nconst cors = require('cors');\\r\\nconst app = express();\\r\\nconst util = require('util');\\r\\n\\r\\nconst whitelist = ['http://localhost:3000', 'http://localhost:3001', 'https://localhost:5000'];\\r\\nvar corsOptionsDelegate = (req, callback) => {\\r\\n var corsOptions;\\r\\n if(whitelist.indexOf(req.header('Origin')) !== -1) {\\r\\n corsOptions = { origin: true };\\r\\n }\\r\\n else {\\r\\n corsOptions = { origin: false };\\r\\n }\\r\\n callback(null, corsOptions);\\r\\n};\\r\\n\\r\\n// if we want to allow all origins\\r\\nexports.cors = cors();\\r\\n\\r\\n// if we want to allow only the whitelisted origins\\r\\nexports.corsWithOptions = cors(corsOptionsDelegate);\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/34/cors_34beef0e65d7cfb3f2bb7a05fb9de802.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2495\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\cors.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":2982,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":2979,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"corsOptionsDelegate\",\"ranges\":[{\"startOffset\":335,\"endOffset\":573,\"count\":7}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const express = require('express');\\n\\nconst bodyParser = require('body-parser');\\n\\nconst {\\n checkSchema\\n} = require('express-validator');\\n\\nconst cors = require('./cors');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nvar validationRules = require('../middleware/validation');\\n\\nconst employeeController = require('../controllers/employeeController');\\n\\nconst employeeRouter = express.Router();\\nemployeeRouter.use(bodyParser.json()); // **********************************************************************************\\n// \\n// Employee Routes\\n// \\n// **********************************************************************************\\n\\nemployeeRouter.route('/').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.getAllEmployees).post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.addEmployee).put(cors.corsWithOptions, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('PUT operation not supported on /employees');\\n}).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.deleteAllEmployees);\\nemployeeRouter.route('/search').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.getAllEmployeesByName); // **********************************************************************************\\n// \\n// Employee Routes Specified by ID\\n// \\n// **********************************************************************************\\n\\nemployeeRouter.route('/:employeeId').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.getEmployeeDetailsById).post(cors.corsWithOptions, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('POST operation not supported on /employees/' + req.params.employeeId);\\n}).put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.updateEmployeeDetailsById).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.deleteAEmployeeById);\\nmodule.exports = employeeRouter;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImVtcGxveWVlUm91dGVyLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwiYm9keVBhcnNlciIsImNoZWNrU2NoZW1hIiwiY29ycyIsImF1dGhlbnRpY2F0ZSIsInZhbGlkYXRpb25SdWxlcyIsImVtcGxveWVlQ29udHJvbGxlciIsImVtcGxveWVlUm91dGVyIiwiUm91dGVyIiwidXNlIiwianNvbiIsInJvdXRlIiwib3B0aW9ucyIsImNvcnNXaXRoT3B0aW9ucyIsInJlcSIsInJlcyIsInNlbmRTdGF0dXMiLCJnZXQiLCJ2ZXJpZnlVc2VyIiwidmVyaWZ5QWRtaW4iLCJnZXRBbGxFbXBsb3llZXMiLCJwb3N0IiwiYWRkRW1wbG95ZWUiLCJwdXQiLCJuZXh0Iiwic3RhdHVzQ29kZSIsImVuZCIsImRlbGV0ZSIsImRlbGV0ZUFsbEVtcGxveWVlcyIsImdldEFsbEVtcGxveWVlc0J5TmFtZSIsImdldEVtcGxveWVlRGV0YWlsc0J5SWQiLCJwYXJhbXMiLCJlbXBsb3llZUlkIiwidXBkYXRlRW1wbG95ZWVEZXRhaWxzQnlJZCIsImRlbGV0ZUFFbXBsb3llZUJ5SWQiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxPQUFPLEdBQUdDLE9BQU8sQ0FBQyxTQUFELENBQXZCOztBQUNBLE1BQU1DLFVBQVUsR0FBR0QsT0FBTyxDQUFDLGFBQUQsQ0FBMUI7O0FBQ0EsTUFBTTtBQUFFRSxFQUFBQTtBQUFGLElBQWtCRixPQUFPLENBQUMsbUJBQUQsQ0FBL0I7O0FBQ0EsTUFBTUcsSUFBSSxHQUFHSCxPQUFPLENBQUMsUUFBRCxDQUFwQjs7QUFDQSxJQUFJSSxZQUFZLEdBQUdKLE9BQU8sQ0FBQyw0QkFBRCxDQUExQjs7QUFDQSxJQUFJSyxlQUFlLEdBQUdMLE9BQU8sQ0FBQywwQkFBRCxDQUE3Qjs7QUFDQSxNQUFNTSxrQkFBa0IsR0FBR04sT0FBTyxDQUFDLG1DQUFELENBQWxDOztBQUVBLE1BQU1PLGNBQWMsR0FBR1IsT0FBTyxDQUFDUyxNQUFSLEVBQXZCO0FBRUFELGNBQWMsQ0FBQ0UsR0FBZixDQUFtQlIsVUFBVSxDQUFDUyxJQUFYLEVBQW5CLEUsQ0FFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBSCxjQUFjLENBQUNJLEtBQWYsQ0FBcUIsR0FBckIsRUFDS0MsT0FETCxDQUNhVCxJQUFJLENBQUNVLGVBRGxCLEVBQ21DLENBQUNDLEdBQUQsRUFBTUMsR0FBTixLQUFjO0FBQUVBLEVBQUFBLEdBQUcsQ0FBQ0MsVUFBSixDQUFlLEdBQWY7QUFBc0IsQ0FEekUsRUFFS0MsR0FGTCxDQUVTZCxJQUFJLENBQUNBLElBRmQsRUFFb0JDLFlBQVksQ0FBQ2MsVUFGakMsRUFFNkNkLFlBQVksQ0FBQ2UsV0FGMUQsRUFFd0ViLGtCQUFrQixDQUFDYyxlQUYzRixFQUdLQyxJQUhMLENBR1VsQixJQUFJLENBQUNVLGVBSGYsRUFHK0JULFlBQVksQ0FBQ2MsVUFINUMsRUFHd0RkLFlBQVksQ0FBQ2UsV0FIckUsRUFHa0ZiLGtCQUFrQixDQUFDZ0IsV0FIckcsRUFJS0MsR0FKTCxDQUlTcEIsSUFBSSxDQUFDVSxlQUpkLEVBSStCLENBQUNDLEdBQUQsRUFBTUMsR0FBTixFQUFXUyxJQUFYLEtBQW9CO0FBQzNDVCxFQUFBQSxHQUFHLENBQUNVLFVBQUosR0FBaUIsR0FBakI7QUFDQVYsRUFBQUEsR0FBRyxDQUFDVyxHQUFKLENBQVEsMkNBQVI7QUFDSCxDQVBMLEVBUUtDLE1BUkwsQ0FRWXhCLElBQUksQ0FBQ1UsZUFSakIsRUFRa0NULFlBQVksQ0FBQ2MsVUFSL0MsRUFRMkRkLFlBQVksQ0FBQ2UsV0FSeEUsRUFRc0ZiLGtCQUFrQixDQUFDc0Isa0JBUnpHO0FBU0FyQixjQUFjLENBQUNJLEtBQWYsQ0FBcUIsU0FBckIsRUFDS0MsT0FETCxDQUNhVCxJQUFJLENBQUNVLGVBRGxCLEVBQ21DLENBQUNDLEdBQUQsRUFBTUMsR0FBTixLQUFjO0FBQUVBLEVBQUFBLEdBQUcsQ0FBQ0MsVUFBSixDQUFlLEdBQWY7QUFBc0IsQ0FEekUsRUFFS0ssSUFGTCxDQUVVbEIsSUFBSSxDQUFDVSxlQUZmLEVBRWdDVCxZQUFZLENBQUNjLFVBRjdDLEVBRXlEZCxZQUFZLENBQUNlLFdBRnRFLEVBRW1GYixrQkFBa0IsQ0FBQ3VCLHFCQUZ0RyxFLENBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQXRCLGNBQWMsQ0FBQ0ksS0FBZixDQUFxQixjQUFyQixFQUNLQyxPQURMLENBQ2FULElBQUksQ0FBQ1UsZUFEbEIsRUFDbUMsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEtBQWM7QUFBRUEsRUFBQUEsR0FBRyxDQUFDQyxVQUFKLENBQWUsR0FBZjtBQUFzQixDQUR6RSxFQUVLQyxHQUZMLENBRVNkLElBQUksQ0FBQ0EsSUFGZCxFQUVvQkMsWUFBWSxDQUFDYyxVQUZqQyxFQUU2Q2QsWUFBWSxDQUFDZSxXQUYxRCxFQUV3RWIsa0JBQWtCLENBQUN3QixzQkFGM0YsRUFHS1QsSUFITCxDQUdVbEIsSUFBSSxDQUFDVSxlQUhmLEVBR2dDLENBQUNDLEdBQUQsRUFBTUMsR0FBTixFQUFXUyxJQUFYLEtBQW9CO0FBQzVDVCxFQUFBQSxHQUFHLENBQUNVLFVBQUosR0FBaUIsR0FBakI7QUFDQVYsRUFBQUEsR0FBRyxDQUFDVyxHQUFKLENBQVEsZ0RBQWdEWixHQUFHLENBQUNpQixNQUFKLENBQVdDLFVBQW5FO0FBQ0gsQ0FOTCxFQU9LVCxHQVBMLENBT1NwQixJQUFJLENBQUNVLGVBUGQsRUFPK0JULFlBQVksQ0FBQ2MsVUFQNUMsRUFPd0RkLFlBQVksQ0FBQ2UsV0FQckUsRUFPbUZiLGtCQUFrQixDQUFDMkIseUJBUHRHLEVBUUtOLE1BUkwsQ0FRWXhCLElBQUksQ0FBQ1UsZUFSakIsRUFRa0NULFlBQVksQ0FBQ2MsVUFSL0MsRUFRMkRkLFlBQVksQ0FBQ2UsV0FSeEUsRUFRc0ZiLGtCQUFrQixDQUFDNEIsbUJBUnpHO0FBVUFDLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQjdCLGNBQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZXhwcmVzcyA9IHJlcXVpcmUoJ2V4cHJlc3MnKTtcclxuY29uc3QgYm9keVBhcnNlciA9IHJlcXVpcmUoJ2JvZHktcGFyc2VyJyk7XHJcbmNvbnN0IHsgY2hlY2tTY2hlbWEgfSA9IHJlcXVpcmUoJ2V4cHJlc3MtdmFsaWRhdG9yJyk7XHJcbmNvbnN0IGNvcnMgPSByZXF1aXJlKCcuL2NvcnMnKTtcclxudmFyIGF1dGhlbnRpY2F0ZSA9IHJlcXVpcmUoJy4uL21pZGRsZXdhcmUvYXV0aGVudGljYXRlJyk7XHJcbnZhciB2YWxpZGF0aW9uUnVsZXMgPSByZXF1aXJlKCcuLi9taWRkbGV3YXJlL3ZhbGlkYXRpb24nKTtcclxuY29uc3QgZW1wbG95ZWVDb250cm9sbGVyID0gcmVxdWlyZSgnLi4vY29udHJvbGxlcnMvZW1wbG95ZWVDb250cm9sbGVyJyk7XHJcblxyXG5jb25zdCBlbXBsb3llZVJvdXRlciA9IGV4cHJlc3MuUm91dGVyKCk7XHJcblxyXG5lbXBsb3llZVJvdXRlci51c2UoYm9keVBhcnNlci5qc29uKCkpO1xyXG5cclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyBcclxuLy8gICAgICAgICAgICAgIEVtcGxveWVlIFJvdXRlc1xyXG4vLyBcclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuZW1wbG95ZWVSb3V0ZXIucm91dGUoJy8nKVxyXG4gICAgLm9wdGlvbnMoY29ycy5jb3JzV2l0aE9wdGlvbnMsIChyZXEsIHJlcykgPT4geyByZXMuc2VuZFN0YXR1cygyMDApOyB9KVxyXG4gICAgLmdldChjb3JzLmNvcnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCBhdXRoZW50aWNhdGUudmVyaWZ5QWRtaW4sICBlbXBsb3llZUNvbnRyb2xsZXIuZ2V0QWxsRW1wbG95ZWVzKVxyXG4gICAgLnBvc3QoY29ycy5jb3JzV2l0aE9wdGlvbnMsYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgZW1wbG95ZWVDb250cm9sbGVyLmFkZEVtcGxveWVlKVxyXG4gICAgLnB1dChjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgcmVzLmVuZCgnUFVUIG9wZXJhdGlvbiBub3Qgc3VwcG9ydGVkIG9uIC9lbXBsb3llZXMnKTtcclxuICAgIH0pXHJcbiAgICAuZGVsZXRlKGNvcnMuY29yc1dpdGhPcHRpb25zLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeUFkbWluLCAgZW1wbG95ZWVDb250cm9sbGVyLmRlbGV0ZUFsbEVtcGxveWVlcyk7XHJcbmVtcGxveWVlUm91dGVyLnJvdXRlKCcvc2VhcmNoJylcclxuICAgIC5vcHRpb25zKGNvcnMuY29yc1dpdGhPcHRpb25zLCAocmVxLCByZXMpID0+IHsgcmVzLnNlbmRTdGF0dXMoMjAwKTsgfSlcclxuICAgIC5wb3N0KGNvcnMuY29yc1dpdGhPcHRpb25zLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeUFkbWluLCBlbXBsb3llZUNvbnRyb2xsZXIuZ2V0QWxsRW1wbG95ZWVzQnlOYW1lKTtcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuLy8gXHJcbi8vICAgICAgICAgICAgICBFbXBsb3llZSBSb3V0ZXMgU3BlY2lmaWVkIGJ5IElEXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG5lbXBsb3llZVJvdXRlci5yb3V0ZSgnLzplbXBsb3llZUlkJylcclxuICAgIC5vcHRpb25zKGNvcnMuY29yc1dpdGhPcHRpb25zLCAocmVxLCByZXMpID0+IHsgcmVzLnNlbmRTdGF0dXMoMjAwKTsgfSlcclxuICAgIC5nZXQoY29ycy5jb3JzLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeUFkbWluLCAgZW1wbG95ZWVDb250cm9sbGVyLmdldEVtcGxveWVlRGV0YWlsc0J5SWQpXHJcbiAgICAucG9zdChjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgcmVzLmVuZCgnUE9TVCBvcGVyYXRpb24gbm90IHN1cHBvcnRlZCBvbiAvZW1wbG95ZWVzLycgKyByZXEucGFyYW1zLmVtcGxveWVlSWQpO1xyXG4gICAgfSlcclxuICAgIC5wdXQoY29ycy5jb3JzV2l0aE9wdGlvbnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCBhdXRoZW50aWNhdGUudmVyaWZ5QWRtaW4sICBlbXBsb3llZUNvbnRyb2xsZXIudXBkYXRlRW1wbG95ZWVEZXRhaWxzQnlJZClcclxuICAgIC5kZWxldGUoY29ycy5jb3JzV2l0aE9wdGlvbnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCBhdXRoZW50aWNhdGUudmVyaWZ5QWRtaW4sICBlbXBsb3llZUNvbnRyb2xsZXIuZGVsZXRlQUVtcGxveWVlQnlJZCk7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IGVtcGxveWVlUm91dGVyOyJdfQ==\",\"originalCode\":\"const express = require('express');\\r\\nconst bodyParser = require('body-parser');\\r\\nconst { checkSchema } = require('express-validator');\\r\\nconst cors = require('./cors');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\nvar validationRules = require('../middleware/validation');\\r\\nconst employeeController = require('../controllers/employeeController');\\r\\n\\r\\nconst employeeRouter = express.Router();\\r\\n\\r\\nemployeeRouter.use(bodyParser.json());\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Employee Routes\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nemployeeRouter.route('/')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.getAllEmployees)\\r\\n .post(cors.corsWithOptions,authenticate.verifyUser, authenticate.verifyAdmin, employeeController.addEmployee)\\r\\n .put(cors.corsWithOptions, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('PUT operation not supported on /employees');\\r\\n })\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.deleteAllEmployees);\\r\\nemployeeRouter.route('/search')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.getAllEmployeesByName);\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Employee Routes Specified by ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nemployeeRouter.route('/:employeeId')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.getEmployeeDetailsById)\\r\\n .post(cors.corsWithOptions, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('POST operation not supported on /employees/' + req.params.employeeId);\\r\\n })\\r\\n .put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.updateEmployeeDetailsById)\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.deleteAEmployeeById);\\r\\n\\r\\nmodule.exports = employeeRouter;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/3b/employeeRouter_3bb83cd3174a28ed34e0f44c133b9b42.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2496\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\employeeRouter.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":9455,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":9452,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":802,\"endOffset\":842,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1082,\"endOffset\":1185,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1369,\"endOffset\":1409,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1828,\"endOffset\":1868,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":2006,\"endOffset\":2135,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const Employees = require('../models/users');\\n\\nconst utils = require('../utils/utils'); // **********************************************************************************\\n// \\n// Employee Operations \\n// \\n// **********************************************************************************\\n\\n/**\\r\\n * @description get details of the assistants\\r\\n * @param {*} req \\r\\n * @param {*} res \\r\\n * @param {*} next \\r\\n * @returns {array} list of employees\\r\\n */\\n\\n\\nconst getAllEmployees = (req, res, next) => {\\n var query = {\\n \\\"role\\\": \\\"moderater\\\"\\n };\\n Employees.find(query).then(employees => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n employees: employees\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst getAllEmployeesByName = (req, res, next) => {\\n var query = {\\n \\\"role\\\": \\\"moderater\\\"\\n }; // if (req.body.similarTo) {\\n // var searchBy = req.body.similarTo || {}\\n // query = { \\\"role\\\": \\\"moderater\\\", $text: { $search: searchBy } }\\n // }\\n\\n if (req.body.similarTo) {\\n var searchBy = req.body.similarTo || {};\\n query = {\\n \\\"role\\\": \\\"moderater\\\",\\n firstname: {\\n $regex: `${searchBy}`,\\n $options: \\\"i\\\"\\n }\\n };\\n }\\n\\n var sortby = req.body.sortBy || {};\\n Employees.find(query).sort(sortby).then(employees => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n employees: employees\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst addEmployee = async (req, res, next) => {\\n const randomPassword = utils.password_generator(10);\\n var employee = {\\n username: req.body.email,\\n firstname: req.body.firstname,\\n lastname: req.body.lastname,\\n email: req.body.email,\\n role: 'moderater'\\n };\\n\\n try {\\n Employees.register(new Employees(employee), randomPassword, (err, employee) => {\\n if (err) {\\n res.statusCode = 403;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: err.message\\n });\\n } else {\\n employee.save((err, employee) => {\\n if (err) {\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Error while Saving new user.'\\n });\\n }\\n\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n email: employee.email,\\n password: randomPassword\\n });\\n });\\n }\\n });\\n } catch (error) {\\n var err = new Error(\\\"Error while registering new user.\\\");\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: err.message\\n });\\n }\\n};\\n\\nconst deleteAllEmployees = (req, res, next) => {\\n Employees.remove({\\n \\\"role\\\": \\\"moderater\\\"\\n }).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json(resp);\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nexports.getAllEmployees = getAllEmployees;\\nexports.getAllEmployeesByName = getAllEmployeesByName;\\nexports.addEmployee = addEmployee;\\nexports.deleteAllEmployees = deleteAllEmployees; // **********************************************************************************\\n// \\n// Employee Operations Specified by ID\\n// \\n// **********************************************************************************\\n\\nconst getEmployeeDetailsById = (req, res, next) => {\\n Employees.findById(req.params.employeeId).then(employee => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n employee: employee\\n });\\n }, err => {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Could not find employee with given ID'\\n });\\n }).catch(err => next(err));\\n};\\n\\nconst updateEmployeeDetailsById = (req, res, next) => {\\n var employee = {\\n username: req.body.email,\\n firstname: req.body.firstname,\\n lastname: req.body.lastname,\\n email: req.body.email,\\n role: 'moderater'\\n };\\n Employees.findByIdAndUpdate(req.params.employeeId, {\\n $set: employee\\n }, {\\n new: true\\n }).then(employee => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n employee: employee\\n });\\n }, err => next(err)).catch(err => {\\n var err = new Error(\\\"Error while updating.\\\");\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: err.message\\n });\\n });\\n};\\n\\nconst deleteAEmployeeById = (req, res, next) => {\\n Employees.findByIdAndRemove(req.params.employeeId).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json(resp);\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nexports.getEmployeeDetailsById = getEmployeeDetailsById;\\nexports.updateEmployeeDetailsById = updateEmployeeDetailsById;\\nexports.deleteAEmployeeById = deleteAEmployeeById;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImVtcGxveWVlQ29udHJvbGxlci5qcyJdLCJuYW1lcyI6WyJFbXBsb3llZXMiLCJyZXF1aXJlIiwidXRpbHMiLCJnZXRBbGxFbXBsb3llZXMiLCJyZXEiLCJyZXMiLCJuZXh0IiwicXVlcnkiLCJmaW5kIiwidGhlbiIsImVtcGxveWVlcyIsInN0YXR1c0NvZGUiLCJzZXRIZWFkZXIiLCJqc29uIiwic3VjY2VzcyIsImVyciIsImNhdGNoIiwiZ2V0QWxsRW1wbG95ZWVzQnlOYW1lIiwiYm9keSIsInNpbWlsYXJUbyIsInNlYXJjaEJ5IiwiZmlyc3RuYW1lIiwiJHJlZ2V4IiwiJG9wdGlvbnMiLCJzb3J0YnkiLCJzb3J0QnkiLCJzb3J0IiwiYWRkRW1wbG95ZWUiLCJyYW5kb21QYXNzd29yZCIsInBhc3N3b3JkX2dlbmVyYXRvciIsImVtcGxveWVlIiwidXNlcm5hbWUiLCJlbWFpbCIsImxhc3RuYW1lIiwicm9sZSIsInJlZ2lzdGVyIiwibWVzc2FnZSIsInNhdmUiLCJwYXNzd29yZCIsImVycm9yIiwiRXJyb3IiLCJkZWxldGVBbGxFbXBsb3llZXMiLCJyZW1vdmUiLCJyZXNwIiwiZXhwb3J0cyIsImdldEVtcGxveWVlRGV0YWlsc0J5SWQiLCJmaW5kQnlJZCIsInBhcmFtcyIsImVtcGxveWVlSWQiLCJ1cGRhdGVFbXBsb3llZURldGFpbHNCeUlkIiwiZmluZEJ5SWRBbmRVcGRhdGUiLCIkc2V0IiwibmV3IiwiZGVsZXRlQUVtcGxveWVlQnlJZCIsImZpbmRCeUlkQW5kUmVtb3ZlIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxTQUFTLEdBQUdDLE9BQU8sQ0FBQyxpQkFBRCxDQUF6Qjs7QUFDQSxNQUFNQyxLQUFLLEdBQUdELE9BQU8sQ0FBQyxnQkFBRCxDQUFyQixDLENBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0EsTUFBTUUsZUFBZSxHQUFHLENBQUNDLEdBQUQsRUFBTUMsR0FBTixF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SSxDQUFDUyxHQUFELENBTHBCLEVBTUtDLEtBTkwsQ0FNWUQsR0FBRCxJQUFTVCxJQUFJLENBQUNTLEdBQUQsQ0FOeEI7QUFPSCxDQVJEOztBQVVBNkIsT0FBTyxDQUFDQyxzQkFBUixHQUFpQ0Esc0JBQWpDO0FBQ0FELE9BQU8sQ0FBQ0sseUJBQVIsR0FBb0NBLHlCQUFwQztBQUNBTCxPQUFPLENBQUNTLG1CQUFSLEdBQThCQSxtQkFBOUIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBFbXBsb3llZXMgPSByZXF1aXJlKCcuLi9tb2RlbHMvdXNlcnMnKTtcclxuY29uc3QgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscy91dGlscycpO1xyXG5cclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyBcclxuLy8gICAgICAgICAgICAgIEVtcGxveWVlIE9wZXJhdGlvbnMgXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG4vKipcclxuICogQGRlc2NyaXB0aW9uIGdldCBkZXRhaWxzIG9mIHRoZSBhc3Npc3RhbnRzXHJcbiAqIEBwYXJhbSB7Kn0gcmVxIFxyXG4gKiBAcGFyYW0geyp9IHJlcyBcclxuICogQHBhcmFtIHsqfSBuZXh0IFxyXG4gKiBAcmV0dXJucyB7YXJyYXl9IGxpc3Qgb2YgZW1wbG95ZWVzXHJcbiAqL1xyXG5jb25zdCBnZXRBbGxFbXBsb3llZXMgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHZhciBxdWVyeSA9IHsgXCJyb2xlXCI6IFwibW9kZXJhdGVyXCIgfTtcclxuICAgIEVtcGxveWVlcy5maW5kKHF1ZXJ5KVxyXG4gICAgICAgIC50aGVuKChlbXBsb3llZXMpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgZW1wbG95ZWVzOiBlbXBsb3llZXMgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpO1xyXG59XHJcblxyXG5jb25zdCBnZXRBbGxFbXBsb3llZXNCeU5hbWUgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHZhciBxdWVyeSA9IHsgXCJyb2xlXCI6IFwibW9kZXJhdGVyXCIgfTtcclxuICAgIC8vIGlmIChyZXEuYm9keS5zaW1pbGFyVG8pIHtcclxuICAgIC8vICAgICB2YXIgc2VhcmNoQnkgPSByZXEuYm9keS5zaW1pbGFyVG8gfHwge31cclxuICAgIC8vICAgICBxdWVyeSA9IHsgXCJyb2xlXCI6IFwibW9kZXJhdGVyXCIsICR0ZXh0OiB7ICRzZWFyY2g6IHNlYXJjaEJ5IH0gfVxyXG4gICAgLy8gfVxyXG4gICAgaWYgKHJlcS5ib2R5LnNpbWlsYXJUbykge1xyXG4gICAgICAgIHZhciBzZWFyY2hCeSA9IHJlcS5ib2R5LnNpbWlsYXJUbyB8fCB7fVxyXG4gICAgICAgIHF1ZXJ5ID0geyBcInJvbGVcIjogXCJtb2RlcmF0ZXJcIiwgZmlyc3RuYW1lOiB7ICRyZWdleDogYCR7c2VhcmNoQnl9YCwgJG9wdGlvbnM6IFwiaVwiIH0gfVxyXG4gICAgfVxyXG4gICAgdmFyIHNvcnRieSA9IHJlcS5ib2R5LnNvcnRCeSB8fCB7fTtcclxuICAgIEVtcGxveWVlcy5maW5kKHF1ZXJ5KS5zb3J0KHNvcnRieSlcclxuICAgICAgICAudGhlbigoZW1wbG95ZWVzKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIGVtcGxveWVlczogZW1wbG95ZWVzIH0pO1xyXG4gICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuY29uc3QgYWRkRW1wbG95ZWUgPSBhc3luYyAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIGNvbnN0IHJhbmRvbVBhc3N3b3JkID0gdXRpbHMucGFzc3dvcmRfZ2VuZXJhdG9yKDEwKTtcclxuICAgIHZhciBlbXBsb3llZSA9IHtcclxuICAgICAgICB1c2VybmFtZTogcmVxLmJvZHkuZW1haWwsXHJcbiAgICAgICAgZmlyc3RuYW1lOiByZXEuYm9keS5maXJzdG5hbWUsXHJcbiAgICAgICAgbGFzdG5hbWU6IHJlcS5ib2R5Lmxhc3RuYW1lLFxyXG4gICAgICAgIGVtYWlsOiByZXEuYm9keS5lbWFpbCxcclxuICAgICAgICByb2xlOiAnbW9kZXJhdGVyJ1xyXG4gICAgfVxyXG4gICAgdHJ5IHtcclxuICAgICAgICBFbXBsb3llZXMucmVnaXN0ZXIobmV3IEVtcGxveWVlcyhlbXBsb3llZSksXHJcbiAgICAgICAgICAgIHJhbmRvbVBhc3N3b3JkLCAoZXJyLCBlbXBsb3llZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNDAzO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogZXJyLm1lc3NhZ2UgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBlbXBsb3llZS5zYXZlKChlcnIsIGVtcGxveWVlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNTAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IGZhbHNlLCBtZXNzYWdlOiAnRXJyb3Igd2hpbGUgU2F2aW5nIG5ldyB1c2VyLicgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgZW1haWw6IGVtcGxveWVlLmVtYWlsLCBwYXNzd29yZDogcmFuZG9tUGFzc3dvcmQgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICB2YXIgZXJyID0gbmV3IEVycm9yKFwiRXJyb3Igd2hpbGUgcmVnaXN0ZXJpbmcgbmV3IHVzZXIuXCIpO1xyXG4gICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNTAwO1xyXG4gICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogZXJyLm1lc3NhZ2UgfSk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmNvbnN0IGRlbGV0ZUFsbEVtcGxveWVlcyA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgRW1wbG95ZWVzLnJlbW92ZSh7IFwicm9sZVwiOiBcIm1vZGVyYXRlclwiIH0pXHJcbiAgICAgICAgLnRoZW4oKHJlc3ApID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHJlc3ApO1xyXG4gICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuZXhwb3J0cy5nZXRBbGxFbXBsb3llZXMgPSBnZXRBbGxFbXBsb3llZXM7XHJcbmV4cG9ydHMuZ2V0QWxsRW1wbG95ZWVzQnlOYW1lID0gZ2V0QWxsRW1wbG95ZWVzQnlOYW1lO1xyXG5leHBvcnRzLmFkZEVtcGxveWVlID0gYWRkRW1wbG95ZWU7XHJcbmV4cG9ydHMuZGVsZXRlQWxsRW1wbG95ZWVzID0gZGVsZXRlQWxsRW1wbG95ZWVzO1xyXG5cclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyBcclxuLy8gICAgICAgICAgICAgIEVtcGxveWVlIE9wZXJhdGlvbnMgU3BlY2lmaWVkIGJ5IElEXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG5jb25zdCBnZXRFbXBsb3llZURldGFpbHNCeUlkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICBFbXBsb3llZXMuZmluZEJ5SWQocmVxLnBhcmFtcy5lbXBsb3llZUlkKVxyXG4gICAgICAgIC50aGVuKChlbXBsb3llZSkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCBlbXBsb3llZTogZW1wbG95ZWUgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwNDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogJ0NvdWxkIG5vdCBmaW5kIGVtcGxveWVlIHdpdGggZ2l2ZW4gSUQnIH0pO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IG5leHQoZXJyKSk7XHJcbn1cclxuXHJcbmNvbnN0IHVwZGF0ZUVtcGxveWVlRGV0YWlsc0J5SWQgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHZhciBlbXBsb3llZSA9IHtcclxuICAgICAgICB1c2VybmFtZTogcmVxLmJvZHkuZW1haWwsXHJcbiAgICAgICAgZmlyc3RuYW1lOiByZXEuYm9keS5maXJzdG5hbWUsXHJcbiAgICAgICAgbGFzdG5hbWU6IHJlcS5ib2R5Lmxhc3RuYW1lLFxyXG4gICAgICAgIGVtYWlsOiByZXEuYm9keS5lbWFpbCxcclxuICAgICAgICByb2xlOiAnbW9kZXJhdGVyJ1xyXG4gICAgfVxyXG4gICAgRW1wbG95ZWVzLmZpbmRCeUlkQW5kVXBkYXRlKHJlcS5wYXJhbXMuZW1wbG95ZWVJZCwge1xyXG4gICAgICAgICRzZXQ6IGVtcGxveWVlXHJcbiAgICB9LCB7IG5ldzogdHJ1ZSB9KVxyXG4gICAgICAgIC50aGVuKChlbXBsb3llZSkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCBlbXBsb3llZTogZW1wbG95ZWUgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoXCJFcnJvciB3aGlsZSB1cGRhdGluZy5cIik7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNTAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IGZhbHNlLCBtZXNzYWdlOiBlcnIubWVzc2FnZSB9KTtcclxuICAgICAgICB9KTtcclxufVxyXG5cclxuY29uc3QgZGVsZXRlQUVtcGxveWVlQnlJZCA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgRW1wbG95ZWVzLmZpbmRCeUlkQW5kUmVtb3ZlKHJlcS5wYXJhbXMuZW1wbG95ZWVJZClcclxuICAgICAgICAudGhlbigocmVzcCkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24ocmVzcCk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpO1xyXG59XHJcblxyXG5leHBvcnRzLmdldEVtcGxveWVlRGV0YWlsc0J5SWQgPSBnZXRFbXBsb3llZURldGFpbHNCeUlkO1xyXG5leHBvcnRzLnVwZGF0ZUVtcGxveWVlRGV0YWlsc0J5SWQgPSB1cGRhdGVFbXBsb3llZURldGFpbHNCeUlkO1xyXG5leHBvcnRzLmRlbGV0ZUFFbXBsb3llZUJ5SWQgPSBkZWxldGVBRW1wbG95ZWVCeUlkOyJdfQ==\",\"originalCode\":\"const Employees = require('../models/users');\\r\\nconst utils = require('../utils/utils');\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Employee Operations \\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\n/**\\r\\n * @description get details of the assistants\\r\\n * @param {*} req \\r\\n * @param {*} res \\r\\n * @param {*} next \\r\\n * @returns {array} list of employees\\r\\n */\\r\\nconst getAllEmployees = (req, res, next) => {\\r\\n var query = { \\\"role\\\": \\\"moderater\\\" };\\r\\n Employees.find(query)\\r\\n .then((employees) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, employees: employees });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst getAllEmployeesByName = (req, res, next) => {\\r\\n var query = { \\\"role\\\": \\\"moderater\\\" };\\r\\n // if (req.body.similarTo) {\\r\\n // var searchBy = req.body.similarTo || {}\\r\\n // query = { \\\"role\\\": \\\"moderater\\\", $text: { $search: searchBy } }\\r\\n // }\\r\\n if (req.body.similarTo) {\\r\\n var searchBy = req.body.similarTo || {}\\r\\n query = { \\\"role\\\": \\\"moderater\\\", firstname: { $regex: `${searchBy}`, $options: \\\"i\\\" } }\\r\\n }\\r\\n var sortby = req.body.sortBy || {};\\r\\n Employees.find(query).sort(sortby)\\r\\n .then((employees) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, employees: employees });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst addEmployee = async (req, res, next) => {\\r\\n const randomPassword = utils.password_generator(10);\\r\\n var employee = {\\r\\n username: req.body.email,\\r\\n firstname: req.body.firstname,\\r\\n lastname: req.body.lastname,\\r\\n email: req.body.email,\\r\\n role: 'moderater'\\r\\n }\\r\\n try {\\r\\n Employees.register(new Employees(employee),\\r\\n randomPassword, (err, employee) => {\\r\\n if (err) {\\r\\n res.statusCode = 403;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: err.message });\\r\\n }\\r\\n else {\\r\\n employee.save((err, employee) => {\\r\\n if (err) {\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Error while Saving new user.' });\\r\\n }\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, email: employee.email, password: randomPassword });\\r\\n });\\r\\n }\\r\\n });\\r\\n } catch (error) {\\r\\n var err = new Error(\\\"Error while registering new user.\\\");\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: err.message });\\r\\n }\\r\\n}\\r\\n\\r\\nconst deleteAllEmployees = (req, res, next) => {\\r\\n Employees.remove({ \\\"role\\\": \\\"moderater\\\" })\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json(resp);\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nexports.getAllEmployees = getAllEmployees;\\r\\nexports.getAllEmployeesByName = getAllEmployeesByName;\\r\\nexports.addEmployee = addEmployee;\\r\\nexports.deleteAllEmployees = deleteAllEmployees;\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Employee Operations Specified by ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nconst getEmployeeDetailsById = (req, res, next) => {\\r\\n Employees.findById(req.params.employeeId)\\r\\n .then((employee) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, employee: employee });\\r\\n }, (err) => {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Could not find employee with given ID' });\\r\\n })\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst updateEmployeeDetailsById = (req, res, next) => {\\r\\n var employee = {\\r\\n username: req.body.email,\\r\\n firstname: req.body.firstname,\\r\\n lastname: req.body.lastname,\\r\\n email: req.body.email,\\r\\n role: 'moderater'\\r\\n }\\r\\n Employees.findByIdAndUpdate(req.params.employeeId, {\\r\\n $set: employee\\r\\n }, { new: true })\\r\\n .then((employee) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, employee: employee });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => {\\r\\n var err = new Error(\\\"Error while updating.\\\");\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: err.message });\\r\\n });\\r\\n}\\r\\n\\r\\nconst deleteAEmployeeById = (req, res, next) => {\\r\\n Employees.findByIdAndRemove(req.params.employeeId)\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json(resp);\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nexports.getEmployeeDetailsById = getEmployeeDetailsById;\\r\\nexports.updateEmployeeDetailsById = updateEmployeeDetailsById;\\r\\nexports.deleteAEmployeeById = deleteAEmployeeById;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/6e/employeeController_6ee2f5b4e4eea073cb5625109f63cb82.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2497\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\employeeController.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":22470,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":22467,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"getAllEmployees\",\"ranges\":[{\"startOffset\":577,\"endOffset\":889,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getAllEmployeesByName\",\"ranges\":[{\"startOffset\":922,\"endOffset\":1648,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"addEmployee\",\"ranges\":[{\"startOffset\":1671,\"endOffset\":3020,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"deleteAllEmployees\",\"ranges\":[{\"startOffset\":3050,\"endOffset\":3287,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getEmployeeDetailsById\",\"ranges\":[{\"startOffset\":3736,\"endOffset\":4197,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"updateEmployeeDetailsById\",\"ranges\":[{\"startOffset\":4234,\"endOffset\":4944,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"deleteAEmployeeById\",\"ranges\":[{\"startOffset\":4975,\"endOffset\":5215,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const multer = require('multer');\\n\\nconst {\\n v4: uuidv4\\n} = require('uuid');\\n\\nlet path = require('path');\\n\\nconst password_generator = len => {\\n var length = len ? len : 10;\\n var string = \\\"abcdefghijklmnopqrstuvwxyz\\\"; //to upper \\n\\n var numeric = '0123456789';\\n var punctuation = '!@#$%^&*()_+~`|}{[]\\\\:;?><,./-=';\\n var password = \\\"\\\";\\n var character = \\\"\\\";\\n var crunch = true;\\n\\n while (password.length < length) {\\n entity1 = Math.ceil(string.length * Math.random() * Math.random());\\n entity2 = Math.ceil(numeric.length * Math.random() * Math.random());\\n entity3 = Math.ceil(punctuation.length * Math.random() * Math.random());\\n hold = string.charAt(entity1);\\n hold = password.length % 2 == 0 ? hold.toUpperCase() : hold;\\n character += hold;\\n character += numeric.charAt(entity2);\\n character += punctuation.charAt(entity3);\\n password = character;\\n }\\n\\n password = password.split('').sort(function () {\\n return 0.5 - Math.random();\\n }).join('');\\n return password.substr(0, length);\\n};\\n\\nexports.password_generator = password_generator;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInV0aWxzLmpzIl0sIm5hbWVzIjpbIm11bHRlciIsInJlcXVpcmUiLCJ2NCIsInV1aWR2NCIsInBhdGgiLCJwYXNzd29yZF9nZW5lcmF0b3IiLCJsZW4iLCJsZW5ndGgiLCJzdHJpbmciLCJudW1lcmljIiwicHVuY3R1YXRpb24iLCJwYXNzd29yZCIsImNoYXJhY3RlciIsImNydW5jaCIsImVudGl0eTEiLCJNYXRoIiwiY2VpbCIsInJhbmRvbSIsImVudGl0eTIiLCJlbnRpdHkzIiwiaG9sZCIsImNoYXJBdCIsInRvVXBwZXJDYXNlIiwic3BsaXQiLCJzb3J0Iiwiam9pbiIsInN1YnN0ciIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE1BQU0sR0FBR0MsT0FBTyxDQUFDLFFBQUQsQ0FBdEI7O0FBQ0EsTUFBTTtBQUFFQyxFQUFBQSxFQUFFLEVBQUVDO0FBQU4sSUFBaUJGLE9BQU8sQ0FBQyxNQUFELENBQTlCOztBQUNBLElBQUlHLElBQUksR0FBR0gsT0FBTyxDQUFDLE1BQUQsQ0FBbEI7O0FBRUEsTUFBTUksa0JBQWtCLEdBQUlDLEdBQUQsSUFBUztBQUNoQyxNQUFJQyxNQUFNLEdBQUlELEdBQUQsR0FBU0EsR0FBVCxHQUFpQixFQUE5QjtBQUNBLE1BQUlFLE1BQU0sR0FBRyw0QkFBYixDQUZnQyxDQUVXOztBQUMzQyxNQUFJQyxPQUFPLEdBQUcsWUFBZDtBQUNBLE1BQUlDLFdBQVcsR0FBRyxnQ0FBbEI7QUFDQSxNQUFJQyxRQUFRLEdBQUcsRUFBZjtBQUNBLE1BQUlDLFNBQVMsR0FBRyxFQUFoQjtBQUNBLE1BQUlDLE1BQU0sR0FBRyxJQUFiOztBQUNBLFNBQU9GLFFBQVEsQ0FBQ0osTUFBVCxHQUFrQkEsTUFBekIsRUFBaUM7QUFDN0JPLElBQUFBLE9BQU8sR0FBR0MsSUFBSSxDQUFDQyxJQUFMLENBQVVSLE1BQU0sQ0FBQ0QsTUFBUCxHQUFnQlEsSUFBSSxDQUFDRSxNQUFMLEVBQWhCLEdBQWdDRixJQUFJLENBQUNFLE1BQUwsRUFBMUMsQ0FBVjtBQUNBQyxJQUFBQSxPQUFPLEdBQUdILElBQUksQ0FBQ0MsSUFBTCxDQUFVUCxPQUFPLENBQUNGLE1BQVIsR0FBaUJRLElBQUksQ0FBQ0UsTUFBTCxFQUFqQixHQUFpQ0YsSUFBSSxDQUFDRSxNQUFMLEVBQTNDLENBQVY7QUFDQUUsSUFBQUEsT0FBTyxHQUFHSixJQUFJLENBQUNDLElBQUwsQ0FBVU4sV0FBVyxDQUFDSCxNQUFaLEdBQXFCUSxJQUFJLENBQUNFLE1BQUwsRUFBckIsR0FBcUNGLElBQUksQ0FBQ0UsTUFBTCxFQUEvQyxDQUFWO0FBQ0FHLElBQUFBLElBQUksR0FBR1osTUFBTSxDQUFDYSxNQUFQLENBQWNQLE9BQWQsQ0FBUDtBQUNBTSxJQUFBQSxJQUFJLEdBQUlULFFBQVEsQ0FBQ0osTUFBVCxHQUFrQixDQUFsQixJQUF1QixDQUF4QixHQUE4QmEsSUFBSSxDQUFDRSxXQUFMLEVBQTlCLEdBQXFERixJQUE1RDtBQUNBUixJQUFBQSxTQUFTLElBQUlRLElBQWI7QUFDQVIsSUFBQUEsU0FBUyxJQUFJSCxPQUFPLENBQUNZLE1BQVIsQ0FBZUgsT0FBZixDQUFiO0FBQ0FOLElBQUFBLFNBQVMsSUFBSUYsV0FBVyxDQUFDVyxNQUFaLENBQW1CRixPQUFuQixDQUFiO0FBQ0FSLElBQUFBLFFBQVEsR0FBR0MsU0FBWDtBQUNIOztBQUNERCxFQUFBQSxRQUFRLEdBQUdBLFFBQVEsQ0FBQ1ksS0FBVCxDQUFlLEVBQWYsRUFBbUJDLElBQW5CLENBQXdCLFlBQVk7QUFBRSxXQUFPLE1BQU1ULElBQUksQ0FBQ0UsTUFBTCxFQUFiO0FBQTRCLEdBQWxFLEVBQW9FUSxJQUFwRSxDQUF5RSxFQUF6RSxDQUFYO0FBQ0EsU0FBT2QsUUFBUSxDQUFDZSxNQUFULENBQWdCLENBQWhCLEVBQW1CbkIsTUFBbkIsQ0FBUDtBQUNILENBckJEOztBQXVCQW9CLE9BQU8sQ0FBQ3RCLGtCQUFSLEdBQTZCQSxrQkFBN0IiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBtdWx0ZXIgPSByZXF1aXJlKCdtdWx0ZXInKTtcclxuY29uc3QgeyB2NDogdXVpZHY0IH0gPSByZXF1aXJlKCd1dWlkJyk7XHJcbmxldCBwYXRoID0gcmVxdWlyZSgncGF0aCcpO1xyXG5cclxuY29uc3QgcGFzc3dvcmRfZ2VuZXJhdG9yID0gKGxlbikgPT4ge1xyXG4gICAgdmFyIGxlbmd0aCA9IChsZW4pID8gKGxlbikgOiAoMTApO1xyXG4gICAgdmFyIHN0cmluZyA9IFwiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpcIjsgLy90byB1cHBlciBcclxuICAgIHZhciBudW1lcmljID0gJzAxMjM0NTY3ODknO1xyXG4gICAgdmFyIHB1bmN0dWF0aW9uID0gJyFAIyQlXiYqKClfK35gfH17W11cXDo7Pz48LC4vLT0nO1xyXG4gICAgdmFyIHBhc3N3b3JkID0gXCJcIjtcclxuICAgIHZhciBjaGFyYWN0ZXIgPSBcIlwiO1xyXG4gICAgdmFyIGNydW5jaCA9IHRydWU7XHJcbiAgICB3aGlsZSAocGFzc3dvcmQubGVuZ3RoIDwgbGVuZ3RoKSB7XHJcbiAgICAgICAgZW50aXR5MSA9IE1hdGguY2VpbChzdHJpbmcubGVuZ3RoICogTWF0aC5yYW5kb20oKSAqIE1hdGgucmFuZG9tKCkpO1xyXG4gICAgICAgIGVudGl0eTIgPSBNYXRoLmNlaWwobnVtZXJpYy5sZW5ndGggKiBNYXRoLnJhbmRvbSgpICogTWF0aC5yYW5kb20oKSk7XHJcbiAgICAgICAgZW50aXR5MyA9IE1hdGguY2VpbChwdW5jdHVhdGlvbi5sZW5ndGggKiBNYXRoLnJhbmRvbSgpICogTWF0aC5yYW5kb20oKSk7XHJcbiAgICAgICAgaG9sZCA9IHN0cmluZy5jaGFyQXQoZW50aXR5MSk7XHJcbiAgICAgICAgaG9sZCA9IChwYXNzd29yZC5sZW5ndGggJSAyID09IDApID8gKGhvbGQudG9VcHBlckNhc2UoKSkgOiAoaG9sZCk7XHJcbiAgICAgICAgY2hhcmFjdGVyICs9IGhvbGQ7XHJcbiAgICAgICAgY2hhcmFjdGVyICs9IG51bWVyaWMuY2hhckF0KGVudGl0eTIpO1xyXG4gICAgICAgIGNoYXJhY3RlciArPSBwdW5jdHVhdGlvbi5jaGFyQXQoZW50aXR5Myk7XHJcbiAgICAgICAgcGFzc3dvcmQgPSBjaGFyYWN0ZXI7XHJcbiAgICB9XHJcbiAgICBwYXNzd29yZCA9IHBhc3N3b3JkLnNwbGl0KCcnKS5zb3J0KGZ1bmN0aW9uICgpIHsgcmV0dXJuIDAuNSAtIE1hdGgucmFuZG9tKCkgfSkuam9pbignJyk7XHJcbiAgICByZXR1cm4gcGFzc3dvcmQuc3Vic3RyKDAsIGxlbmd0aCk7XHJcbn1cclxuXHJcbmV4cG9ydHMucGFzc3dvcmRfZ2VuZXJhdG9yID0gcGFzc3dvcmRfZ2VuZXJhdG9yOyJdfQ==\",\"originalCode\":\"const multer = require('multer');\\r\\nconst { v4: uuidv4 } = require('uuid');\\r\\nlet path = require('path');\\r\\n\\r\\nconst password_generator = (len) => {\\r\\n var length = (len) ? (len) : (10);\\r\\n var string = \\\"abcdefghijklmnopqrstuvwxyz\\\"; //to upper \\r\\n var numeric = '0123456789';\\r\\n var punctuation = '!@#$%^&*()_+~`|}{[]\\\\:;?><,./-=';\\r\\n var password = \\\"\\\";\\r\\n var character = \\\"\\\";\\r\\n var crunch = true;\\r\\n while (password.length < length) {\\r\\n entity1 = Math.ceil(string.length * Math.random() * Math.random());\\r\\n entity2 = Math.ceil(numeric.length * Math.random() * Math.random());\\r\\n entity3 = Math.ceil(punctuation.length * Math.random() * Math.random());\\r\\n hold = string.charAt(entity1);\\r\\n hold = (password.length % 2 == 0) ? (hold.toUpperCase()) : (hold);\\r\\n character += hold;\\r\\n character += numeric.charAt(entity2);\\r\\n character += punctuation.charAt(entity3);\\r\\n password = character;\\r\\n }\\r\\n password = password.split('').sort(function () { return 0.5 - Math.random() }).join('');\\r\\n return password.substr(0, length);\\r\\n}\\r\\n\\r\\nexports.password_generator = password_generator;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/12/utils_12501e91058955e05c348a4b2ab3e6a2.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2498\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\utils\\\\utils.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":5216,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":5213,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"password_generator\",\"ranges\":[{\"startOffset\":223,\"endOffset\":1107,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const express = require('express');\\n\\nconst bodyParser = require('body-parser');\\n\\nconst cors = require('./cors');\\n\\nconst {\\n checkSchema\\n} = require('express-validator');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nvar validationRules = require('../middleware/validation');\\n\\nconst placeController = require('../controllers/placeController');\\n\\nconst visitingPlaceRouter = express.Router();\\nvisitingPlaceRouter.use(bodyParser.json()); // **********************************************************************************\\n// Visiting Place Routes\\n// **********************************************************************************\\n\\nvisitingPlaceRouter.route('/').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, placeController.getAllVisitingPlaces).post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.addVisitingPlace).put(cors.corsWithOptions, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('PUT operation not supported on /visitingPlaces');\\n}).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.deleteAllVisitingPlaces);\\nvisitingPlaceRouter.route('/search').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).post(cors.corsWithOptions, authenticate.verifyUser, placeController.getAllVisitingPlacesByName); // **********************************************************************************\\n// \\n// Visiting Place Routes On ID\\n// \\n// **********************************************************************************\\n\\nvisitingPlaceRouter.route('/:visitingPlaceId').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, placeController.getVisitingPlaceDetailsById).post(cors.corsWithOptions, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('POST operation not supported on /visitingPlaces/' + req.params.visitingPlaceId);\\n}).put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.updateVisitingPlaceDetailsById).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.deleteAVisitingPlaceById);\\nmodule.exports = visitingPlaceRouter;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBsYWNlUm91dGVyLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwiYm9keVBhcnNlciIsImNvcnMiLCJjaGVja1NjaGVtYSIsImF1dGhlbnRpY2F0ZSIsInZhbGlkYXRpb25SdWxlcyIsInBsYWNlQ29udHJvbGxlciIsInZpc2l0aW5nUGxhY2VSb3V0ZXIiLCJSb3V0ZXIiLCJ1c2UiLCJqc29uIiwicm91dGUiLCJvcHRpb25zIiwiY29yc1dpdGhPcHRpb25zIiwicmVxIiwicmVzIiwic2VuZFN0YXR1cyIsImdldCIsInZlcmlmeVVzZXIiLCJnZXRBbGxWaXNpdGluZ1BsYWNlcyIsInBvc3QiLCJ2ZXJpZnlBZG1pbiIsImFkZFZpc2l0aW5nUGxhY2UiLCJwdXQiLCJuZXh0Iiwic3RhdHVzQ29kZSIsImVuZCIsImRlbGV0ZSIsImRlbGV0ZUFsbFZpc2l0aW5nUGxhY2VzIiwiZ2V0QWxsVmlzaXRpbmdQbGFjZXNCeU5hbWUiLCJnZXRWaXNpdGluZ1BsYWNlRGV0YWlsc0J5SWQiLCJwYXJhbXMiLCJ2aXNpdGluZ1BsYWNlSWQiLCJ1cGRhdGVWaXNpdGluZ1BsYWNlRGV0YWlsc0J5SWQiLCJkZWxldGVBVmlzaXRpbmdQbGFjZUJ5SWQiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxPQUFPLEdBQUdDLE9BQU8sQ0FBQyxTQUFELENBQXZCOztBQUNBLE1BQU1DLFVBQVUsR0FBR0QsT0FBTyxDQUFDLGFBQUQsQ0FBMUI7O0FBRUEsTUFBTUUsSUFBSSxHQUFHRixPQUFPLENBQUMsUUFBRCxDQUFwQjs7QUFDQSxNQUFNO0FBQUVHLEVBQUFBO0FBQUYsSUFBa0JILE9BQU8sQ0FBQyxtQkFBRCxDQUEvQjs7QUFDQSxJQUFJSSxZQUFZLEdBQUdKLE9BQU8sQ0FBQyw0QkFBRCxDQUExQjs7QUFDQSxJQUFJSyxlQUFlLEdBQUdMLE9BQU8sQ0FBQywwQkFBRCxDQUE3Qjs7QUFDQSxNQUFNTSxlQUFlLEdBQUdOLE9BQU8sQ0FBQyxnQ0FBRCxDQUEvQjs7QUFFQSxNQUFNTyxtQkFBbUIsR0FBR1IsT0FBTyxDQUFDUyxNQUFSLEVBQTVCO0FBRUFELG1CQUFtQixDQUFDRSxHQUFwQixDQUF3QlIsVUFBVSxDQUFDUyxJQUFYLEVBQXhCLEUsQ0FFQTtBQUVBO0FBRUE7O0FBRUFILG1CQUFtQixDQUFDSSxLQUFwQixDQUEwQixHQUExQixFQUNLQyxPQURMLENBQ2FWLElBQUksQ0FBQ1csZUFEbEIsRUFDbUMsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEtBQWM7QUFBRUEsRUFBQUEsR0FBRyxDQUFDQyxVQUFKLENBQWUsR0FBZjtBQUFzQixDQUR6RSxFQUVLQyxHQUZMLENBRVNmLElBQUksQ0FBQ0EsSUFGZCxFQUVvQkUsWUFBWSxDQUFDYyxVQUZqQyxFQUU2Q1osZUFBZSxDQUFDYSxvQkFGN0QsRUFHS0MsSUFITCxDQUdVbEIsSUFBSSxDQUFDVyxlQUhmLEVBR2dDVCxZQUFZLENBQUNjLFVBSDdDLEVBR3lEZCxZQUFZLENBQUNpQixXQUh0RSxFQUdtRmYsZUFBZSxDQUFDZ0IsZ0JBSG5HLEVBSUtDLEdBSkwsQ0FJU3JCLElBQUksQ0FBQ1csZUFKZCxFQUkrQixDQUFDQyxHQUFELEVBQU1DLEdBQU4sRUFBV1MsSUFBWCxLQUFvQjtBQUMzQ1QsRUFBQUEsR0FBRyxDQUFDVSxVQUFKLEdBQWlCLEdBQWpCO0FBQ0FWLEVBQUFBLEdBQUcsQ0FBQ1csR0FBSixDQUFRLGdEQUFSO0FBQ0gsQ0FQTCxFQVFLQyxNQVJMLENBUVl6QixJQUFJLENBQUNXLGVBUmpCLEVBUWtDVCxZQUFZLENBQUNjLFVBUi9DLEVBUTJEZCxZQUFZLENBQUNpQixXQVJ4RSxFQVFxRmYsZUFBZSxDQUFDc0IsdUJBUnJHO0FBU0FyQixtQkFBbUIsQ0FBQ0ksS0FBcEIsQ0FBMEIsU0FBMUIsRUFDS0MsT0FETCxDQUNhVixJQUFJLENBQUNXLGVBRGxCLEVBQ21DLENBQUNDLEdBQUQsRUFBTUMsR0FBTixLQUFjO0FBQUVBLEVBQUFBLEdBQUcsQ0FBQ0MsVUFBSixDQUFlLEdBQWY7QUFBc0IsQ0FEekUsRUFFS0ksSUFGTCxDQUVVbEIsSUFBSSxDQUFDVyxlQUZmLEVBRWdDVCxZQUFZLENBQUNjLFVBRjdDLEVBRXlEWixlQUFlLENBQUN1QiwwQkFGekUsRSxDQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUF0QixtQkFBbUIsQ0FBQ0ksS0FBcEIsQ0FBMEIsbUJBQTFCLEVBQ0tDLE9BREwsQ0FDYVYsSUFBSSxDQUFDVyxlQURsQixFQUNtQyxDQUFDQyxHQUFELEVBQU1DLEdBQU4sS0FBYztBQUFFQSxFQUFBQSxHQUFHLENBQUNDLFVBQUosQ0FBZSxHQUFmO0FBQXNCLENBRHpFLEVBRUtDLEdBRkwsQ0FFU2YsSUFBSSxDQUFDQSxJQUZkLEVBRW9CRSxZQUFZLENBQUNjLFVBRmpDLEVBRTZDWixlQUFlLENBQUN3QiwyQkFGN0QsRUFHS1YsSUFITCxDQUdVbEIsSUFBSSxDQUFDVyxlQUhmLEVBR2dDLENBQUNDLEdBQUQsRUFBTUMsR0FBTixFQUFXUyxJQUFYLEtBQW9CO0FBQzVDVCxFQUFBQSxHQUFHLENBQUNVLFVBQUosR0FBaUIsR0FBakI7QUFDQVYsRUFBQUEsR0FBRyxDQUFDVyxHQUFKLENBQVEscURBQXFEWixHQUFHLENBQUNpQixNQUFKLENBQVdDLGVBQXhFO0FBQ0gsQ0FOTCxFQU9LVCxHQVBMLENBT1NyQixJQUFJLENBQUNXLGVBUGQsRUFPK0JULFlBQVksQ0FBQ2MsVUFQNUMsRUFPd0RkLFlBQVksQ0FBQ2lCLFdBUHJFLEVBT2tGZixlQUFlLENBQUMyQiw4QkFQbEcsRUFRS04sTUFSTCxDQVFZekIsSUFBSSxDQUFDVyxlQVJqQixFQVFrQ1QsWUFBWSxDQUFDYyxVQVIvQyxFQVEyRGQsWUFBWSxDQUFDaUIsV0FSeEUsRUFRcUZmLGVBQWUsQ0FBQzRCLHdCQVJyRztBQVVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUI3QixtQkFBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBleHByZXNzID0gcmVxdWlyZSgnZXhwcmVzcycpO1xyXG5jb25zdCBib2R5UGFyc2VyID0gcmVxdWlyZSgnYm9keS1wYXJzZXInKTtcclxuXHJcbmNvbnN0IGNvcnMgPSByZXF1aXJlKCcuL2NvcnMnKTtcclxuY29uc3QgeyBjaGVja1NjaGVtYSB9ID0gcmVxdWlyZSgnZXhwcmVzcy12YWxpZGF0b3InKTtcclxudmFyIGF1dGhlbnRpY2F0ZSA9IHJlcXVpcmUoJy4uL21pZGRsZXdhcmUvYXV0aGVudGljYXRlJyk7XHJcbnZhciB2YWxpZGF0aW9uUnVsZXMgPSByZXF1aXJlKCcuLi9taWRkbGV3YXJlL3ZhbGlkYXRpb24nKTtcclxuY29uc3QgcGxhY2VDb250cm9sbGVyID0gcmVxdWlyZSgnLi4vY29udHJvbGxlcnMvcGxhY2VDb250cm9sbGVyJyk7XHJcblxyXG5jb25zdCB2aXNpdGluZ1BsYWNlUm91dGVyID0gZXhwcmVzcy5Sb3V0ZXIoKTtcclxuXHJcbnZpc2l0aW5nUGxhY2VSb3V0ZXIudXNlKGJvZHlQYXJzZXIuanNvbigpKTtcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbi8vICAgICAgICAgICAgICBWaXNpdGluZyBQbGFjZSBSb3V0ZXNcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbnZpc2l0aW5nUGxhY2VSb3V0ZXIucm91dGUoJy8nKVxyXG4gICAgLm9wdGlvbnMoY29ycy5jb3JzV2l0aE9wdGlvbnMsIChyZXEsIHJlcykgPT4geyByZXMuc2VuZFN0YXR1cygyMDApOyB9KVxyXG4gICAgLmdldChjb3JzLmNvcnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCBwbGFjZUNvbnRyb2xsZXIuZ2V0QWxsVmlzaXRpbmdQbGFjZXMpXHJcbiAgICAucG9zdChjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgcGxhY2VDb250cm9sbGVyLmFkZFZpc2l0aW5nUGxhY2UpXHJcbiAgICAucHV0KGNvcnMuY29yc1dpdGhPcHRpb25zLCAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwMztcclxuICAgICAgICByZXMuZW5kKCdQVVQgb3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQgb24gL3Zpc2l0aW5nUGxhY2VzJyk7XHJcbiAgICB9KVxyXG4gICAgLmRlbGV0ZShjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgcGxhY2VDb250cm9sbGVyLmRlbGV0ZUFsbFZpc2l0aW5nUGxhY2VzKTtcclxudmlzaXRpbmdQbGFjZVJvdXRlci5yb3V0ZSgnL3NlYXJjaCcpXHJcbiAgICAub3B0aW9ucyhjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcbiAgICAucG9zdChjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIHBsYWNlQ29udHJvbGxlci5nZXRBbGxWaXNpdGluZ1BsYWNlc0J5TmFtZSk7XHJcblxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbi8vIFxyXG4vLyAgICAgICAgICAgICAgVmlzaXRpbmcgUGxhY2UgUm91dGVzIE9uIElEXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG52aXNpdGluZ1BsYWNlUm91dGVyLnJvdXRlKCcvOnZpc2l0aW5nUGxhY2VJZCcpXHJcbiAgICAub3B0aW9ucyhjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcbiAgICAuZ2V0KGNvcnMuY29ycywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIHBsYWNlQ29udHJvbGxlci5nZXRWaXNpdGluZ1BsYWNlRGV0YWlsc0J5SWQpXHJcbiAgICAucG9zdChjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgcmVzLmVuZCgnUE9TVCBvcGVyYXRpb24gbm90IHN1cHBvcnRlZCBvbiAvdmlzaXRpbmdQbGFjZXMvJyArIHJlcS5wYXJhbXMudmlzaXRpbmdQbGFjZUlkKTtcclxuICAgIH0pXHJcbiAgICAucHV0KGNvcnMuY29yc1dpdGhPcHRpb25zLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeUFkbWluLCBwbGFjZUNvbnRyb2xsZXIudXBkYXRlVmlzaXRpbmdQbGFjZURldGFpbHNCeUlkKVxyXG4gICAgLmRlbGV0ZShjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgcGxhY2VDb250cm9sbGVyLmRlbGV0ZUFWaXNpdGluZ1BsYWNlQnlJZCk7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IHZpc2l0aW5nUGxhY2VSb3V0ZXI7XHJcbiJdfQ==\",\"originalCode\":\"const express = require('express');\\r\\nconst bodyParser = require('body-parser');\\r\\n\\r\\nconst cors = require('./cors');\\r\\nconst { checkSchema } = require('express-validator');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\nvar validationRules = require('../middleware/validation');\\r\\nconst placeController = require('../controllers/placeController');\\r\\n\\r\\nconst visitingPlaceRouter = express.Router();\\r\\n\\r\\nvisitingPlaceRouter.use(bodyParser.json());\\r\\n\\r\\n// **********************************************************************************\\r\\n\\r\\n// Visiting Place Routes\\r\\n\\r\\n// **********************************************************************************\\r\\n\\r\\nvisitingPlaceRouter.route('/')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, placeController.getAllVisitingPlaces)\\r\\n .post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.addVisitingPlace)\\r\\n .put(cors.corsWithOptions, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('PUT operation not supported on /visitingPlaces');\\r\\n })\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.deleteAllVisitingPlaces);\\r\\nvisitingPlaceRouter.route('/search')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .post(cors.corsWithOptions, authenticate.verifyUser, placeController.getAllVisitingPlacesByName);\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Visiting Place Routes On ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nvisitingPlaceRouter.route('/:visitingPlaceId')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, placeController.getVisitingPlaceDetailsById)\\r\\n .post(cors.corsWithOptions, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('POST operation not supported on /visitingPlaces/' + req.params.visitingPlaceId);\\r\\n })\\r\\n .put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.updateVisitingPlaceDetailsById)\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, placeController.deleteAVisitingPlaceById);\\r\\n\\r\\nmodule.exports = visitingPlaceRouter;\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/9d/placeRouter_9d9aca2c41f2c1b6283bdacdd67537b2.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2539\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\placeRouter.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":9353,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":9350,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":809,\"endOffset\":849,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1067,\"endOffset\":1175,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1366,\"endOffset\":1406,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1807,\"endOffset\":1847,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1961,\"endOffset\":2100,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const VisitingPlaces = require('../models/visitingPlaces'); // **********************************************************************************\\n// \\n// Visiting Place Operations \\n// \\n// **********************************************************************************\\n\\n\\nconst getAllVisitingPlaces = (req, res, next) => {\\n var query = {};\\n VisitingPlaces.find(query, 'name description distance location timeToReach image travellingMethods').then(visitingPlaces => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n visitingPlaces: visitingPlaces\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst getAllVisitingPlacesByName = (req, res, next) => {\\n var query = {};\\n\\n if (req.body.similarTo) {\\n query = {\\n name: {\\n $regex: `${req.body.similarTo}`,\\n $options: \\\"i\\\"\\n }\\n };\\n }\\n\\n VisitingPlaces.find(query, 'name description distance location timeToReach image travellingMethods').then(visitingPlaces => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n visitingPlaces: visitingPlaces\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst addVisitingPlace = (req, res, next) => {\\n var imagesArray = []; // files = req.files;\\n // files.forEach(file => {\\n // imagesArray.push(file.filename);\\n // });\\n\\n var place = {\\n name: req.body.name,\\n description: req.body.description,\\n location: {\\n coordinates: req.body.location.coordinates\\n },\\n distance: req.body.distance,\\n timeToReach: req.body.timeToReach,\\n images: imagesArray,\\n travellingMethods: req.body.methods\\n };\\n VisitingPlaces.create(place).then(visitingPlace => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n visitingPlace: visitingPlace\\n });\\n }, err => {\\n res.statusCode = 403;\\n res.setHeader('Content-Type', 'application/json');\\n const msg = err.driver ? \\\"Duplicate Key\\\" : err._message;\\n res.json({\\n success: false,\\n message: msg\\n });\\n }).catch(err => next(err));\\n};\\n\\nconst deleteAllVisitingPlaces = (req, res, next) => {\\n VisitingPlaces.remove({}).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json(resp);\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nexports.getAllVisitingPlaces = getAllVisitingPlaces;\\nexports.getAllVisitingPlacesByName = getAllVisitingPlacesByName;\\nexports.addVisitingPlace = addVisitingPlace;\\nexports.deleteAllVisitingPlaces = deleteAllVisitingPlaces; // **********************************************************************************\\n// \\n// Visiting Place Operations Specified by ID\\n// \\n// **********************************************************************************\\n\\nconst getVisitingPlaceDetailsById = (req, res, next) => {\\n VisitingPlaces.findById(req.params.visitingPlaceId).then(visitingPlace => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n visitingPlace: visitingPlace\\n });\\n }, err => {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: \\\"Could not find the place\\\"\\n });\\n }).catch(err => next(err));\\n};\\n\\nconst updateVisitingPlaceDetailsById = (req, res, next) => {\\n VisitingPlaces.findByIdAndUpdate(req.params.visitingPlaceId, {\\n $set: req.body\\n }, {\\n new: true\\n }).then(visitingPlace => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n visitingPlace: visitingPlace\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst deleteAVisitingPlaceById = (req, res, next) => {\\n VisitingPlaces.findByIdAndRemove(req.params.visitingPlaceId).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n response: resp\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nexports.getVisitingPlaceDetailsById = getVisitingPlaceDetailsById;\\nexports.updateVisitingPlaceDetailsById = updateVisitingPlaceDetailsById;\\nexports.deleteAVisitingPlaceById = deleteAVisitingPlaceById;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBsYWNlQ29udHJvbGxlci5qcyJdLCJuYW1lcyI6WyJWaXNpdGluZ1BsYWNlcyIsInJlcXVpcmUiLCJnZXRBbGxWaXNpdGluZ1BsYWNlcyIsInJlcSIsInJlcyIsIm5leHQiLCJxdWVyeSIsImZpbmQiLCJ0aGVuIiwidmlzaXRpbmdQbGFjZXMiLCJzdGF0dXNDb2RlIiwic2V0SGVhZGVyIiwianNvbiIsInN1Y2Nlc3MiLCJlcnIiLCJjYXRjaCIsImdldEFsbFZpc2l0aW5nUGxhY2VzQnlOYW1lIiwiYm9keSIsInNpbWlsYXJUbyIsIm5hbWUiLCIkcmVnZXgiLCIkb3B0aW9ucyIsImFkZFZpc2l0aW5nUGxhY2UiLCJpbWFnZXNBcnJheSIsInBsYWNlIiwiZGVzY3JpcHRpb24iLCJsb2NhdGlvbiIsImNvb3JkaW5hdGVzIiwiZGlzdGFuY2UiLCJ0aW1lVG9SZWFjaCIsImltYWdlcyIsInRyYXZlbGxpbmdNZXRob2RzIiwibWV0aG9kcyIsImNyZWF0ZSIsInZpc2l0aW5nUGxhY2UiLCJtc2ciLCJkcml2ZXIiLCJfbWVzc2FnZSIsIm1lc3NhZ2UiLCJkZWxldGVBbGxWaXNpdGluZ1BsYWNlcyIsInJlbW92ZSIsInJlc3AiLCJleHBvcnRzIiwiZ2V0VmlzaXRpbmdQbGFjZURldGFpbHNCeUlkIiwiZmluZEJ5SWQiLCJwYXJhbXMiLCJ2aXNpdGluZ1BsYWNlSWQiLCJ1cGRhdGVWaXNpdGluZ1BsYWNlRGV0YWlsc0J5SWQiLCJmaW5kQnlJZEFuZFVwZGF0ZSIsIiRzZXQiLCJuZXciLCJkZWxldGVBVmlzaXRpbmdQbGFjZUJ5SWQiLCJmaW5kQnlJZEFuZFJlbW92ZSIsInJlc3BvbnNlIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxjQUFjLEdBQUdDLE9BQU8sQ0FBQywwQkFBRCxDQUE5QixDLENBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUEsTUFBTUMsb0JBQW9CLEdBQUcsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDN0MsTUFB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QztBQUNBTCxPQUFPLENBQUNTLHdCQUFSLEdBQW1DQSx3QkFBbkMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBWaXNpdGluZ1BsYWNlcyA9IHJlcXVpcmUoJy4uL21vZGVscy92aXNpdGluZ1BsYWNlcycpO1xyXG5cclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyBcclxuLy8gICAgICAgICAgICAgIFZpc2l0aW5nIFBsYWNlIE9wZXJhdGlvbnMgXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG5jb25zdCBnZXRBbGxWaXNpdGluZ1BsYWNlcyA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgdmFyIHF1ZXJ5ID0ge307XHJcbiAgICBWaXNpdGluZ1BsYWNlcy5maW5kKHF1ZXJ5LCAnbmFtZSBkZXNjcmlwdGlvbiBkaXN0YW5jZSBsb2NhdGlvbiB0aW1lVG9SZWFjaCBpbWFnZSB0cmF2ZWxsaW5nTWV0aG9kcycpXHJcbiAgICAgICAgLnRoZW4oKHZpc2l0aW5nUGxhY2VzKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHZpc2l0aW5nUGxhY2VzOiB2aXNpdGluZ1BsYWNlcyB9KTtcclxuICAgICAgICB9LCAoZXJyKSA9PiBuZXh0KGVycikpXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IG5leHQoZXJyKSk7XHJcbn1cclxuXHJcbmNvbnN0IGdldEFsbFZpc2l0aW5nUGxhY2VzQnlOYW1lID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICB2YXIgcXVlcnkgPSB7fTtcclxuICAgIGlmIChyZXEuYm9keS5zaW1pbGFyVG8pIHtcclxuICAgICAgICBxdWVyeSA9IHsgbmFtZTogeyAkcmVnZXg6IGAke3JlcS5ib2R5LnNpbWlsYXJUb31gLCAkb3B0aW9uczogXCJpXCIgfSB9XHJcbiAgICB9XHJcbiAgICBWaXNpdGluZ1BsYWNlcy5maW5kKHF1ZXJ5LCAnbmFtZSBkZXNjcmlwdGlvbiBkaXN0YW5jZSBsb2NhdGlvbiB0aW1lVG9SZWFjaCBpbWFnZSB0cmF2ZWxsaW5nTWV0aG9kcycpXHJcbiAgICAgICAgLnRoZW4oKHZpc2l0aW5nUGxhY2VzKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHZpc2l0aW5nUGxhY2VzOiB2aXNpdGluZ1BsYWNlcyB9KTtcclxuICAgICAgICB9LCAoZXJyKSA9PiBuZXh0KGVycikpXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IG5leHQoZXJyKSk7XHJcbn1cclxuXHJcbmNvbnN0IGFkZFZpc2l0aW5nUGxhY2UgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHZhciBpbWFnZXNBcnJheSA9IFtdO1xyXG4gICAgLy8gZmlsZXMgPSByZXEuZmlsZXM7XHJcbiAgICAvLyBmaWxlcy5mb3JFYWNoKGZpbGUgPT4ge1xyXG4gICAgLy8gICAgIGltYWdlc0FycmF5LnB1c2goZmlsZS5maWxlbmFtZSk7XHJcbiAgICAvLyB9KTtcclxuICAgIHZhciBwbGFjZSA9XHJcbiAgICB7XHJcbiAgICAgICAgbmFtZTogcmVxLmJvZHkubmFtZSxcclxuICAgICAgICBkZXNjcmlwdGlvbjogcmVxLmJvZHkuZGVzY3JpcHRpb24sXHJcbiAgICAgICAgbG9jYXRpb246IHtcclxuICAgICAgICAgICAgY29vcmRpbmF0ZXM6IHJlcS5ib2R5LmxvY2F0aW9uLmNvb3JkaW5hdGVzXHJcbiAgICAgICAgfSxcclxuICAgICAgICBkaXN0YW5jZTogcmVxLmJvZHkuZGlzdGFuY2UsXHJcbiAgICAgICAgdGltZVRvUmVhY2g6IHJlcS5ib2R5LnRpbWVUb1JlYWNoLFxyXG4gICAgICAgIGltYWdlczogaW1hZ2VzQXJyYXksXHJcbiAgICAgICAgdHJhdmVsbGluZ01ldGhvZHM6IHJlcS5ib2R5Lm1ldGhvZHNcclxuICAgIH1cclxuICAgIFZpc2l0aW5nUGxhY2VzLmNyZWF0ZShwbGFjZSlcclxuICAgICAgICAudGhlbigodmlzaXRpbmdQbGFjZSkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCB2aXNpdGluZ1BsYWNlOiB2aXNpdGluZ1BsYWNlIH0pO1xyXG4gICAgICAgIH0sIChlcnIpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIGNvbnN0IG1zZyA9IGVyci5kcml2ZXIgPyBcIkR1cGxpY2F0ZSBLZXlcIiA6IGVyci5fbWVzc2FnZTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogbXNnIH0pO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IG5leHQoZXJyKSk7XHJcbn1cclxuXHJcbmNvbnN0IGRlbGV0ZUFsbFZpc2l0aW5nUGxhY2VzID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICBWaXNpdGluZ1BsYWNlcy5yZW1vdmUoe30pXHJcbiAgICAgICAgLnRoZW4oKHJlc3ApID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHJlc3ApO1xyXG4gICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuZXhwb3J0cy5nZXRBbGxWaXNpdGluZ1BsYWNlcyA9IGdldEFsbFZpc2l0aW5nUGxhY2VzO1xyXG5leHBvcnRzLmdldEFsbFZpc2l0aW5nUGxhY2VzQnlOYW1lID0gZ2V0QWxsVmlzaXRpbmdQbGFjZXNCeU5hbWU7XHJcbmV4cG9ydHMuYWRkVmlzaXRpbmdQbGFjZSA9IGFkZFZpc2l0aW5nUGxhY2U7XHJcbmV4cG9ydHMuZGVsZXRlQWxsVmlzaXRpbmdQbGFjZXMgPSBkZWxldGVBbGxWaXNpdGluZ1BsYWNlcztcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuLy8gXHJcbi8vICAgICAgICAgICAgICBWaXNpdGluZyBQbGFjZSBPcGVyYXRpb25zIFNwZWNpZmllZCBieSBJRFxyXG4vLyBcclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuY29uc3QgZ2V0VmlzaXRpbmdQbGFjZURldGFpbHNCeUlkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICBWaXNpdGluZ1BsYWNlcy5maW5kQnlJZChyZXEucGFyYW1zLnZpc2l0aW5nUGxhY2VJZClcclxuICAgICAgICAudGhlbigodmlzaXRpbmdQbGFjZSkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCB2aXNpdGluZ1BsYWNlOiB2aXNpdGluZ1BsYWNlIH0pO1xyXG4gICAgICAgIH0sIChlcnIpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDQ7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogZmFsc2UsIG1lc3NhZ2U6IFwiQ291bGQgbm90IGZpbmQgdGhlIHBsYWNlXCIgfSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuY29uc3QgdXBkYXRlVmlzaXRpbmdQbGFjZURldGFpbHNCeUlkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICBWaXNpdGluZ1BsYWNlcy5maW5kQnlJZEFuZFVwZGF0ZShyZXEucGFyYW1zLnZpc2l0aW5nUGxhY2VJZCwge1xyXG4gICAgICAgICRzZXQ6IHJlcS5ib2R5XHJcbiAgICB9LCB7IG5ldzogdHJ1ZSB9KVxyXG4gICAgICAgIC50aGVuKCh2aXNpdGluZ1BsYWNlKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHZpc2l0aW5nUGxhY2U6IHZpc2l0aW5nUGxhY2UgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpO1xyXG59XHJcblxyXG5jb25zdCBkZWxldGVBVmlzaXRpbmdQbGFjZUJ5SWQgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIFZpc2l0aW5nUGxhY2VzLmZpbmRCeUlkQW5kUmVtb3ZlKHJlcS5wYXJhbXMudmlzaXRpbmdQbGFjZUlkKVxyXG4gICAgICAgIC50aGVuKChyZXNwKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHJlc3BvbnNlOiByZXNwIH0pO1xyXG4gICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuZXhwb3J0cy5nZXRWaXNpdGluZ1BsYWNlRGV0YWlsc0J5SWQgPSBnZXRWaXNpdGluZ1BsYWNlRGV0YWlsc0J5SWQ7XHJcbmV4cG9ydHMudXBkYXRlVmlzaXRpbmdQbGFjZURldGFpbHNCeUlkID0gdXBkYXRlVmlzaXRpbmdQbGFjZURldGFpbHNCeUlkO1xyXG5leHBvcnRzLmRlbGV0ZUFWaXNpdGluZ1BsYWNlQnlJZCA9IGRlbGV0ZUFWaXNpdGluZ1BsYWNlQnlJZDsiXX0=\",\"originalCode\":\"const VisitingPlaces = require('../models/visitingPlaces');\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Visiting Place Operations \\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nconst getAllVisitingPlaces = (req, res, next) => {\\r\\n var query = {};\\r\\n VisitingPlaces.find(query, 'name description distance location timeToReach image travellingMethods')\\r\\n .then((visitingPlaces) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, visitingPlaces: visitingPlaces });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst getAllVisitingPlacesByName = (req, res, next) => {\\r\\n var query = {};\\r\\n if (req.body.similarTo) {\\r\\n query = { name: { $regex: `${req.body.similarTo}`, $options: \\\"i\\\" } }\\r\\n }\\r\\n VisitingPlaces.find(query, 'name description distance location timeToReach image travellingMethods')\\r\\n .then((visitingPlaces) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, visitingPlaces: visitingPlaces });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst addVisitingPlace = (req, res, next) => {\\r\\n var imagesArray = [];\\r\\n // files = req.files;\\r\\n // files.forEach(file => {\\r\\n // imagesArray.push(file.filename);\\r\\n // });\\r\\n var place =\\r\\n {\\r\\n name: req.body.name,\\r\\n description: req.body.description,\\r\\n location: {\\r\\n coordinates: req.body.location.coordinates\\r\\n },\\r\\n distance: req.body.distance,\\r\\n timeToReach: req.body.timeToReach,\\r\\n images: imagesArray,\\r\\n travellingMethods: req.body.methods\\r\\n }\\r\\n VisitingPlaces.create(place)\\r\\n .then((visitingPlace) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, visitingPlace: visitingPlace });\\r\\n }, (err) => {\\r\\n res.statusCode = 403;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n const msg = err.driver ? \\\"Duplicate Key\\\" : err._message;\\r\\n res.json({ success: false, message: msg });\\r\\n })\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst deleteAllVisitingPlaces = (req, res, next) => {\\r\\n VisitingPlaces.remove({})\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json(resp);\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nexports.getAllVisitingPlaces = getAllVisitingPlaces;\\r\\nexports.getAllVisitingPlacesByName = getAllVisitingPlacesByName;\\r\\nexports.addVisitingPlace = addVisitingPlace;\\r\\nexports.deleteAllVisitingPlaces = deleteAllVisitingPlaces;\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Visiting Place Operations Specified by ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nconst getVisitingPlaceDetailsById = (req, res, next) => {\\r\\n VisitingPlaces.findById(req.params.visitingPlaceId)\\r\\n .then((visitingPlace) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, visitingPlace: visitingPlace });\\r\\n }, (err) => {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: \\\"Could not find the place\\\" });\\r\\n })\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst updateVisitingPlaceDetailsById = (req, res, next) => {\\r\\n VisitingPlaces.findByIdAndUpdate(req.params.visitingPlaceId, {\\r\\n $set: req.body\\r\\n }, { new: true })\\r\\n .then((visitingPlace) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, visitingPlace: visitingPlace });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst deleteAVisitingPlaceById = (req, res, next) => {\\r\\n VisitingPlaces.findByIdAndRemove(req.params.visitingPlaceId)\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, response: resp });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nexports.getVisitingPlaceDetailsById = getVisitingPlaceDetailsById;\\r\\nexports.updateVisitingPlaceDetailsById = updateVisitingPlaceDetailsById;\\r\\nexports.deleteAVisitingPlaceById = deleteAVisitingPlaceById;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/ee/placeController_ee3a20e34d4d356553af723b6f7f6a6e.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2540\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\placeController.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":18578,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":18575,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"getAllVisitingPlaces\",\"ranges\":[{\"startOffset\":403,\"endOffset\":782,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getAllVisitingPlacesByName\",\"ranges\":[{\"startOffset\":820,\"endOffset\":1339,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"addVisitingPlace\",\"ranges\":[{\"startOffset\":1367,\"endOffset\":2276,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"deleteAllVisitingPlaces\",\"ranges\":[{\"startOffset\":2311,\"endOffset\":2526,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getVisitingPlaceDetailsById\",\"ranges\":[{\"startOffset\":3026,\"endOffset\":3499,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"updateVisitingPlaceDetailsById\",\"ranges\":[{\"startOffset\":3541,\"endOffset\":3906,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"deleteAVisitingPlaceById\",\"ranges\":[{\"startOffset\":3942,\"endOffset\":4237,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const express = require('express');\\n\\nconst bodyParser = require('body-parser');\\n\\nconst cors = require('./cors');\\n\\nconst {\\n checkSchema\\n} = require('express-validator');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nvar validationRules = require('../middleware/validation');\\n\\nconst scheduleController = require('../controllers/scheduleController');\\n\\nconst scheduleRouter = express.Router();\\nscheduleRouter.use(bodyParser.json()); // **********************************************************************************\\n// \\n// Schedule Routes\\n// \\n// **********************************************************************************\\n\\nscheduleRouter.route('/').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, scheduleController.getAllSchedules).post(cors.corsWithOptions, authenticate.verifyUser, scheduleController.addSchedule).put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('PUT operation not supported on /schedules');\\n}).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, scheduleController.deleteAllSchedules); // **********************************************************************************\\n// \\n// Schedule Routes On ID\\n// \\n// **********************************************************************************\\n\\nscheduleRouter.route('/:scheduleId').options(cors.corsWithOptions, authenticate.verifyUser, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, scheduleController.getScheduleDetailsById).post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('POST operation not supported on /schedules/' + req.params.scheduleId);\\n}).put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, scheduleController.updateScheduleById).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, scheduleController.deleteScheduleById);\\nscheduleRouter.route('/user/:userId').options(cors.corsWithOptions, authenticate.verifyUser, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, scheduleController.getAllSchedulesForAUser);\\nmodule.exports = scheduleRouter;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNjaGVkdWxlUm91dGVyLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwiYm9keVBhcnNlciIsImNvcnMiLCJjaGVja1NjaGVtYSIsImF1dGhlbnRpY2F0ZSIsInZhbGlkYXRpb25SdWxlcyIsInNjaGVkdWxlQ29udHJvbGxlciIsInNjaGVkdWxlUm91dGVyIiwiUm91dGVyIiwidXNlIiwianNvbiIsInJvdXRlIiwib3B0aW9ucyIsImNvcnNXaXRoT3B0aW9ucyIsInJlcSIsInJlcyIsInNlbmRTdGF0dXMiLCJnZXQiLCJ2ZXJpZnlVc2VyIiwiZ2V0QWxsU2NoZWR1bGVzIiwicG9zdCIsImFkZFNjaGVkdWxlIiwicHV0IiwidmVyaWZ5TW9kZXJhdGVyIiwibmV4dCIsInN0YXR1c0NvZGUiLCJlbmQiLCJkZWxldGUiLCJ2ZXJpZnlBZG1pbiIsImRlbGV0ZUFsbFNjaGVkdWxlcyIsImdldFNjaGVkdWxlRGV0YWlsc0J5SWQiLCJwYXJhbXMiLCJzY2hlZHVsZUlkIiwidXBkYXRlU2NoZWR1bGVCeUlkIiwiZGVsZXRlU2NoZWR1bGVCeUlkIiwiZ2V0QWxsU2NoZWR1bGVzRm9yQVVzZXIiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxPQUFPLEdBQUdDLE9BQU8sQ0FBQyxTQUFELENBQXZCOztBQUNBLE1BQU1DLFVBQVUsR0FBR0QsT0FBTyxDQUFDLGFBQUQsQ0FBMUI7O0FBRUEsTUFBTUUsSUFBSSxHQUFHRixPQUFPLENBQUMsUUFBRCxDQUFwQjs7QUFDQSxNQUFNO0FBQUVHLEVBQUFBO0FBQUYsSUFBa0JILE9BQU8sQ0FBQyxtQkFBRCxDQUEvQjs7QUFDQSxJQUFJSSxZQUFZLEdBQUdKLE9BQU8sQ0FBQyw0QkFBRCxDQUExQjs7QUFDQSxJQUFJSyxlQUFlLEdBQUdMLE9BQU8sQ0FBQywwQkFBRCxDQUE3Qjs7QUFDQSxNQUFNTSxrQkFBa0IsR0FBR04sT0FBTyxDQUFDLG1DQUFELENBQWxDOztBQUVBLE1BQU1PLGNB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T0FBUCxHQUFpQjlCLGNBQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZXhwcmVzcyA9IHJlcXVpcmUoJ2V4cHJlc3MnKTtcclxuY29uc3QgYm9keVBhcnNlciA9IHJlcXVpcmUoJ2JvZHktcGFyc2VyJyk7XHJcblxyXG5jb25zdCBjb3JzID0gcmVxdWlyZSgnLi9jb3JzJyk7XHJcbmNvbnN0IHsgY2hlY2tTY2hlbWEgfSA9IHJlcXVpcmUoJ2V4cHJlc3MtdmFsaWRhdG9yJyk7XHJcbnZhciBhdXRoZW50aWNhdGUgPSByZXF1aXJlKCcuLi9taWRkbGV3YXJlL2F1dGhlbnRpY2F0ZScpO1xyXG52YXIgdmFsaWRhdGlvblJ1bGVzID0gcmVxdWlyZSgnLi4vbWlkZGxld2FyZS92YWxpZGF0aW9uJyk7XHJcbmNvbnN0IHNjaGVkdWxlQ29udHJvbGxlciA9IHJlcXVpcmUoJy4uL2NvbnRyb2xsZXJzL3NjaGVkdWxlQ29udHJvbGxlcicpXHJcblxyXG5jb25zdCBzY2hlZHVsZVJvdXRlciA9IGV4cHJlc3MuUm91dGVyKCk7XHJcblxyXG5zY2hlZHVsZVJvdXRlci51c2UoYm9keVBhcnNlci5qc29uKCkpO1xyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbi8vIFxyXG4vLyAgICAgICAgICAgICAgU2NoZWR1bGUgUm91dGVzXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG5zY2hlZHVsZVJvdXRlci5yb3V0ZSgnLycpXHJcbiAgICAub3B0aW9ucyhjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcbiAgICAuZ2V0KGNvcnMuY29ycywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsICBzY2hlZHVsZUNvbnRyb2xsZXIuZ2V0QWxsU2NoZWR1bGVzKVxyXG4gICAgLnBvc3QoY29ycy5jb3JzV2l0aE9wdGlvbnMsYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsICBzY2hlZHVsZUNvbnRyb2xsZXIuYWRkU2NoZWR1bGUpXHJcbiAgICAucHV0KGNvcnMuY29yc1dpdGhPcHRpb25zLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeU1vZGVyYXRlciwgKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgcmVzLmVuZCgnUFVUIG9wZXJhdGlvbiBub3Qgc3VwcG9ydGVkIG9uIC9zY2hlZHVsZXMnKTtcclxuICAgIH0pXHJcbiAgICAuZGVsZXRlKGNvcnMuY29yc1dpdGhPcHRpb25zLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeUFkbWluLCBzY2hlZHVsZUNvbnRyb2xsZXIuZGVsZXRlQWxsU2NoZWR1bGVzKTtcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuLy8gXHJcbi8vICAgICAgICAgICAgICBTY2hlZHVsZSBSb3V0ZXMgT24gSURcclxuLy8gXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbnNjaGVkdWxlUm91dGVyLnJvdXRlKCcvOnNjaGVkdWxlSWQnKVxyXG4gICAgLm9wdGlvbnMoY29ycy5jb3JzV2l0aE9wdGlvbnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCAocmVxLCByZXMpID0+IHsgcmVzLnNlbmRTdGF0dXMoMjAwKTsgfSlcclxuICAgIC5nZXQoY29ycy5jb3JzLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgc2NoZWR1bGVDb250cm9sbGVyLmdldFNjaGVkdWxlRGV0YWlsc0J5SWQpXHJcbiAgICAucG9zdChjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgcmVzLmVuZCgnUE9TVCBvcGVyYXRpb24gbm90IHN1cHBvcnRlZCBvbiAvc2NoZWR1bGVzLycgKyByZXEucGFyYW1zLnNjaGVkdWxlSWQpO1xyXG4gICAgfSlcclxuICAgIC5wdXQoY29ycy5jb3JzV2l0aE9wdGlvbnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCBhdXRoZW50aWNhdGUudmVyaWZ5TW9kZXJhdGVyLCBzY2hlZHVsZUNvbnRyb2xsZXIudXBkYXRlU2NoZWR1bGVCeUlkKVxyXG4gICAgLmRlbGV0ZShjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgc2NoZWR1bGVDb250cm9sbGVyLmRlbGV0ZVNjaGVkdWxlQnlJZCk7XHJcblxyXG5zY2hlZHVsZVJvdXRlci5yb3V0ZSgnL3VzZXIvOnVzZXJJZCcpXHJcbiAgICAub3B0aW9ucyhjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIChyZXEsIHJlcykgPT4geyByZXMuc2VuZFN0YXR1cygyMDApOyB9KVxyXG4gICAgLmdldChjb3JzLmNvcnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCAgc2NoZWR1bGVDb250cm9sbGVyLmdldEFsbFNjaGVkdWxlc0ZvckFVc2VyKTtcclxuXHJcbm1vZHVsZS5leHBvcnRzID0gc2NoZWR1bGVSb3V0ZXI7Il19\",\"originalCode\":\"const express = require('express');\\r\\nconst bodyParser = require('body-parser');\\r\\n\\r\\nconst cors = require('./cors');\\r\\nconst { checkSchema } = require('express-validator');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\nvar validationRules = require('../middleware/validation');\\r\\nconst scheduleController = require('../controllers/scheduleController')\\r\\n\\r\\nconst scheduleRouter = express.Router();\\r\\n\\r\\nscheduleRouter.use(bodyParser.json());\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Schedule Routes\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nscheduleRouter.route('/')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, scheduleController.getAllSchedules)\\r\\n .post(cors.corsWithOptions,authenticate.verifyUser, scheduleController.addSchedule)\\r\\n .put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('PUT operation not supported on /schedules');\\r\\n })\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, scheduleController.deleteAllSchedules);\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Schedule Routes On ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nscheduleRouter.route('/:scheduleId')\\r\\n .options(cors.corsWithOptions, authenticate.verifyUser, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, scheduleController.getScheduleDetailsById)\\r\\n .post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('POST operation not supported on /schedules/' + req.params.scheduleId);\\r\\n })\\r\\n .put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, scheduleController.updateScheduleById)\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, scheduleController.deleteScheduleById);\\r\\n\\r\\nscheduleRouter.route('/user/:userId')\\r\\n .options(cors.corsWithOptions, authenticate.verifyUser, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, scheduleController.getAllSchedulesForAUser);\\r\\n\\r\\nmodule.exports = scheduleRouter;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/9b/scheduleRouter_9b57edc7078385d142c957dea9d9e0be.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2541\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\scheduleRouter.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":9621,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":9618,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":802,\"endOffset\":842,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1085,\"endOffset\":1188,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1621,\"endOffset\":1661,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1824,\"endOffset\":1953,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":2288,\"endOffset\":2328,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const Schedules = require('../models/schedules'); // **********************************************************************************\\n// \\n// Schedule Operations \\n// \\n// **********************************************************************************\\n\\n\\nconst getAllSchedules = (req, res, next) => {\\n Schedules.find(req.query).populate(\\\"place\\\").populate(\\\"user\\\").then(schedules => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n schedules: schedules\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst getAllSchedulesForAUser = (req, res, next) => {\\n var query = {\\n \\\"user\\\": String(req.params.userId)\\n };\\n Schedules.find(query).populate(\\\"place\\\").then(schedules => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n schedules: schedules\\n });\\n }, err => {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n const msg = err._message;\\n res.json({\\n success: false,\\n message: msg\\n });\\n }).catch(err => {\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: \\\"Failed to get data\\\"\\n });\\n });\\n};\\n\\nconst addSchedule = (req, res, next) => {\\n var schedule = {\\n user: req.body.user,\\n place: req.body.place,\\n date: req.body.date,\\n state: \\\"new\\\",\\n travellingMethod: req.body.travellingMethod\\n };\\n Schedules.create(schedule).then(schedule => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n schedule: schedule\\n });\\n }, err => {\\n res.statusCode = 403;\\n res.setHeader('Content-Type', 'application/json');\\n const msg = err._message;\\n res.json({\\n success: false,\\n message: msg\\n });\\n }).catch(err => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: \\\"Failed to add a schedule\\\"\\n });\\n });\\n};\\n\\nconst deleteAllSchedules = (req, res, next) => {\\n Schedules.remove({}).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json(resp);\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nexports.getAllSchedules = getAllSchedules;\\nexports.addSchedule = addSchedule;\\nexports.deleteAllSchedules = deleteAllSchedules;\\nexports.getAllSchedulesForAUser = getAllSchedulesForAUser; // **********************************************************************************\\n// \\n// Schedule Operations Specified by ID\\n// \\n// **********************************************************************************\\n\\nconst getScheduleDetailsById = (req, res, next) => {\\n Schedules.findById(req.params.scheduleId).then(schedule => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n schedule: schedule\\n });\\n }, err => {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: \\\"Could not find the place\\\"\\n });\\n }).catch(err => next(err));\\n};\\n\\nconst updateScheduleById = (req, res, next) => {\\n Schedules.findByIdAndUpdate(req.params.scheduleId, {\\n $set: req.body\\n }, {\\n new: true\\n }).then(schedule => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n schedule: schedule\\n });\\n }, err => next(err)).catch(err => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: \\\"Update failed\\\"\\n });\\n });\\n};\\n\\nconst deleteScheduleById = (req, res, next) => {\\n Schedules.findByIdAndRemove(req.params.scheduleId).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n response: resp\\n });\\n }, err => next(err)).catch(err => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: \\\"Delete failed\\\"\\n });\\n });\\n};\\n\\nexports.getScheduleDetailsById = getScheduleDetailsById;\\nexports.updateScheduleById = updateScheduleById;\\nexports.deleteScheduleById = deleteScheduleById; // **********************************************************************************\\n// \\n// Schedule Operations Specified by UserID\\n// \\n// **********************************************************************************\\n// const getScheduleDetailsByUserId = (req, res, next) => {\\n// Schedules.findById(req.params.scheduleId)\\n// .then((schedule) => {\\n// res.statusCode = 200;\\n// res.setHeader('Content-Type', 'application/json');\\n// res.json(schedule);\\n// }, (err) => next(err))\\n// .catch((err) => next(err));\\n// }\\n// const updateScheduleByUserId = (req, res, next) => {\\n// Schedules.findByIdAndUpdate(req.params.scheduleId, {\\n// $set: req.body\\n// }, { new: true })\\n// .then((schedule) => {\\n// res.statusCode = 200;\\n// res.setHeader('Content-Type', 'application/json');\\n// res.json(schedule);\\n// }, (err) => next(err))\\n// .catch((err) => next(err));\\n// }\\n// const deleteScheduleByUserId = (req, res, next) => {\\n// Schedules.findByIdAndRemove(req.params.scheduleId)\\n// .then((resp) => {\\n// res.statusCode = 200;\\n// res.setHeader('Content-Type', 'application/json');\\n// res.json(resp);\\n// }, (err) => next(err))\\n// .catch((err) => next(err));\\n// }\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNjaGVkdWxlQ29udHJvbGxlci5qcyJdLCJuYW1lcyI6WyJTY2hlZHVsZXMiLCJyZXF1aXJlIiwiZ2V0QWxsU2NoZWR1bGVzIiwicmVxIiwicmVzIiwibmV4dCIsImZpbmQiLCJxdWVyeSIsInBvcHVsYXRlIiwidGhlbiIsInNjaGVkdWxlcyIsInN0YXR1c0NvZGUiLCJzZXRIZWFkZXIiLCJqc29uIiwic3VjY2VzcyIsImVyciIsImNhdGNoIiwiZ2V0QWxsU2NoZWR1bGVzRm9yQVVzZXIiLCJTdHJpbmciLCJwYXJhbXMiLCJ1c2VySWQiLCJtc2ciLCJfbWVzc2FnZSIsIm1lc3NhZ2UiLCJhZGRTY2hlZHVsZSIsInNjaGVkdWxlIiwidXNlciIsImJvZHkiLCJwbGFjZSIsImRhdGUiLCJzdGF0ZSIsInRyYXZlbGxpbmdNZXRob2QiLCJjcmVhdGUiLCJkZWxldGVBbGxTY2hlZHVsZXMiLCJyZW1vdmUiLCJyZXNwIiwiZXhwb3J0cyIsImdldFNjaGVkdWxlRGV0YWlsc0J5SWQiLCJmaW5kQnlJZCIsInNjaGVkdWxlSWQiLCJ1cGRhdGVTY2hlZHVsZUJ5SWQiLCJmaW5kQnlJZEFuZFVwZGF0ZSIsIiRzZXQiLCJuZXciLCJkZWxldGVTY2hlZHVsZUJ5SWQiLCJmaW5kQnlJZEFuZFJlbW92ZSIsInJlc3BvbnNlIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxTQUFTLEdBQUdDLE9BQU8sQ0FBQyxxQkFBRCxDQUF6QixDLENBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBRUEsTUFBTUMsZUFBZSxHQUFHLENBQUNDLEdBQUQsRUFBTUMsR0FBTixFQUFXQyxJQUFYLEtBQW9CO0FBQ3hDTCxFQUFBQSxTQUFTLENBQUNNLElBQVYsQ0FBZUgsR0FBRyxDQUFDSSxLQUFuQixFQUEwQkMsUUFBMUIsQ0FBbUMsT0FBbkMsRUFBNENBLFFBQTVDLENBQXFELE1BQXJELEVBQ0tDLElBREwsQ0FDV0MsU0FBRCxJQUFlO0FBQ2pCTixJQUFBQSxHQUFHLENBQUNPLFVBQUosR0FBaUIs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LE1BQUFBLFFBQVEsRUFBQ1g7QUFBMUIsS0FBVDtBQUNILEdBTEwsRUFLUXBCLEdBQUQsSUFBU1YsSUFBSSxDQUFDVSxHQUFELENBTHBCLEVBTUtDLEtBTkwsQ0FNWUQsR0FBRCxJQUFTO0FBQ1pYLElBQUFBLEdBQUcsQ0FBQ08sVUFBSixHQUFpQixHQUFqQjtBQUNBUCxJQUFBQSxHQUFHLENBQUNRLFNBQUosQ0FBYyxjQUFkLEVBQThCLGtCQUE5QjtBQUNBUixJQUFBQSxHQUFHLENBQUNTLElBQUosQ0FBUztBQUFFQyxNQUFBQSxPQUFPLEVBQUUsS0FBWDtBQUFrQlMsTUFBQUEsT0FBTyxFQUFFO0FBQTNCLEtBQVQ7QUFDSCxHQVZMO0FBV0gsQ0FaRDs7QUFjQWEsT0FBTyxDQUFDQyxzQkFBUixHQUFpQ0Esc0JBQWpDO0FBQ0FELE9BQU8sQ0FBQ0ksa0JBQVIsR0FBNkJBLGtCQUE3QjtBQUNBSixPQUFPLENBQUNRLGtCQUFSLEdBQTZCQSxrQkFBN0IsQyxDQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgU2NoZWR1bGVzID0gcmVxdWlyZSgnLi4vbW9kZWxzL3NjaGVkdWxlcycpO1xyXG5cclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyBcclxuLy8gICAgICAgICAgICAgIFNjaGVkdWxlIE9wZXJhdGlvbnMgXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG5jb25zdCBnZXRBbGxTY2hlZHVsZXMgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIFNjaGVkdWxlcy5maW5kKHJlcS5xdWVyeSkucG9wdWxhdGUoXCJwbGFjZVwiKS5wb3B1bGF0ZShcInVzZXJcIilcclxuICAgICAgICAudGhlbigoc2NoZWR1bGVzKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHNjaGVkdWxlczpzY2hlZHVsZXMgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpO1xyXG59XHJcblxyXG5jb25zdCBnZXRBbGxTY2hlZHVsZXNGb3JBVXNlciA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgdmFyIHF1ZXJ5ID0geyBcInVzZXJcIjogU3RyaW5nKHJlcS5wYXJhbXMudXNlcklkKSB9O1xyXG4gICAgU2NoZWR1bGVzLmZpbmQocXVlcnkpLnBvcHVsYXRlKFwicGxhY2VcIilcclxuICAgICAgICAudGhlbigoc2NoZWR1bGVzKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHNjaGVkdWxlczpzY2hlZHVsZXMgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gIHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDQ7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIGNvbnN0IG1zZyA9IGVyci5fbWVzc2FnZTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogbXNnIH0pO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA1MDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogZmFsc2UsIG1lc3NhZ2U6IFwiRmFpbGVkIHRvIGdldCBkYXRhXCIgfSk7XHJcbiAgICAgICAgfSk7XHJcbn1cclxuXHJcbmNvbnN0IGFkZFNjaGVkdWxlID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICB2YXIgc2NoZWR1bGUgPSB7XHJcbiAgICAgICAgdXNlcjogcmVxLmJvZHkudXNlcixcclxuICAgICAgICBwbGFjZTogcmVxLmJvZHkucGxhY2UsXHJcbiAgICAgICAgZGF0ZTogcmVxLmJvZHkuZGF0ZSxcclxuICAgICAgICBzdGF0ZTogXCJuZXdcIixcclxuICAgICAgICB0cmF2ZWxsaW5nTWV0aG9kOiByZXEuYm9keS50cmF2ZWxsaW5nTWV0aG9kXHJcbiAgICB9XHJcbiAgICBTY2hlZHVsZXMuY3JlYXRlKHNjaGVkdWxlKVxyXG4gICAgICAgIC50aGVuKChzY2hlZHVsZSkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCBzY2hlZHVsZTpzY2hlZHVsZSB9KTtcclxuICAgICAgICB9LCAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNDAzO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICBjb25zdCBtc2cgPSBlcnIuX21lc3NhZ2U7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogZmFsc2UsIG1lc3NhZ2U6IG1zZyB9KTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IGZhbHNlLCBtZXNzYWdlOiBcIkZhaWxlZCB0byBhZGQgYSBzY2hlZHVsZVwiIH0pO1xyXG4gICAgICAgIH0pO1xyXG59XHJcblxyXG5jb25zdCBkZWxldGVBbGxTY2hlZHVsZXMgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIFNjaGVkdWxlcy5yZW1vdmUoe30pXHJcbiAgICAgICAgLnRoZW4oKHJlc3ApID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHJlc3ApO1xyXG4gICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuZXhwb3J0cy5nZXRBbGxTY2hlZHVsZXMgPSBnZXRBbGxTY2hlZHVsZXM7XHJcbmV4cG9ydHMuYWRkU2NoZWR1bGUgPSBhZGRTY2hlZHVsZTtcclxuZXhwb3J0cy5kZWxldGVBbGxTY2hlZHVsZXMgPSBkZWxldGVBbGxTY2hlZHVsZXM7XHJcbmV4cG9ydHMuZ2V0QWxsU2NoZWR1bGVzRm9yQVVzZXIgPSBnZXRBbGxTY2hlZHVsZXNGb3JBVXNlcjtcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuLy8gXHJcbi8vICAgICAgICAgICAgICBTY2hlZHVsZSBPcGVyYXRpb25zIFNwZWNpZmllZCBieSBJRFxyXG4vLyBcclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuY29uc3QgZ2V0U2NoZWR1bGVEZXRhaWxzQnlJZCA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgU2NoZWR1bGVzLmZpbmRCeUlkKHJlcS5wYXJhbXMuc2NoZWR1bGVJZClcclxuICAgICAgICAudGhlbigoc2NoZWR1bGUpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgc2NoZWR1bGU6c2NoZWR1bGUgfSk7XHJcbiAgICAgICAgfSwgIChlcnIpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDQ7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogZmFsc2UsIG1lc3NhZ2U6IFwiQ291bGQgbm90IGZpbmQgdGhlIHBsYWNlXCIgfSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuY29uc3QgdXBkYXRlU2NoZWR1bGVCeUlkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICBTY2hlZHVsZXMuZmluZEJ5SWRBbmRVcGRhdGUocmVxLnBhcmFtcy5zY2hlZHVsZUlkLCB7XHJcbiAgICAgICAgJHNldDogcmVxLmJvZHlcclxuICAgIH0sIHsgbmV3OiB0cnVlIH0pXHJcbiAgICAgICAgLnRoZW4oKHNjaGVkdWxlKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHNjaGVkdWxlOnNjaGVkdWxlIH0pO1xyXG4gICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogXCJVcGRhdGUgZmFpbGVkXCIgfSk7XHJcbiAgICAgICAgfSk7XHJcbn1cclxuXHJcbmNvbnN0IGRlbGV0ZVNjaGVkdWxlQnlJZCA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgU2NoZWR1bGVzLmZpbmRCeUlkQW5kUmVtb3ZlKHJlcS5wYXJhbXMuc2NoZWR1bGVJZClcclxuICAgICAgICAudGhlbigocmVzcCkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCByZXNwb25zZTpyZXNwIH0pO1xyXG4gICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogXCJEZWxldGUgZmFpbGVkXCIgfSk7XHJcbiAgICAgICAgfSk7XHJcbn1cclxuXHJcbmV4cG9ydHMuZ2V0U2NoZWR1bGVEZXRhaWxzQnlJZCA9IGdldFNjaGVkdWxlRGV0YWlsc0J5SWQ7XHJcbmV4cG9ydHMudXBkYXRlU2NoZWR1bGVCeUlkID0gdXBkYXRlU2NoZWR1bGVCeUlkO1xyXG5leHBvcnRzLmRlbGV0ZVNjaGVkdWxlQnlJZCA9IGRlbGV0ZVNjaGVkdWxlQnlJZDtcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuLy8gXHJcbi8vICAgICAgICAgICAgICBTY2hlZHVsZSBPcGVyYXRpb25zIFNwZWNpZmllZCBieSBVc2VySURcclxuLy8gXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbi8vIGNvbnN0IGdldFNjaGVkdWxlRGV0YWlsc0J5VXNlcklkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbi8vICAgICBTY2hlZHVsZXMuZmluZEJ5SWQocmVxLnBhcmFtcy5zY2hlZHVsZUlkKVxyXG4vLyAgICAgICAgIC50aGVuKChzY2hlZHVsZSkgPT4ge1xyXG4vLyAgICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuLy8gICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuLy8gICAgICAgICAgICAgcmVzLmpzb24oc2NoZWR1bGUpO1xyXG4vLyAgICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuLy8gICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxuLy8gfVxyXG5cclxuLy8gY29uc3QgdXBkYXRlU2NoZWR1bGVCeVVzZXJJZCA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4vLyAgICAgU2NoZWR1bGVzLmZpbmRCeUlkQW5kVXBkYXRlKHJlcS5wYXJhbXMuc2NoZWR1bGVJZCwge1xyXG4vLyAgICAgICAgICRzZXQ6IHJlcS5ib2R5XHJcbi8vICAgICB9LCB7IG5ldzogdHJ1ZSB9KVxyXG4vLyAgICAgICAgIC50aGVuKChzY2hlZHVsZSkgPT4ge1xyXG4vLyAgICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuLy8gICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuLy8gICAgICAgICAgICAgcmVzLmpzb24oc2NoZWR1bGUpO1xyXG4vLyAgICAgICAgIH0sIChlcnIpID0+IG5leHQoZXJyKSlcclxuLy8gICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxuLy8gfVxyXG5cclxuLy8gY29uc3QgZGVsZXRlU2NoZWR1bGVCeVVzZXJJZCA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4vLyAgICAgU2NoZWR1bGVzLmZpbmRCeUlkQW5kUmVtb3ZlKHJlcS5wYXJhbXMuc2NoZWR1bGVJZClcclxuLy8gICAgICAgICAudGhlbigocmVzcCkgPT4ge1xyXG4vLyAgICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuLy8gICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuLy8gICAgICAgICAgICAgcmVzLmpzb24ocmVzcCk7XHJcbi8vICAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4vLyAgICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpO1xyXG4vLyB9Il19\",\"originalCode\":\"const Schedules = require('../models/schedules');\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Schedule Operations \\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nconst getAllSchedules = (req, res, next) => {\\r\\n Schedules.find(req.query).populate(\\\"place\\\").populate(\\\"user\\\")\\r\\n .then((schedules) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, schedules:schedules });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst getAllSchedulesForAUser = (req, res, next) => {\\r\\n var query = { \\\"user\\\": String(req.params.userId) };\\r\\n Schedules.find(query).populate(\\\"place\\\")\\r\\n .then((schedules) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, schedules:schedules });\\r\\n }, (err) => {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n const msg = err._message;\\r\\n res.json({ success: false, message: msg });\\r\\n })\\r\\n .catch((err) => {\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: \\\"Failed to get data\\\" });\\r\\n });\\r\\n}\\r\\n\\r\\nconst addSchedule = (req, res, next) => {\\r\\n var schedule = {\\r\\n user: req.body.user,\\r\\n place: req.body.place,\\r\\n date: req.body.date,\\r\\n state: \\\"new\\\",\\r\\n travellingMethod: req.body.travellingMethod\\r\\n }\\r\\n Schedules.create(schedule)\\r\\n .then((schedule) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, schedule:schedule });\\r\\n }, (err) => {\\r\\n res.statusCode = 403;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n const msg = err._message;\\r\\n res.json({ success: false, message: msg });\\r\\n })\\r\\n .catch((err) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: \\\"Failed to add a schedule\\\" });\\r\\n });\\r\\n}\\r\\n\\r\\nconst deleteAllSchedules = (req, res, next) => {\\r\\n Schedules.remove({})\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json(resp);\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nexports.getAllSchedules = getAllSchedules;\\r\\nexports.addSchedule = addSchedule;\\r\\nexports.deleteAllSchedules = deleteAllSchedules;\\r\\nexports.getAllSchedulesForAUser = getAllSchedulesForAUser;\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Schedule Operations Specified by ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nconst getScheduleDetailsById = (req, res, next) => {\\r\\n Schedules.findById(req.params.scheduleId)\\r\\n .then((schedule) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, schedule:schedule });\\r\\n }, (err) => {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: \\\"Could not find the place\\\" });\\r\\n })\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst updateScheduleById = (req, res, next) => {\\r\\n Schedules.findByIdAndUpdate(req.params.scheduleId, {\\r\\n $set: req.body\\r\\n }, { new: true })\\r\\n .then((schedule) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, schedule:schedule });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: \\\"Update failed\\\" });\\r\\n });\\r\\n}\\r\\n\\r\\nconst deleteScheduleById = (req, res, next) => {\\r\\n Schedules.findByIdAndRemove(req.params.scheduleId)\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, response:resp });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: \\\"Delete failed\\\" });\\r\\n });\\r\\n}\\r\\n\\r\\nexports.getScheduleDetailsById = getScheduleDetailsById;\\r\\nexports.updateScheduleById = updateScheduleById;\\r\\nexports.deleteScheduleById = deleteScheduleById;\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Schedule Operations Specified by UserID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\n// const getScheduleDetailsByUserId = (req, res, next) => {\\r\\n// Schedules.findById(req.params.scheduleId)\\r\\n// .then((schedule) => {\\r\\n// res.statusCode = 200;\\r\\n// res.setHeader('Content-Type', 'application/json');\\r\\n// res.json(schedule);\\r\\n// }, (err) => next(err))\\r\\n// .catch((err) => next(err));\\r\\n// }\\r\\n\\r\\n// const updateScheduleByUserId = (req, res, next) => {\\r\\n// Schedules.findByIdAndUpdate(req.params.scheduleId, {\\r\\n// $set: req.body\\r\\n// }, { new: true })\\r\\n// .then((schedule) => {\\r\\n// res.statusCode = 200;\\r\\n// res.setHeader('Content-Type', 'application/json');\\r\\n// res.json(schedule);\\r\\n// }, (err) => next(err))\\r\\n// .catch((err) => next(err));\\r\\n// }\\r\\n\\r\\n// const deleteScheduleByUserId = (req, res, next) => {\\r\\n// Schedules.findByIdAndRemove(req.params.scheduleId)\\r\\n// .then((resp) => {\\r\\n// res.statusCode = 200;\\r\\n// res.setHeader('Content-Type', 'application/json');\\r\\n// res.json(resp);\\r\\n// }, (err) => next(err))\\r\\n// .catch((err) => next(err));\\r\\n// }\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/df/scheduleController_df2aee56329a17301dcb5de3e55455e9.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2542\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\scheduleController.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":22878,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":22875,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"getAllSchedules\",\"ranges\":[{\"startOffset\":382,\"endOffset\":688,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getAllSchedulesForAUser\",\"ranges\":[{\"startOffset\":723,\"endOffset\":1396,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"addSchedule\",\"ranges\":[{\"startOffset\":1419,\"endOffset\":2190,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"deleteAllSchedules\",\"ranges\":[{\"startOffset\":2220,\"endOffset\":2430,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getScheduleDetailsById\",\"ranges\":[{\"startOffset\":2883,\"endOffset\":3331,\"count\":2}],\"isBlockCoverage\":true},{\"functionName\":\"Schedules.findById.then.res.statusCode\",\"ranges\":[{\"startOffset\":2954,\"endOffset\":3121,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":3123,\"endOffset\":3303,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":3311,\"endOffset\":3327,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"updateScheduleById\",\"ranges\":[{\"startOffset\":3361,\"endOffset\":3854,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":3488,\"endOffset\":3655,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":3657,\"endOffset\":3673,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":3681,\"endOffset\":3850,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"deleteScheduleById\",\"ranges\":[{\"startOffset\":3884,\"endOffset\":4322,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":3964,\"endOffset\":4123,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":4125,\"endOffset\":4141,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":4149,\"endOffset\":4318,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const mongoose = require('mongoose');\\n\\nconst Schema = mongoose.Schema;\\n\\nrequire('mongoose-currency').loadType(mongoose);\\n\\nconst Currency = mongoose.Types.Currency;\\nconst scheduleSchema = new Schema({\\n user: {\\n type: mongoose.Schema.Types.ObjectId,\\n ref: \\\"User\\\"\\n },\\n place: {\\n type: mongoose.Schema.Types.ObjectId,\\n ref: \\\"Place\\\"\\n },\\n date: {\\n type: Date,\\n required: true\\n },\\n fair: {\\n type: Currency,\\n min: 0\\n },\\n state: {\\n type: String,\\n default: \\\"new\\\",\\n enum: [\\\"new\\\", \\\"not-completed\\\", \\\"canceled\\\", \\\"completed\\\"]\\n },\\n travellingMethod: {\\n type: String,\\n required: true,\\n enum: ['Bus', 'Car', 'Train', 'Threewheeler', 'Foot']\\n }\\n}, {\\n timestamps: true\\n});\\nvar Schedules = mongoose.model('Schedule', scheduleSchema);\\nmodule.exports = Schedules;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNjaGVkdWxlcy5qcyJdLCJuYW1lcyI6WyJtb25nb29zZSIsInJlcXVpcmUiLCJTY2hlbWEiLCJsb2FkVHlwZSIsIkN1cnJlbmN5IiwiVHlwZXMiLCJzY2hlZHVsZVNjaGVtYSIsInVzZXIiLCJ0eXBlIiwiT2JqZWN0SWQiLCJyZWYiLCJwbGFjZSIsImRhdGUiLCJEYXRlIiwicmVxdWlyZWQiLCJmYWlyIiwibWluIiwic3RhdGUiLCJTdHJpbmciLCJkZWZhdWx0IiwiZW51bSIsInRyYXZlbGxpbmdNZXRob2QiLCJ0aW1lc3RhbXBzIiwiU2NoZWR1bGVzIiwibW9kZWwiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxRQUFRLEdBQUdDLE9BQU8sQ0FBQyxVQUFELENBQXhCOztBQUNBLE1BQU1DLE1BQU0sR0FBR0YsUUFBUSxDQUFDRSxNQUF4Qjs7QUFDQUQsT0FBTyxDQUFDLG1CQUFELENBQVAsQ0FBNkJFLFFBQTdCLENBQXNDSCxRQUF0Qzs7QUFDQSxNQUFNSSxRQUFRLEdBQUdKLFFBQVEsQ0FBQ0ssS0FBVCxDQUFlRCxRQUFoQztBQUNBLE1BQU1FLGNBQWMsR0FBRyxJQUFJSixNQUFKLENBQVc7QUFDOUJLLEVBQUFBLElBQUksRUFBRTtBQUNGQyxJQUFBQSxJQUFJLEVBQUVSLFFBQVEsQ0FBQ0UsTUFBVCxDQUFnQkcsS0FBaEIsQ0FBc0JJLFFBRDFCO0FBRUZDLElBQUFBLEdBQUcsRUFBRTtBQUZILEdBRHdCO0FBSzlCQyxFQUFBQSxLQUFLLEVBQUU7QUFDSEgsSUFBQUEsSUFBSSxFQUFFUixRQUFRLENBQUNFLE1BQVQsQ0FBZ0JHLEtBQWhCLENBQXNCSSxRQUR6QjtBQUVIQyxJQUFBQSxHQUFHLEVBQUU7QUFGRixHQUx1QjtBQVM5QkUsRUFBQUEsSUFBSSxFQUFFO0FBQ0ZKLElBQUFBLElBQUksRUFBRUssSUFESjtBQUVGQyxJQUFBQSxRQUFRLEVBQUU7QUFGUixHQVR3QjtBQWE5QkMsRUFBQUEsSUFBSSxFQUFFO0FBQ0ZQLElBQUFBLElBQUksRUFBRUosUUFESjtBQUVGWSxJQUFBQSxHQUFHLEVBQUU7QUFGSCxHQWJ3QjtBQWlCOUJDLEVBQUFBLEtBQUssRUFBRTtBQUNIVCxJQUFBQSxJQUFJLEVBQUVVLE1BREg7QUFFSEMsSUFBQUEsT0FBTyxFQUFFLEtBRk47QUFHSEMsSUFBQUEsSUFBSSxFQUFFLENBQUMsS0FBRCxFQUFPLGVBQVAsRUFBd0IsVUFBeEIsRUFBb0MsV0FBcEM7QUFISCxHQWpCdUI7QUFzQjlCQyxFQUFBQSxnQkFBZ0IsRUFBRTtBQUNkYixJQUFBQSxJQUFJLEVBQUVVLE1BRFE7QUFFZEosSUFBQUEsUUFBUSxFQUFFLElBRkk7QUFHZE0sSUFBQUEsSUFBSSxFQUFFLENBQUMsS0FBRCxFQUFRLEtBQVIsRUFBZSxPQUFmLEVBQXdCLGNBQXhCLEVBQXdDLE1BQXhDO0FBSFE7QUF0QlksQ0FBWCxFQTJCcEI7QUFDQ0UsRUFBQUEsVUFBVSxFQUFFO0FBRGIsQ0EzQm9CLENBQXZCO0FBK0JBLElBQUlDLFNBQVMsR0FBR3ZCLFFBQVEsQ0FBQ3dCLEtBQVQsQ0FBZSxVQUFmLEVBQTJCbEIsY0FBM0IsQ0FBaEI7QUFFQW1CLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQkgsU0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBtb25nb29zZSA9IHJlcXVpcmUoJ21vbmdvb3NlJyk7XHJcbmNvbnN0IFNjaGVtYSA9IG1vbmdvb3NlLlNjaGVtYTtcclxucmVxdWlyZSgnbW9uZ29vc2UtY3VycmVuY3knKS5sb2FkVHlwZShtb25nb29zZSk7XHJcbmNvbnN0IEN1cnJlbmN5ID0gbW9uZ29vc2UuVHlwZXMuQ3VycmVuY3k7XHJcbmNvbnN0IHNjaGVkdWxlU2NoZW1hID0gbmV3IFNjaGVtYSh7XHJcbiAgICB1c2VyOiB7XHJcbiAgICAgICAgdHlwZTogbW9uZ29vc2UuU2NoZW1hLlR5cGVzLk9iamVjdElkLFxyXG4gICAgICAgIHJlZjogXCJVc2VyXCJcclxuICAgIH0sXHJcbiAgICBwbGFjZToge1xyXG4gICAgICAgIHR5cGU6IG1vbmdvb3NlLlNjaGVtYS5UeXBlcy5PYmplY3RJZCxcclxuICAgICAgICByZWY6IFwiUGxhY2VcIlxyXG4gICAgfSxcclxuICAgIGRhdGU6IHtcclxuICAgICAgICB0eXBlOiBEYXRlLFxyXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlXHJcbiAgICB9LFxyXG4gICAgZmFpcjoge1xyXG4gICAgICAgIHR5cGU6IEN1cnJlbmN5LFxyXG4gICAgICAgIG1pbjogMFxyXG4gICAgfSxcclxuICAgIHN0YXRlOiB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICAgIGRlZmF1bHQ6IFwibmV3XCIsXHJcbiAgICAgICAgZW51bTogW1wibmV3XCIsXCJub3QtY29tcGxldGVkXCIsIFwiY2FuY2VsZWRcIiwgXCJjb21wbGV0ZWRcIl1cclxuICAgIH0sXHJcbiAgICB0cmF2ZWxsaW5nTWV0aG9kOiB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxyXG4gICAgICAgIGVudW06IFsnQnVzJywgJ0NhcicsICdUcmFpbicsICdUaHJlZXdoZWVsZXInLCAnRm9vdCddXHJcbiAgICB9XHJcbn0sIHtcclxuICAgIHRpbWVzdGFtcHM6IHRydWVcclxufSk7XHJcblxyXG52YXIgU2NoZWR1bGVzID0gbW9uZ29vc2UubW9kZWwoJ1NjaGVkdWxlJywgc2NoZWR1bGVTY2hlbWEpO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBTY2hlZHVsZXM7Il19\",\"originalCode\":\"const mongoose = require('mongoose');\\r\\nconst Schema = mongoose.Schema;\\r\\nrequire('mongoose-currency').loadType(mongoose);\\r\\nconst Currency = mongoose.Types.Currency;\\r\\nconst scheduleSchema = new Schema({\\r\\n user: {\\r\\n type: mongoose.Schema.Types.ObjectId,\\r\\n ref: \\\"User\\\"\\r\\n },\\r\\n place: {\\r\\n type: mongoose.Schema.Types.ObjectId,\\r\\n ref: \\\"Place\\\"\\r\\n },\\r\\n date: {\\r\\n type: Date,\\r\\n required: true\\r\\n },\\r\\n fair: {\\r\\n type: Currency,\\r\\n min: 0\\r\\n },\\r\\n state: {\\r\\n type: String,\\r\\n default: \\\"new\\\",\\r\\n enum: [\\\"new\\\",\\\"not-completed\\\", \\\"canceled\\\", \\\"completed\\\"]\\r\\n },\\r\\n travellingMethod: {\\r\\n type: String,\\r\\n required: true,\\r\\n enum: ['Bus', 'Car', 'Train', 'Threewheeler', 'Foot']\\r\\n }\\r\\n}, {\\r\\n timestamps: true\\r\\n});\\r\\n\\r\\nvar Schedules = mongoose.model('Schedule', scheduleSchema);\\r\\n\\r\\nmodule.exports = Schedules;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/e2/schedules_e2f8e79bc28961f4db3736c92d490e47.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2543\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\models\\\\schedules.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":4238,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":4235,\"count\":1}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const express = require('express');\\n\\nconst bodyParser = require('body-parser');\\n\\nconst cors = require('./cors');\\n\\nconst {\\n checkSchema\\n} = require('express-validator');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nvar validationRules = require('../middleware/validation');\\n\\nconst touristController = require('../controllers/touristController');\\n\\nconst touristRouter = express.Router();\\ntouristRouter.use(bodyParser.json()); // **********************************************************************************\\n// \\n// Tourist Routes\\n// \\n// **********************************************************************************\\n\\ntouristRouter.route('/').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, touristController.getAllTourists).post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, touristController.addTourist).put(cors.corsWithOptions, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('PUT operation not supported on /tourists');\\n}).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, touristController.deleteAllTourists);\\ntouristRouter.route('/search').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).post(cors.corsWithOptions, authenticate.verifyUser, touristController.getAllTouristsByName); // **********************************************************************************\\n// \\n// Tourist Routes Specified by ID\\n// \\n// **********************************************************************************\\n\\ntouristRouter.route('/:touristId').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, touristController.getTouristDetailsById).post(cors.corsWithOptions, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('POST operation not supported on /tourists/' + req.params.touristId);\\n}).put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, touristController.updateTouristDetailsById).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, touristController.deleteATouristById);\\nmodule.exports = touristRouter;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRvdXJpc3RSb3V0ZXIuanMiXSwibmFtZXMiOlsiZXhwcmVzcyIsInJlcXVpcmUiLCJib2R5UGFyc2VyIiwiY29ycyIsImNoZWNrU2NoZW1hIiwiYXV0aGVudGljYXRlIiwidmFsaWRhdGlvblJ1bGVzIiwidG91cmlzdENvbnRyb2xsZXIiLCJ0b3VyaXN0Um91dGVyIiwiUm91dGVyIiwidXNlIiwianNvbiIsInJvdXRlIiwib3B0aW9ucyIsImNvcnNXaXRoT3B0aW9ucyIsInJlcSIsInJlcyIsInNlbmRTdGF0dXMiLCJnZXQiLCJ2ZXJpZnlVc2VyIiwiZ2V0QWxsVG91cmlzdHMiLCJwb3N0IiwidmVyaWZ5TW9kZXJhdGVyIiwiYWRkVG91cmlzdCIsInB1dCIsIm5leHQiLCJzdGF0dXNDb2RlIiwiZW5kIiwiZGVsZXRlIiwidmVyaWZ5QWRtaW4iLCJkZWxldGVBbGxUb3VyaXN0cyIsImdldEFsbFRvdXJpc3RzQnlOYW1lIiwiZ2V0VG91cmlzdERldGFpbHNCeUlkIiwicGFyYW1zIiwidG91cmlzdElkIiwidXBkYXRlVG91cmlzdERldGFpbHNCeUlkIiwiZGVsZXRlQVRvdXJpc3RCeUlkIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsT0FBTyxHQUFHQyxPQUFPLENBQUMsU0FBRCxDQUF2Qjs7QUFDQSxNQUFNQyxVQUFVLEdBQUdELE9BQU8sQ0FBQyxhQUFELENBQTFCOztBQUVBLE1BQU1FLElBQUksR0FBR0YsT0FBTyxDQUFDLFFBQUQsQ0FBcEI7O0FBQ0EsTUFBTTtBQUFFRyxFQUFBQTtBQUFGLElBQWtCSCxPQUFPLENBQUMsbUJBQUQsQ0FBL0I7O0FBQ0EsSUFBSUksWUFBWSxHQUFHSixPQUFPLENBQUMsNEJBQUQsQ0FBMUI7O0FBQ0EsSUFBSUssZUFBZSxHQUFHTCxPQUFPLENBQUMsMEJBQUQsQ0FBN0I7O0FBQ0EsTUFBTU0saUJBQWlCLEdBQUdOLE9BQU8sQ0FBQyxrQ0FBRCxDQUFqQzs7QUFFQSxNQUFNTyxhQUFhLEdBQUdSLE9BQU8sQ0FBQ1MsTUFBUixFQUF0QjtBQUVBRCxhQUFhLENBQUNFLEdBQWQsQ0FBa0JSLFVBQVUsQ0FBQ1MsSUFBWCxFQUFsQixFLENBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQUgsYUFBYSxDQUFDSSxLQUFkLENBQW9CLEdBQXBCLEVBQ0tDLE9BREwsQ0FDYVYsSUFBSSxDQUFDVyxlQURsQixFQUNtQyxDQUFDQyxHQUFELEVBQU1DLEdBQU4sS0FBYztBQUFFQSxFQUFBQSxHQUFHLENBQUNDLFVBQUosQ0FBZSxHQUFmO0FBQXNCLENBRHpFLEVBRUtDLEdBRkwsQ0FFU2YsSUFBSSxDQUFDQSxJQUZkLEVBRXFCRSxZQUFZLENBQUNjLFVBRmxDLEVBRWdEWixpQkFBaUIsQ0FBQ2EsY0FGbEUsRUFHS0MsSUFITCxDQUdVbEIsSUFBSSxDQUFDVyxlQUhmLEVBR2lDVCxZQUFZLENBQUNjLFVBSDlDLEVBRzBEZCxZQUFZLENBQUNpQixlQUh2RSxFQUd3RmYsaUJBQWlCLENBQUNnQixVQUgxRyxFQUlLQyxHQUpMLENBSVNyQixJQUFJLENBQUNXLGVBSmQsRUFJK0IsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEVBQVdTLElBQVgsS0FBb0I7QUFDM0NULEVBQUFBLEdBQUcsQ0FBQ1UsVUFBSixHQUFpQixHQUFqQjtBQUNBVixFQUFBQSxHQUFHLENBQUNXLEdBQUosQ0FBUSwwQ0FBUjtBQUNILENBUEwsRUFRS0MsTUFSTCxDQVFZekIsSUFBSSxDQUFDVyxlQVJqQixFQVFrQ1QsWUFBWSxDQUFDYyxVQVIvQyxFQVEyRGQsWUFBWSxDQUFDd0IsV0FSeEUsRUFRc0Z0QixpQkFBaUIsQ0FBQ3VCLGlCQVJ4RztBQVNBdEIsYUFBYSxDQUFDSSxLQUFkLENBQW9CLFNBQXBCLEVBQ0tDLE9BREwsQ0FDYVYsSUFBSSxDQUFDVyxlQURsQixFQUNtQyxDQUFDQyxHQUFELEVBQU1DLEdBQU4sS0FBYztBQUFFQSxFQUFBQSxHQUFHLENBQUNDLFVBQUosQ0FBZSxHQUFmO0FBQXNCLENBRHpFLEVBRUtJLElBRkwsQ0FFVWxCLElBQUksQ0FBQ1csZUFGZixFQUVnQ1QsWUFBWSxDQUFDYyxVQUY3QyxFQUUwRFosaUJBQWlCLENBQUN3QixvQkFGNUUsRSxDQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUF2QixhQUFhLENBQUNJLEtBQWQsQ0FBb0IsYUFBcEIsRUFDS0MsT0FETCxDQUNhVixJQUFJLENBQUNXLGVBRGxCLEVBQ21DLENBQUNDLEdBQUQsRUFBTUMsR0FBTixLQUFjO0FBQUVBLEVBQUFBLEdBQUcsQ0FBQ0MsVUFBSixDQUFlLEdBQWY7QUFBc0IsQ0FEekUsRUFFS0MsR0FGTCxDQUVTZixJQUFJLENBQUNBLElBRmQsRUFFb0JFLFlBQVksQ0FBQ2MsVUFGakMsRUFFK0NaLGlCQUFpQixDQUFDeUIscUJBRmpFLEVBR0tYLElBSEwsQ0FHVWxCLElBQUksQ0FBQ1csZUFIZixFQUdnQyxDQUFDQyxHQUFELEVBQU1DLEdBQU4sRUFBV1MsSUFBWCxLQUFvQjtBQUM1Q1QsRUFBQUEsR0FBRyxDQUFDVSxVQUFKLEdBQWlCLEdBQWpCO0FBQ0FWLEVBQUFBLEdBQUcsQ0FBQ1csR0FBSixDQUFRLCtDQUErQ1osR0FBRyxDQUFDa0IsTUFBSixDQUFXQyxTQUFsRTtBQUNILENBTkwsRUFPS1YsR0FQTCxDQU9TckIsSUFBSSxDQUFDVyxlQVBkLEVBTytCVCxZQUFZLENBQUNjLFVBUDVDLEVBT3dEZCxZQUFZLENBQUNpQixlQVByRSxFQU91RmYsaUJBQWlCLENBQUM0Qix3QkFQekcsRUFRS1AsTUFSTCxDQVFZekIsSUFBSSxDQUFDVyxlQVJqQixFQVFtQ1QsWUFBWSxDQUFDYyxVQVJoRCxFQVE0RGQsWUFBWSxDQUFDaUIsZUFSekUsRUFRMEZmLGlCQUFpQixDQUFDNkIsa0JBUjVHO0FBVUFDLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQjlCLGFBQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZXhwcmVzcyA9IHJlcXVpcmUoJ2V4cHJlc3MnKTtcclxuY29uc3QgYm9keVBhcnNlciA9IHJlcXVpcmUoJ2JvZHktcGFyc2VyJyk7XHJcblxyXG5jb25zdCBjb3JzID0gcmVxdWlyZSgnLi9jb3JzJyk7XHJcbmNvbnN0IHsgY2hlY2tTY2hlbWEgfSA9IHJlcXVpcmUoJ2V4cHJlc3MtdmFsaWRhdG9yJyk7XHJcbnZhciBhdXRoZW50aWNhdGUgPSByZXF1aXJlKCcuLi9taWRkbGV3YXJlL2F1dGhlbnRpY2F0ZScpO1xyXG52YXIgdmFsaWRhdGlvblJ1bGVzID0gcmVxdWlyZSgnLi4vbWlkZGxld2FyZS92YWxpZGF0aW9uJyk7XHJcbmNvbnN0IHRvdXJpc3RDb250cm9sbGVyID0gcmVxdWlyZSgnLi4vY29udHJvbGxlcnMvdG91cmlzdENvbnRyb2xsZXInKVxyXG5cclxuY29uc3QgdG91cmlzdFJvdXRlciA9IGV4cHJlc3MuUm91dGVyKCk7XHJcblxyXG50b3VyaXN0Um91dGVyLnVzZShib2R5UGFyc2VyLmpzb24oKSk7XHJcblxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbi8vIFxyXG4vLyAgICAgICAgICAgICAgVG91cmlzdCBSb3V0ZXNcclxuLy8gXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbnRvdXJpc3RSb3V0ZXIucm91dGUoJy8nKVxyXG4gICAgLm9wdGlvbnMoY29ycy5jb3JzV2l0aE9wdGlvbnMsIChyZXEsIHJlcykgPT4geyByZXMuc2VuZFN0YXR1cygyMDApOyB9KVxyXG4gICAgLmdldChjb3JzLmNvcnMsICBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgICB0b3VyaXN0Q29udHJvbGxlci5nZXRBbGxUb3VyaXN0cylcclxuICAgIC5wb3N0KGNvcnMuY29yc1dpdGhPcHRpb25zLCAgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlNb2RlcmF0ZXIsIHRvdXJpc3RDb250cm9sbGVyLmFkZFRvdXJpc3QpXHJcbiAgICAucHV0KGNvcnMuY29yc1dpdGhPcHRpb25zLCAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwMztcclxuICAgICAgICByZXMuZW5kKCdQVVQgb3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQgb24gL3RvdXJpc3RzJyk7XHJcbiAgICB9KVxyXG4gICAgLmRlbGV0ZShjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgIHRvdXJpc3RDb250cm9sbGVyLmRlbGV0ZUFsbFRvdXJpc3RzKTtcclxudG91cmlzdFJvdXRlci5yb3V0ZSgnL3NlYXJjaCcpXHJcbiAgICAub3B0aW9ucyhjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcbiAgICAucG9zdChjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsICB0b3VyaXN0Q29udHJvbGxlci5nZXRBbGxUb3VyaXN0c0J5TmFtZSk7XHJcblxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbi8vIFxyXG4vLyAgICAgICAgICAgICAgVG91cmlzdCBSb3V0ZXMgU3BlY2lmaWVkIGJ5IElEXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG50b3VyaXN0Um91dGVyLnJvdXRlKCcvOnRvdXJpc3RJZCcpXHJcbiAgICAub3B0aW9ucyhjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcbiAgICAuZ2V0KGNvcnMuY29ycywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsICAgdG91cmlzdENvbnRyb2xsZXIuZ2V0VG91cmlzdERldGFpbHNCeUlkKVxyXG4gICAgLnBvc3QoY29ycy5jb3JzV2l0aE9wdGlvbnMsIChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNDAzO1xyXG4gICAgICAgIHJlcy5lbmQoJ1BPU1Qgb3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQgb24gL3RvdXJpc3RzLycgKyByZXEucGFyYW1zLnRvdXJpc3RJZCk7XHJcbiAgICB9KVxyXG4gICAgLnB1dChjb3JzLmNvcnNXaXRoT3B0aW9ucywgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlNb2RlcmF0ZXIsICB0b3VyaXN0Q29udHJvbGxlci51cGRhdGVUb3VyaXN0RGV0YWlsc0J5SWQpXHJcbiAgICAuZGVsZXRlKGNvcnMuY29yc1dpdGhPcHRpb25zLCAgYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlNb2RlcmF0ZXIsIHRvdXJpc3RDb250cm9sbGVyLmRlbGV0ZUFUb3VyaXN0QnlJZCk7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IHRvdXJpc3RSb3V0ZXI7Il19\",\"originalCode\":\"const express = require('express');\\r\\nconst bodyParser = require('body-parser');\\r\\n\\r\\nconst cors = require('./cors');\\r\\nconst { checkSchema } = require('express-validator');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\nvar validationRules = require('../middleware/validation');\\r\\nconst touristController = require('../controllers/touristController')\\r\\n\\r\\nconst touristRouter = express.Router();\\r\\n\\r\\ntouristRouter.use(bodyParser.json());\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Tourist Routes\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\ntouristRouter.route('/')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, touristController.getAllTourists)\\r\\n .post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, touristController.addTourist)\\r\\n .put(cors.corsWithOptions, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('PUT operation not supported on /tourists');\\r\\n })\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, touristController.deleteAllTourists);\\r\\ntouristRouter.route('/search')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .post(cors.corsWithOptions, authenticate.verifyUser, touristController.getAllTouristsByName);\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Tourist Routes Specified by ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\ntouristRouter.route('/:touristId')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, touristController.getTouristDetailsById)\\r\\n .post(cors.corsWithOptions, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('POST operation not supported on /tourists/' + req.params.touristId);\\r\\n })\\r\\n .put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, touristController.updateTouristDetailsById)\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyModerater, touristController.deleteATouristById);\\r\\n\\r\\nmodule.exports = touristRouter;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/0a/touristRouter_0ad938586662daadc81c6cb1ad2e0f53.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2545\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\touristRouter.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":9165,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":9162,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":796,\"endOffset\":836,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1050,\"endOffset\":1152,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1333,\"endOffset\":1373,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1761,\"endOffset\":1801,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1911,\"endOffset\":2038,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const Tourists = require('../models/users');\\n\\nconst utils = require('../utils/utils'); // **********************************************************************************\\n// \\n// Tourist Operations \\n// \\n// **********************************************************************************\\n\\n\\nconst getAllTourists = (req, res, next) => {\\n var query = {\\n \\\"role\\\": \\\"user\\\"\\n }; // var obj = Object.assign(query, { $text: { $search: searchBy } });\\n\\n Tourists.find(query).then(tourists => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n tourists: tourists\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst getAllTouristsByName = (req, res, next) => {\\n var query = {\\n \\\"role\\\": \\\"user\\\"\\n };\\n\\n if (req.body.similarTo) {\\n var searchBy = req.body.similarTo || {};\\n query = {\\n \\\"role\\\": \\\"user\\\",\\n $text: {\\n $search: searchBy\\n }\\n };\\n }\\n\\n var sortby = req.body.sortBy || {};\\n Tourists.find(query).sort(sortby).then(tourists => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n tourists: tourists\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nconst addTourist = async (req, res, next) => {\\n const randomPassword = utils.password_generator(10);\\n var tourist = {\\n username: req.body.email,\\n firstname: req.body.firstname,\\n lastname: req.body.lastname,\\n email: req.body.email,\\n mobile: req.body.mobile,\\n role: 'user'\\n };\\n\\n try {\\n Tourists.register(new Tourists(tourist), randomPassword, (err, tourist) => {\\n if (err) {\\n res.statusCode = 403;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: err.message\\n });\\n } else {\\n tourist.save((err, tourist) => {\\n if (err) {\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Error while Saving new user.'\\n });\\n }\\n\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n email: tourist.email,\\n password: randomPassword\\n });\\n });\\n }\\n });\\n } catch (error) {\\n next(err);\\n }\\n};\\n\\nconst deleteAllTourists = (req, res, next) => {\\n Tourists.remove({\\n \\\"role\\\": \\\"user\\\"\\n }).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n response: resp\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nexports.getAllTourists = getAllTourists;\\nexports.getAllTouristsByName = getAllTouristsByName;\\nexports.addTourist = addTourist;\\nexports.deleteAllTourists = deleteAllTourists; // **********************************************************************************\\n// \\n// Tourist Operations Specified by ID\\n// \\n// **********************************************************************************\\n\\nconst getTouristDetailsById = (req, res, next) => {\\n var touristId = req.params.touristId;\\n Tourists.findById(touristId).then(tourist => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n tourist: tourist\\n });\\n }, err => {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Could not find tourist with given ID'\\n });\\n }).catch(err => next(err));\\n};\\n\\nconst updateTouristDetailsById = (req, res, next) => {\\n Tourists.findByIdAndUpdate(req.params.touristId, {\\n $set: req.body\\n }, {\\n new: true\\n }).then(tourist => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n tourist: tourist\\n });\\n }, err => {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Could not find tourist with given ID'\\n });\\n }).catch(err => next(err));\\n};\\n\\nconst deleteATouristById = (req, res, next) => {\\n Tourists.findByIdAndRemove(req.params.touristId).then(resp => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n response: resp\\n });\\n }, err => next(err)).catch(err => next(err));\\n};\\n\\nexports.getTouristDetailsById = getTouristDetailsById;\\nexports.updateTouristDetailsById = updateTouristDetailsById;\\nexports.deleteATouristById = deleteATouristById;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRvdXJpc3RDb250cm9sbGVyLmpzIl0sIm5hbWVzIjpbIlRvdXJpc3RzIiwicmVxdWlyZSIsInV0aWxzIiwiZ2V0QWxsVG91cmlzdHMiLCJyZXEiLCJyZXMiLCJuZXh0IiwicXVlcnkiLCJmaW5kIiwidGhlbiIsInRvdXJpc3RzIiwic3RhdHVzQ29kZSIsInNldEhlYWRlciIsImpzb24iLCJzdWNjZXNzIiwiZXJyIiwiY2F0Y2giLCJnZXRBbGxUb3VyaXN0c0J5TmFtZSIsImJvZHkiLCJzaW1pbGFyVG8iLCJzZWFyY2hCeSIsIiR0ZXh0IiwiJHNlYXJjaCIsInNvcnRieSIsInNvcnRCeSIsInNvcnQiLCJhZGRUb3VyaXN0IiwicmFuZG9tUGFzc3dvcmQiLCJwYXNzd29yZF9nZW5lcmF0b3IiLCJ0b3VyaXN0IiwidXNlcm5hbWUiLCJlbWFpbCIsImZpcnN0bmFtZSIsImxhc3RuYW1lIiwibW9iaWxlIiwicm9sZSIsInJlZ2lzdGVyIiwibWVzc2FnZSIsInNhdmUiLCJwYXNzd29yZCIsImVycm9yIiwiZGVsZXRlQWxsVG91cmlzdHMiLCJyZW1vdmUiLCJyZXNwIiwicmVzcG9uc2UiLCJleHBvcnRzIiwiZ2V0VG91cmlzdERldGFpbHNCeUlkIiwidG91cmlzdElkIiwicGFyYW1zIiwiZmluZEJ5SWQiLCJ1cGRhdGVUb3VyaXN0RGV0YWlsc0J5SWQiLCJmaW5kQnlJZEFuZFVwZGF0ZSIsIiRzZXQiLCJuZXciLCJkZWxldGVBVG91cmlzdEJ5SWQiLCJmaW5kQnlJZEFuZFJlbW92ZSJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsUUFBUSxHQUFHQyxPQUFPLENBQUMsaUJBQUQsQ0FBeEI7O0FBQ0EsTUFBTUMsS0FBSyxHQUFHRCxPQUFPLENBQUMsZ0JBQUQsQ0FBckIsQyxDQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUVBLE1BQU1FLGNBQWMsR0FBRyxDQUFDQyxHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUN2QyxNQUFJQyxLQUFLLEdBQUc7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RUFBRTtBQUEzQixLQUFUO0FBQ0gsR0FYTCxFQVlLckIsS0FaTCxDQVlZRCxHQUFELElBQVNULElBQUksQ0FBQ1MsR0FBRCxDQVp4QjtBQWFILENBZkQ7O0FBaUJBLE1BQU11QyxrQkFBa0IsR0FBRyxDQUFDbEQsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDM0NOLEVBQUFBLFFBQVEsQ0FBQ3VELGlCQUFULENBQTJCbkQsR0FBRyxDQUFDNEMsTUFBSixDQUFXRCxTQUF0QyxFQUNLdEMsSUFETCxDQUNXa0MsSUFBRCxJQUFVO0FBQ1p0QyxJQUFBQSxHQUFHLENBQUNNLFVBQUosR0FBaUIsR0FBakI7QUFDQU4sSUFBQUEsR0FBRyxDQUFDTyxTQUFKLENBQWMsY0FBZCxFQUE4QixrQkFBOUI7QUFDQVAsSUFBQUEsR0FBRyxDQUFDUSxJQUFKLENBQVM7QUFBRUMsTUFBQUEsT0FBTyxFQUFFLElBQVg7QUFBaUI4QixNQUFBQSxRQUFRLEVBQUVEO0FBQTNCLEtBQVQ7QUFDSCxHQUxMLEVBS1E1QixHQUFELElBQVNULElBQUksQ0FBQ1MsR0FBRCxDQUxwQixFQU1LQyxLQU5MLENBTVlELEdBQUQsSUFBU1QsSUFBSSxDQUFDUyxHQUFELENBTnhCO0FBT0gsQ0FSRDs7QUFVQThCLE9BQU8sQ0FBQ0MscUJBQVIsR0FBZ0NBLHFCQUFoQztBQUNBRCxPQUFPLENBQUNLLHdCQUFSLEdBQW1DQSx3QkFBbkM7QUFDQUwsT0FBTyxDQUFDUyxrQkFBUixHQUE2QkEsa0JBQTdCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgVG91cmlzdHMgPSByZXF1aXJlKCcuLi9tb2RlbHMvdXNlcnMnKTtcclxuY29uc3QgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscy91dGlscycpO1xyXG5cclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyBcclxuLy8gICAgICAgICAgICAgIFRvdXJpc3QgT3BlcmF0aW9ucyBcclxuLy8gXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuXHJcbmNvbnN0IGdldEFsbFRvdXJpc3RzID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICB2YXIgcXVlcnkgPSB7IFwicm9sZVwiOiBcInVzZXJcIiB9O1xyXG4gICAgLy8gdmFyIG9iaiA9IE9iamVjdC5hc3NpZ24ocXVlcnksIHsgJHRleHQ6IHsgJHNlYXJjaDogc2VhcmNoQnkgfSB9KTtcclxuICAgICBUb3VyaXN0cy5maW5kKHF1ZXJ5KVxyXG4gICAgICAgIC50aGVuKCh0b3VyaXN0cykgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCB0b3VyaXN0czogdG91cmlzdHMgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpO1xyXG59XHJcblxyXG5jb25zdCBnZXRBbGxUb3VyaXN0c0J5TmFtZSA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgdmFyIHF1ZXJ5ID0geyBcInJvbGVcIjogXCJ1c2VyXCIgfTtcclxuICAgIGlmIChyZXEuYm9keS5zaW1pbGFyVG8pIHtcclxuICAgICAgICB2YXIgc2VhcmNoQnkgPSByZXEuYm9keS5zaW1pbGFyVG8gfHwge31cclxuICAgICAgICBxdWVyeSA9IHsgXCJyb2xlXCI6IFwidXNlclwiLCAkdGV4dDogeyAkc2VhcmNoOiBzZWFyY2hCeSB9IH1cclxuICAgIH1cclxuXHJcbiAgICB2YXIgc29ydGJ5ID0gcmVxLmJvZHkuc29ydEJ5IHx8IHt9O1xyXG4gICAgVG91cmlzdHMuZmluZChxdWVyeSkuc29ydChzb3J0YnkpXHJcbiAgICAgICAgLnRoZW4oKHRvdXJpc3RzKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIHRvdXJpc3RzOiB0b3VyaXN0cyB9KTtcclxuICAgICAgICB9LCAoZXJyKSA9PiBuZXh0KGVycikpXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IG5leHQoZXJyKSk7XHJcbn1cclxuXHJcbmNvbnN0IGFkZFRvdXJpc3QgPSBhc3luYyAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIGNvbnN0IHJhbmRvbVBhc3N3b3JkID0gdXRpbHMucGFzc3dvcmRfZ2VuZXJhdG9yKDEwKTtcclxuICAgIHZhciB0b3VyaXN0ID0ge1xyXG4gICAgICAgIHVzZXJuYW1lOiByZXEuYm9keS5lbWFpbCxcclxuICAgICAgICBmaXJzdG5hbWU6IHJlcS5ib2R5LmZpcnN0bmFtZSxcclxuICAgICAgICBsYXN0bmFtZTogcmVxLmJvZHkubGFzdG5hbWUsXHJcbiAgICAgICAgZW1haWw6IHJlcS5ib2R5LmVtYWlsLFxyXG4gICAgICAgIG1vYmlsZTogcmVxLmJvZHkubW9iaWxlLFxyXG4gICAgICAgIHJvbGU6ICd1c2VyJ1xyXG4gICAgfVxyXG4gICAgdHJ5IHtcclxuICAgICAgICBUb3VyaXN0cy5yZWdpc3RlcihuZXcgVG91cmlzdHModG91cmlzdCksXHJcbiAgICAgICAgICAgIHJhbmRvbVBhc3N3b3JkLCAoZXJyLCB0b3VyaXN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IGZhbHNlLCBtZXNzYWdlOiBlcnIubWVzc2FnZSB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRvdXJpc3Quc2F2ZSgoZXJyLCB0b3VyaXN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNTAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IGZhbHNlLCBtZXNzYWdlOiAnRXJyb3Igd2hpbGUgU2F2aW5nIG5ldyB1c2VyLicgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgZW1haWw6IHRvdXJpc3QuZW1haWwsIHBhc3N3b3JkOiByYW5kb21QYXNzd29yZCB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgbmV4dChlcnIpO1xyXG4gICAgfVxyXG59XHJcblxyXG5jb25zdCBkZWxldGVBbGxUb3VyaXN0cyA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgVG91cmlzdHMucmVtb3ZlKHsgXCJyb2xlXCI6IFwidXNlclwiIH0pXHJcbiAgICAgICAgLnRoZW4oKHJlc3ApID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgcmVzcG9uc2U6IHJlc3AgfSk7XHJcbiAgICAgICAgfSwgKGVycikgPT4gbmV4dChlcnIpKVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpO1xyXG59XHJcblxyXG5leHBvcnRzLmdldEFsbFRvdXJpc3RzID0gZ2V0QWxsVG91cmlzdHM7XHJcbmV4cG9ydHMuZ2V0QWxsVG91cmlzdHNCeU5hbWUgPSBnZXRBbGxUb3VyaXN0c0J5TmFtZTtcclxuZXhwb3J0cy5hZGRUb3VyaXN0ID0gYWRkVG91cmlzdDtcclxuZXhwb3J0cy5kZWxldGVBbGxUb3VyaXN0cyA9IGRlbGV0ZUFsbFRvdXJpc3RzO1xyXG5cclxuXHJcblxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbi8vIFxyXG4vLyAgICAgICAgICAgICAgVG91cmlzdCBPcGVyYXRpb25zIFNwZWNpZmllZCBieSBJRFxyXG4vLyBcclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuY29uc3QgZ2V0VG91cmlzdERldGFpbHNCeUlkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICB2YXIgdG91cmlzdElkID0gcmVxLnBhcmFtcy50b3VyaXN0SWQ7XHJcbiAgICBUb3VyaXN0cy5maW5kQnlJZCh0b3VyaXN0SWQpXHJcbiAgICAgICAgLnRoZW4oKHRvdXJpc3QpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgdG91cmlzdDogdG91cmlzdCB9KTtcclxuICAgICAgICB9LCAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNDA0O1xyXG4gICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IGZhbHNlLCBtZXNzYWdlOiAnQ291bGQgbm90IGZpbmQgdG91cmlzdCB3aXRoIGdpdmVuIElEJyB9KTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiBuZXh0KGVycikpOyBcclxufVxyXG5cclxuY29uc3QgdXBkYXRlVG91cmlzdERldGFpbHNCeUlkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICBcclxuICAgIFRvdXJpc3RzLmZpbmRCeUlkQW5kVXBkYXRlKHJlcS5wYXJhbXMudG91cmlzdElkLCB7XHJcbiAgICAgICAgJHNldDogcmVxLmJvZHlcclxuICAgIH0sIHsgbmV3OiB0cnVlIH0pXHJcbiAgICAgICAgLnRoZW4oKHRvdXJpc3QpID0+IHtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgdG91cmlzdDogdG91cmlzdCB9KTtcclxuICAgICAgICB9LCAoZXJyKSA9PiAge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwNDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogJ0NvdWxkIG5vdCBmaW5kIHRvdXJpc3Qgd2l0aCBnaXZlbiBJRCcgfSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goKGVycikgPT4gbmV4dChlcnIpKTtcclxufVxyXG5cclxuY29uc3QgZGVsZXRlQVRvdXJpc3RCeUlkID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICBUb3VyaXN0cy5maW5kQnlJZEFuZFJlbW92ZShyZXEucGFyYW1zLnRvdXJpc3RJZClcclxuICAgICAgICAudGhlbigocmVzcCkgPT4ge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwMDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCByZXNwb25zZTogcmVzcCB9KTtcclxuICAgICAgICB9LCAoZXJyKSA9PiBuZXh0KGVycikpXHJcbiAgICAgICAgLmNhdGNoKChlcnIpID0+IG5leHQoZXJyKSk7XHJcbn1cclxuXHJcbmV4cG9ydHMuZ2V0VG91cmlzdERldGFpbHNCeUlkID0gZ2V0VG91cmlzdERldGFpbHNCeUlkO1xyXG5leHBvcnRzLnVwZGF0ZVRvdXJpc3REZXRhaWxzQnlJZCA9IHVwZGF0ZVRvdXJpc3REZXRhaWxzQnlJZDtcclxuZXhwb3J0cy5kZWxldGVBVG91cmlzdEJ5SWQgPSBkZWxldGVBVG91cmlzdEJ5SWQ7XHJcblxyXG5cclxuIl19\",\"originalCode\":\"const Tourists = require('../models/users');\\r\\nconst utils = require('../utils/utils');\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Tourist Operations \\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nconst getAllTourists = (req, res, next) => {\\r\\n var query = { \\\"role\\\": \\\"user\\\" };\\r\\n // var obj = Object.assign(query, { $text: { $search: searchBy } });\\r\\n Tourists.find(query)\\r\\n .then((tourists) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, tourists: tourists });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst getAllTouristsByName = (req, res, next) => {\\r\\n var query = { \\\"role\\\": \\\"user\\\" };\\r\\n if (req.body.similarTo) {\\r\\n var searchBy = req.body.similarTo || {}\\r\\n query = { \\\"role\\\": \\\"user\\\", $text: { $search: searchBy } }\\r\\n }\\r\\n\\r\\n var sortby = req.body.sortBy || {};\\r\\n Tourists.find(query).sort(sortby)\\r\\n .then((tourists) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, tourists: tourists });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst addTourist = async (req, res, next) => {\\r\\n const randomPassword = utils.password_generator(10);\\r\\n var tourist = {\\r\\n username: req.body.email,\\r\\n firstname: req.body.firstname,\\r\\n lastname: req.body.lastname,\\r\\n email: req.body.email,\\r\\n mobile: req.body.mobile,\\r\\n role: 'user'\\r\\n }\\r\\n try {\\r\\n Tourists.register(new Tourists(tourist),\\r\\n randomPassword, (err, tourist) => {\\r\\n if (err) {\\r\\n res.statusCode = 403;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: err.message });\\r\\n }\\r\\n else {\\r\\n tourist.save((err, tourist) => {\\r\\n if (err) {\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Error while Saving new user.' });\\r\\n }\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, email: tourist.email, password: randomPassword });\\r\\n });\\r\\n }\\r\\n });\\r\\n } catch (error) {\\r\\n next(err);\\r\\n }\\r\\n}\\r\\n\\r\\nconst deleteAllTourists = (req, res, next) => {\\r\\n Tourists.remove({ \\\"role\\\": \\\"user\\\" })\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, response: resp });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nexports.getAllTourists = getAllTourists;\\r\\nexports.getAllTouristsByName = getAllTouristsByName;\\r\\nexports.addTourist = addTourist;\\r\\nexports.deleteAllTourists = deleteAllTourists;\\r\\n\\r\\n\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Tourist Operations Specified by ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nconst getTouristDetailsById = (req, res, next) => {\\r\\n var touristId = req.params.touristId;\\r\\n Tourists.findById(touristId)\\r\\n .then((tourist) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, tourist: tourist });\\r\\n }, (err) => {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Could not find tourist with given ID' });\\r\\n })\\r\\n .catch((err) => next(err)); \\r\\n}\\r\\n\\r\\nconst updateTouristDetailsById = (req, res, next) => {\\r\\n \\r\\n Tourists.findByIdAndUpdate(req.params.touristId, {\\r\\n $set: req.body\\r\\n }, { new: true })\\r\\n .then((tourist) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, tourist: tourist });\\r\\n }, (err) => {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Could not find tourist with given ID' });\\r\\n })\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nconst deleteATouristById = (req, res, next) => {\\r\\n Tourists.findByIdAndRemove(req.params.touristId)\\r\\n .then((resp) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, response: resp });\\r\\n }, (err) => next(err))\\r\\n .catch((err) => next(err));\\r\\n}\\r\\n\\r\\nexports.getTouristDetailsById = getTouristDetailsById;\\r\\nexports.updateTouristDetailsById = updateTouristDetailsById;\\r\\nexports.deleteATouristById = deleteATouristById;\\r\\n\\r\\n\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/ff/touristController_ff3455758448d6e0c4e2be11f313067b.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2546\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\touristController.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":20391,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":20388,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"getAllTourists\",\"ranges\":[{\"startOffset\":417,\"endOffset\":790,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getAllTouristsByName\",\"ranges\":[{\"startOffset\":822,\"endOffset\":1347,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"addTourist\",\"ranges\":[{\"startOffset\":1369,\"endOffset\":2534,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"deleteAllTourists\",\"ranges\":[{\"startOffset\":2563,\"endOffset\":2839,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getTouristDetailsById\",\"ranges\":[{\"startOffset\":3278,\"endOffset\":3762,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"updateTouristDetailsById\",\"ranges\":[{\"startOffset\":3798,\"endOffset\":4309,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"deleteATouristById\",\"ranges\":[{\"startOffset\":4339,\"endOffset\":4622,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const express = require('express');\\n\\nconst bodyParser = require('body-parser');\\n\\nconst cors = require('./cors');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nconst dashboardController = require('../controllers/dashboardController');\\n\\nconst dashboardRouter = express.Router();\\ndashboardRouter.use(bodyParser.json());\\ndashboardRouter.route('/admin').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, authenticate.verifyAdmin, dashboardController.getDashboard);\\nmodule.exports = dashboardRouter;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRhc2hib2FyZFJvdXRlci5qcyJdLCJuYW1lcyI6WyJleHByZXNzIiwicmVxdWlyZSIsImJvZHlQYXJzZXIiLCJjb3JzIiwiYXV0aGVudGljYXRlIiwiZGFzaGJvYXJkQ29udHJvbGxlciIsImRhc2hib2FyZFJvdXRlciIsIlJvdXRlciIsInVzZSIsImpzb24iLCJyb3V0ZSIsIm9wdGlvbnMiLCJjb3JzV2l0aE9wdGlvbnMiLCJyZXEiLCJyZXMiLCJzZW5kU3RhdHVzIiwiZ2V0IiwidmVyaWZ5VXNlciIsInZlcmlmeUFkbWluIiwiZ2V0RGFzaGJvYXJkIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsT0FBTyxHQUFHQyxPQUFPLENBQUMsU0FBRCxDQUF2Qjs7QUFDQSxNQUFNQyxVQUFVLEdBQUdELE9BQU8sQ0FBQyxhQUFELENBQTFCOztBQUVBLE1BQU1FLElBQUksR0FBR0YsT0FBTyxDQUFDLFFBQUQsQ0FBcEI7O0FBQ0EsSUFBSUcsWUFBWSxHQUFHSCxPQUFPLENBQUMsNEJBQUQsQ0FBMUI7O0FBQ0EsTUFBTUksbUJBQW1CLEdBQUdKLE9BQU8sQ0FBQyxvQ0FBRCxDQUFuQzs7QUFFQSxNQUFNSyxlQUFlLEdBQUdOLE9BQU8sQ0FBQ08sTUFBUixFQUF4QjtBQUVBRCxlQUFlLENBQUNFLEdBQWhCLENBQW9CTixVQUFVLENBQUNPLElBQVgsRUFBcEI7QUFFQUgsZUFBZSxDQUFDSSxLQUFoQixDQUFzQixRQUF0QixFQUNLQyxPQURMLENBQ2FSLElBQUksQ0FBQ1MsZUFEbEIsRUFDbUMsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEtBQWM7QUFBRUEsRUFBQUEsR0FBRyxDQUFDQyxVQUFKLENBQWUsR0FBZjtBQUFzQixDQUR6RSxFQUVLQyxHQUZMLENBRVNiLElBQUksQ0FBQ0EsSUFGZCxFQUVtQkMsWUFBWSxDQUFDYSxVQUZoQyxFQUU0Q2IsWUFBWSxDQUFDYyxXQUZ6RCxFQUVzRWIsbUJBQW1CLENBQUNjLFlBRjFGO0FBSUFDLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQmYsZUFBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBleHByZXNzID0gcmVxdWlyZSgnZXhwcmVzcycpO1xyXG5jb25zdCBib2R5UGFyc2VyID0gcmVxdWlyZSgnYm9keS1wYXJzZXInKTtcclxuXHJcbmNvbnN0IGNvcnMgPSByZXF1aXJlKCcuL2NvcnMnKTtcclxudmFyIGF1dGhlbnRpY2F0ZSA9IHJlcXVpcmUoJy4uL21pZGRsZXdhcmUvYXV0aGVudGljYXRlJyk7XHJcbmNvbnN0IGRhc2hib2FyZENvbnRyb2xsZXIgPSByZXF1aXJlKCcuLi9jb250cm9sbGVycy9kYXNoYm9hcmRDb250cm9sbGVyJyk7XHJcblxyXG5jb25zdCBkYXNoYm9hcmRSb3V0ZXIgPSBleHByZXNzLlJvdXRlcigpO1xyXG5cclxuZGFzaGJvYXJkUm91dGVyLnVzZShib2R5UGFyc2VyLmpzb24oKSk7XHJcblxyXG5kYXNoYm9hcmRSb3V0ZXIucm91dGUoJy9hZG1pbicpXHJcbiAgICAub3B0aW9ucyhjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcbiAgICAuZ2V0KGNvcnMuY29ycyxhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeUFkbWluLCBkYXNoYm9hcmRDb250cm9sbGVyLmdldERhc2hib2FyZCk7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IGRhc2hib2FyZFJvdXRlcjsiXX0=\",\"originalCode\":\"const express = require('express');\\r\\nconst bodyParser = require('body-parser');\\r\\n\\r\\nconst cors = require('./cors');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\nconst dashboardController = require('../controllers/dashboardController');\\r\\n\\r\\nconst dashboardRouter = express.Router();\\r\\n\\r\\ndashboardRouter.use(bodyParser.json());\\r\\n\\r\\ndashboardRouter.route('/admin')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors,authenticate.verifyUser, authenticate.verifyAdmin, dashboardController.getDashboard);\\r\\n\\r\\nmodule.exports = dashboardRouter;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/07/dashboardRouter_0791a49f2f45fc0f57ade98f27175c5c.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2547\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\dashboardRouter.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":2824,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":2821,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":482,\"endOffset\":522,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const Place = require('../models/visitingPlaces');\\n\\nconst User = require('../models/users');\\n\\nconst Schedule = require('../models/schedules');\\n\\nexports.getDashboard = async (req, res, next) => {\\n try {\\n const users_count = (await User.find().countDocuments()) - 1;\\n const tourist_count_total = await User.find({\\n \\\"role\\\": \\\"user\\\"\\n }).countDocuments();\\n const assistant_count_total = await User.find({\\n \\\"role\\\": \\\"moderater\\\"\\n }).countDocuments();\\n const tourist_count_in = await User.find({\\n \\\"role\\\": \\\"user\\\",\\n \\\"userstate\\\": \\\"in\\\"\\n }).countDocuments();\\n const place_count = await Place.find().countDocuments();\\n const place_names = await Place.find({}, {\\n _id: 0,\\n name: 1\\n });\\n const place_locations = await Place.find({}, {\\n _id: 0,\\n \\\"location.coordinates\\\": 1\\n });\\n var locations = [];\\n place_locations.forEach(element => {\\n var longitude = element.location.coordinates[0];\\n var latitude = element.location.coordinates[1];\\n locations.push({\\n longitude,\\n latitude\\n });\\n });\\n const schedules_count_total = await Schedule.find().countDocuments();\\n const schedules_count_new = await Schedule.find({\\n \\\"state\\\": \\\"new\\\"\\n }).countDocuments();\\n const schedules_count_canceled = await Schedule.find({\\n \\\"state\\\": \\\"cancled\\\"\\n }).countDocuments();\\n const schedules_count_notcompleted = await Schedule.find({\\n \\\"state\\\": \\\"notcompleted\\\"\\n }).countDocuments();\\n const schedules_count_completed = await Schedule.find({\\n \\\"state\\\": \\\"completed\\\"\\n }).countDocuments();\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n dashboardValues: {\\n users_count: users_count,\\n tourist_count_total: tourist_count_total,\\n assistant_count_total: assistant_count_total,\\n tourist_count_in: tourist_count_in,\\n place_count: place_count,\\n place_names: place_names,\\n place_locations: locations,\\n schedules_count_total: schedules_count_total,\\n schedules_count_new: schedules_count_new,\\n schedules_count_canceled: schedules_count_canceled,\\n schedules_count_notcompleted: schedules_count_notcompleted,\\n schedules_count_completed: schedules_count_completed\\n }\\n });\\n } catch (err) {\\n next(err);\\n }\\n};\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRhc2hib2FyZENvbnRyb2xsZXIuanMiXSwibmFtZXMiOlsiUGxhY2UiLCJyZXF1aXJlIiwiVXNlciIsIlNjaGVkdWxlIiwiZXhwb3J0cyIsImdldERhc2hib2FyZCIsInJlcSIsInJlcyIsIm5leHQiLCJ1c2Vyc19jb3VudCIsImZpbmQiLCJjb3VudERvY3VtZW50cyIsInRvdXJpc3RfY291bnRfdG90YWwiLCJhc3Npc3RhbnRfY291bnRfdG90YWwiLCJ0b3VyaXN0X2NvdW50X2luIiwicGxhY2VfY291bnQiLCJwbGFjZV9uYW1lcyIsIl9pZCIsIm5hbWUiLCJwbGFjZV9sb2NhdGlvbnMiLCJsb2NhdGlvbnMiLCJmb3JFYWNoIiwiZWxlbWVudCIsImxvbmdpdHVkZSIsImxvY2F0aW9uIiwiY29vcmRpbmF0ZXMiLCJsYXRpdHVkZSIsInB1c2giLCJzY2hlZHVsZXNfY291bnRfdG90YWwiLCJzY2hlZHVsZXNfY291bnRfbmV3Iiwic2NoZWR1bGVzX2NvdW50X2NhbmNlbGVkIiwic2NoZWR1bGVzX2NvdW50X25vdGNvbXBsZXRlZCIsInNjaGVkdWxlc19jb3VudF9jb21wbGV0ZWQiLCJzdGF0dXNDb2RlIiwic2V0SGVhZGVyIiwianNvbiIsInN1Y2Nlc3MiLCJkYXNoYm9hcmRWYWx1ZXMiLCJlcnIiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLEtBQUssR0FBR0MsT0FBTyxDQUFDLDBCQUFELENBQXJCOztBQUNBLE1BQU1DLElBQUksR0FBR0QsT0FBTyxDQUFDLGlCQUFELENBQXBCOztBQUNBLE1BQU1FLFFBQVEsR0FBR0YsT0FBTyxDQUFDLHFCQUFELENBQXhCOztBQUVBRyxPQUFPLENBQUNDLFlBQVIsR0FBdUIsT0FBT0MsR0FBUCxFQUFZQyxHQUFaLEVBQWlCQyxJQUFqQixLQUEwQjtBQUM3QyxNQUFJO0FBQ0EsVUFBTUMsV0FBVyxHQUFHLE9BQU1QLElBQUksQ0FBQ1EsSUFBTCxHQUFZQyxjQUFaLEVBQU4sSUFBcUMsQ0FBekQ7QUFDQSxVQUFNQyxtQkFB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QUFFQSw0QkFYRjtBQVk1QkMsUUFBQUEseUJBQXlCLEVBQUVBO0FBWkM7QUFEM0IsS0FBVDtBQWdCSCxHQXRDRCxDQXNDRSxPQUFPTSxHQUFQLEVBQVk7QUFDVjlCLElBQUFBLElBQUksQ0FBQzhCLEdBQUQsQ0FBSjtBQUNIO0FBQ0osQ0ExQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBQbGFjZSA9IHJlcXVpcmUoJy4uL21vZGVscy92aXNpdGluZ1BsYWNlcycpO1xyXG5jb25zdCBVc2VyID0gcmVxdWlyZSgnLi4vbW9kZWxzL3VzZXJzJyk7XHJcbmNvbnN0IFNjaGVkdWxlID0gcmVxdWlyZSgnLi4vbW9kZWxzL3NjaGVkdWxlcycpO1xyXG5cclxuZXhwb3J0cy5nZXREYXNoYm9hcmQgPSBhc3luYyAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgICAgY29uc3QgdXNlcnNfY291bnQgPSBhd2FpdCBVc2VyLmZpbmQoKS5jb3VudERvY3VtZW50cygpIC0gMTtcclxuICAgICAgICBjb25zdCB0b3VyaXN0X2NvdW50X3RvdGFsID0gYXdhaXQgVXNlci5maW5kKHsgXCJyb2xlXCI6IFwidXNlclwiIH0pLmNvdW50RG9jdW1lbnRzKCk7XHJcbiAgICAgICAgY29uc3QgYXNzaXN0YW50X2NvdW50X3RvdGFsID0gYXdhaXQgVXNlci5maW5kKHsgXCJyb2xlXCI6IFwibW9kZXJhdGVyXCIgfSkuY291bnREb2N1bWVudHMoKTtcclxuICAgICAgICBjb25zdCB0b3VyaXN0X2NvdW50X2luID0gYXdhaXQgVXNlci5maW5kKHsgXCJyb2xlXCI6IFwidXNlclwiLCBcInVzZXJzdGF0ZVwiOiBcImluXCIgfSkuY291bnREb2N1bWVudHMoKTtcclxuICAgICAgICBjb25zdCBwbGFjZV9jb3VudCA9IGF3YWl0IFBsYWNlLmZpbmQoKS5jb3VudERvY3VtZW50cygpO1xyXG4gICAgICAgIGNvbnN0IHBsYWNlX25hbWVzID0gYXdhaXQgUGxhY2UuZmluZCh7fSwgeyBfaWQ6IDAsIG5hbWU6IDEgfSk7XHJcbiAgICAgICAgY29uc3QgcGxhY2VfbG9jYXRpb25zID0gYXdhaXQgUGxhY2UuZmluZCh7fSwgeyBfaWQ6IDAsIFwibG9jYXRpb24uY29vcmRpbmF0ZXNcIjogMSB9KTtcclxuICAgICAgICB2YXIgbG9jYXRpb25zID0gW107XHJcbiAgICAgICAgcGxhY2VfbG9jYXRpb25zLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICAgIHZhciBsb25naXR1ZGUgPSBlbGVtZW50LmxvY2F0aW9uLmNvb3JkaW5hdGVzWzBdO1xyXG4gICAgICAgICAgICB2YXIgbGF0aXR1ZGUgPSBlbGVtZW50LmxvY2F0aW9uLmNvb3JkaW5hdGVzWzFdO1xyXG4gICAgICAgICAgICBsb2NhdGlvbnMucHVzaCh7IGxvbmdpdHVkZSwgbGF0aXR1ZGUgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgY29uc3Qgc2NoZWR1bGVzX2NvdW50X3RvdGFsID0gYXdhaXQgU2NoZWR1bGUuZmluZCgpLmNvdW50RG9jdW1lbnRzKCk7XHJcbiAgICAgICAgY29uc3Qgc2NoZWR1bGVzX2NvdW50X25ldyA9IGF3YWl0IFNjaGVkdWxlLmZpbmQoeyBcInN0YXRlXCI6IFwibmV3XCIgfSkuY291bnREb2N1bWVudHMoKTtcclxuICAgICAgICBjb25zdCBzY2hlZHVsZXNfY291bnRfY2FuY2VsZWQgPSBhd2FpdCBTY2hlZHVsZS5maW5kKHsgXCJzdGF0ZVwiOiBcImNhbmNsZWRcIiB9KS5jb3VudERvY3VtZW50cygpO1xyXG4gICAgICAgIGNvbnN0IHNjaGVkdWxlc19jb3VudF9ub3Rjb21wbGV0ZWQgPSBhd2FpdCBTY2hlZHVsZS5maW5kKHsgXCJzdGF0ZVwiOiBcIm5vdGNvbXBsZXRlZFwiIH0pLmNvdW50RG9jdW1lbnRzKCk7XHJcbiAgICAgICAgY29uc3Qgc2NoZWR1bGVzX2NvdW50X2NvbXBsZXRlZCA9IGF3YWl0IFNjaGVkdWxlLmZpbmQoeyBcInN0YXRlXCI6IFwiY29tcGxldGVkXCIgfSkuY291bnREb2N1bWVudHMoKTtcclxuXHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICByZXMuanNvbih7XHJcbiAgICAgICAgICAgIHN1Y2Nlc3M6IHRydWUsIGRhc2hib2FyZFZhbHVlczoge1xyXG4gICAgICAgICAgICAgICAgdXNlcnNfY291bnQ6IHVzZXJzX2NvdW50LFxyXG4gICAgICAgICAgICAgICAgdG91cmlzdF9jb3VudF90b3RhbDogdG91cmlzdF9jb3VudF90b3RhbCxcclxuICAgICAgICAgICAgICAgIGFzc2lzdGFudF9jb3VudF90b3RhbDogYXNzaXN0YW50X2NvdW50X3RvdGFsLFxyXG4gICAgICAgICAgICAgICAgdG91cmlzdF9jb3VudF9pbjogdG91cmlzdF9jb3VudF9pbixcclxuICAgICAgICAgICAgICAgIHBsYWNlX2NvdW50OiBwbGFjZV9jb3VudCxcclxuICAgICAgICAgICAgICAgIHBsYWNlX25hbWVzOiBwbGFjZV9uYW1lcyxcclxuICAgICAgICAgICAgICAgIHBsYWNlX2xvY2F0aW9uczogbG9jYXRpb25zLFxyXG4gICAgICAgICAgICAgICAgc2NoZWR1bGVzX2NvdW50X3RvdGFsOiBzY2hlZHVsZXNfY291bnRfdG90YWwsXHJcbiAgICAgICAgICAgICAgICBzY2hlZHVsZXNfY291bnRfbmV3OiBzY2hlZHVsZXNfY291bnRfbmV3LFxyXG4gICAgICAgICAgICAgICAgc2NoZWR1bGVzX2NvdW50X2NhbmNlbGVkOiBzY2hlZHVsZXNfY291bnRfY2FuY2VsZWQsXHJcbiAgICAgICAgICAgICAgICBzY2hlZHVsZXNfY291bnRfbm90Y29tcGxldGVkOiBzY2hlZHVsZXNfY291bnRfbm90Y29tcGxldGVkLFxyXG4gICAgICAgICAgICAgICAgc2NoZWR1bGVzX2NvdW50X2NvbXBsZXRlZDogc2NoZWR1bGVzX2NvdW50X2NvbXBsZXRlZFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICBuZXh0KGVycik7XHJcbiAgICB9XHJcbn1cclxuXHJcbiJdfQ==\",\"originalCode\":\"const Place = require('../models/visitingPlaces');\\r\\nconst User = require('../models/users');\\r\\nconst Schedule = require('../models/schedules');\\r\\n\\r\\nexports.getDashboard = async (req, res, next) => {\\r\\n try {\\r\\n const users_count = await User.find().countDocuments() - 1;\\r\\n const tourist_count_total = await User.find({ \\\"role\\\": \\\"user\\\" }).countDocuments();\\r\\n const assistant_count_total = await User.find({ \\\"role\\\": \\\"moderater\\\" }).countDocuments();\\r\\n const tourist_count_in = await User.find({ \\\"role\\\": \\\"user\\\", \\\"userstate\\\": \\\"in\\\" }).countDocuments();\\r\\n const place_count = await Place.find().countDocuments();\\r\\n const place_names = await Place.find({}, { _id: 0, name: 1 });\\r\\n const place_locations = await Place.find({}, { _id: 0, \\\"location.coordinates\\\": 1 });\\r\\n var locations = [];\\r\\n place_locations.forEach(element => {\\r\\n var longitude = element.location.coordinates[0];\\r\\n var latitude = element.location.coordinates[1];\\r\\n locations.push({ longitude, latitude });\\r\\n });\\r\\n const schedules_count_total = await Schedule.find().countDocuments();\\r\\n const schedules_count_new = await Schedule.find({ \\\"state\\\": \\\"new\\\" }).countDocuments();\\r\\n const schedules_count_canceled = await Schedule.find({ \\\"state\\\": \\\"cancled\\\" }).countDocuments();\\r\\n const schedules_count_notcompleted = await Schedule.find({ \\\"state\\\": \\\"notcompleted\\\" }).countDocuments();\\r\\n const schedules_count_completed = await Schedule.find({ \\\"state\\\": \\\"completed\\\" }).countDocuments();\\r\\n\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({\\r\\n success: true, dashboardValues: {\\r\\n users_count: users_count,\\r\\n tourist_count_total: tourist_count_total,\\r\\n assistant_count_total: assistant_count_total,\\r\\n tourist_count_in: tourist_count_in,\\r\\n place_count: place_count,\\r\\n place_names: place_names,\\r\\n place_locations: locations,\\r\\n schedules_count_total: schedules_count_total,\\r\\n schedules_count_new: schedules_count_new,\\r\\n schedules_count_canceled: schedules_count_canceled,\\r\\n schedules_count_notcompleted: schedules_count_notcompleted,\\r\\n schedules_count_completed: schedules_count_completed\\r\\n }\\r\\n });\\r\\n } catch (err) {\\r\\n next(err);\\r\\n }\\r\\n}\\r\\n\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/34/dashboardController_34872bbac017cfae6fcc33926d204118.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2548\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\dashboardController.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":9854,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":9851,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
.exports.getDashboard\",\"ranges\":[{\"startOffset\":256,\"endOffset\":2463,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const app = require('../../app');\\n\\nconst server = require(\\\"supertest\\\")(app);\\n\\nconst jwt_decode = require('jwt-decode');\\n\\nconst Users = require('../../models/users');\\n\\nvar userToken;\\nvar assistantToken;\\nvar adminToken;\\nvar passwordAssistant;\\nvar passwordUser;\\nconst admin = {\\n \\\"firstname\\\": \\\"Admin\\\",\\n \\\"lastname\\\": \\\"Admin\\\",\\n \\\"email\\\": \\\"admin@gmail.com\\\",\\n \\\"password\\\": \\\"admin-password\\\"\\n};\\nconst assistant = {\\n \\\"firstname\\\": \\\"Pasan\\\",\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\n \\\"email\\\": \\\"pasanFernamdo@gmail.com\\\"\\n};\\nconst tourist = {\\n \\\"firstname\\\": \\\"Sunil\\\",\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\n \\\"email\\\": \\\"sunilFernamdo@gmail.com\\\"\\n};\\n\\nconst signupAdmin = async () => {\\n await Users.deleteMany({});\\n await server.post(\\\"/users/signup/admin\\\").send(admin);\\n};\\n\\nconst getAdminToken = async () => {\\n if (adminToken) {\\n return adminToken;\\n }\\n\\n await signupAdmin();\\n var creds = {\\n username: admin.email,\\n password: admin.password\\n };\\n const response = await server.post(\\\"/users/login\\\").send(creds);\\n adminToken = response.body.token;\\n return adminToken;\\n};\\n\\nconst addAssistant = async () => {\\n if (!adminToken) {\\n await getAdminToken();\\n }\\n\\n const response = await server.post(\\\"/employees\\\").set(\\\"Authorization\\\", `Bearer ${adminToken}`).send(assistant).expect(200);\\n passwordAssistant = response.body.password;\\n};\\n\\nconst getAssistantToken = async () => {\\n if (assistantToken) {\\n return assistantToken;\\n }\\n\\n if (passwordAssistant == null) {\\n await addAssistant();\\n }\\n\\n var creds = {\\n username: assistant.email,\\n password: passwordAssistant\\n };\\n const response = await server.post(\\\"/users/login\\\").send(creds);\\n assistantToken = response.body.token;\\n return assistantToken;\\n};\\n\\nconst addTourist = async () => {\\n if (!assistantToken) {\\n await getAssistantToken();\\n }\\n\\n const response = await server.post(\\\"/tourists\\\").set(\\\"Authorization\\\", `Bearer ${assistantToken}`).send(tourist).expect(200);\\n passwordUser = response.body.password;\\n};\\n\\nconst getTouristToken = async () => {\\n if (userToken) {\\n return userToken;\\n }\\n\\n if (passwordUser == null) {\\n await addTourist();\\n }\\n\\n var creds = {\\n username: tourist.email,\\n password: passwordUser\\n };\\n const response = await server.post(\\\"/users/login\\\").send(creds);\\n userToken = response.body.token;\\n return userToken;\\n};\\n\\nconst getExistingId = async () => {\\n const newTourist = {\\n \\\"firstname\\\": \\\"Namal\\\",\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\n \\\"email\\\": \\\"namalfernamdo@gmail.com\\\",\\n \\\"mobile\\\": \\\"981114844\\\",\\n \\\"rommnumber\\\": \\\"41\\\"\\n };\\n const tourist = new Users(newTourist);\\n await tourist.save();\\n return tourist._id.toString();\\n};\\n\\nconst getNonExistingId = async () => {\\n const newTourist = {\\n \\\"firstname\\\": \\\"Kamal\\\",\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\n \\\"email\\\": \\\"kamalfernamdo@gmail.com\\\",\\n \\\"username\\\": \\\"kamalfernamdo@gmail.com\\\"\\n };\\n const tourist = new Users(newTourist);\\n await tourist.save();\\n await tourist.remove();\\n return tourist._id.toString();\\n};\\n\\nconst getExistingIdAssistanct = async () => {\\n const newAssistant = {\\n \\\"firstname\\\": \\\"Kasun\\\",\\n \\\"lastname\\\": \\\"Perera\\\",\\n \\\"email\\\": \\\"kasun@gmail.com\\\"\\n };\\n const assistant = new Users(newAssistant);\\n await assistant.save();\\n return assistant._id.toString();\\n};\\n\\nconst getNonExistingIdAssistant = async () => {\\n const newAssistant = {\\n \\\"firstname\\\": \\\"Kamal\\\",\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\n \\\"email\\\": \\\"kamalfernamdo@gmail.com\\\"\\n };\\n const assistant = new Users(newAssistant);\\n await assistant.save();\\n await assistant.remove();\\n return assistant._id.toString();\\n};\\n\\nconst decodeToken = token => {\\n var decoded = jwt_decode(token);\\n return decoded;\\n};\\n\\nmodule.exports = {\\n getAdminToken,\\n getAssistantToken,\\n getTouristToken,\\n decodeToken,\\n addTourist,\\n getTouristToken,\\n getExistingId,\\n getNonExistingId,\\n getExistingIdAssistanct,\\n getNonExistingIdAssistant,\\n addAssistant\\n};\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVzZXJfaGVscGVyLmpzIl0sIm5hbWVzIjpbImFwcCIsInJlcXVpcmUiLCJzZXJ2ZXIiLCJqd3RfZGVjb2RlIiwiVXNlcnMiLCJ1c2VyVG9rZW4iLCJhc3Npc3RhbnRUb2tlbiIsImFkbWluVG9rZW4iLCJwYXNzd29yZEFzc2lzdGFudCIsInBhc3N3b3JkVXNlciIsImFkbWluIiwiYXNzaXN0YW50IiwidG91cmlzdCIsInNpZ251cEFkbWluIiwiZGVsZXRlTWFueSIsInBvc3QiLCJzZW5kIiwiZ2V0QWRtaW5Ub2tlbiIsImNyZWRzIiwidXNlcm5hbWUiLCJlbWFpbCIsInBhc3N3b3JkIiwicmVzcG9uc2UiLCJib2R5IiwidG9rZW4iLCJhZGRBc3Npc3RhbnQiLCJzZXQiLCJleHBlY3QiLCJnZXRBc3Npc3RhbnRUb2tlbiIsImFkZFRvdXJpc3QiLCJnZXRUb3VyaXN0VG9rZW4iLCJnZXRFeGlzdGluZ0lkIiwibmV3VG91cmlzdCIsInNhdmUiLCJfaWQiLCJ0b1N0cmluZyIsImdldE5vbkV4aXN0aW5nSWQiLCJyZW1vdmUiLCJnZXRFeGlzdGluZ0lkQXNzaXN0YW5jdCIsIm5ld0Fzc2lzdGFudCIsImdldE5vbkV4aXN0aW5nSWRBc3Npc3RhbnQiLCJkZWNvZGVUb2tlbiIsImRlY29kZWQiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxHQUFHLEdBQUdDLE9BQU8sQ0FBQyxXQUFELENBQW5COztBQUNBLE1BQU1DLE1BQU0sR0FBR0QsT0FBTyxDQUFDLFdBQUQsQ0FBUCxDQUFxQkQsR0FBckIsQ0FBZjs7QUFDQSxNQUFNRyxVQUFVLEdBQUdGLE9BQU8sQ0FBQyxZQUFELENBQTFCOztBQUNBLE1BQU1HLEtBQUssR0FBR0gsT0FBTyxDQUFDLG9CQUFELENBQXJCOztBQUVBLElBQUlJLFNBQUo7QUFDQSxJQUFJQyxjQUFKO0FBQ0EsSUFBSUMsVUFBSjtBQUNBLElBQUlDLGlCQUFKO0FBQ0EsSUFBSUMsWUFBSjtBQUVBLE1BQU1DLEtB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dGVudCI6WyJjb25zdCBhcHAgPSByZXF1aXJlKCcuLi8uLi9hcHAnKTtcclxuY29uc3Qgc2VydmVyID0gcmVxdWlyZShcInN1cGVydGVzdFwiKShhcHApO1xyXG5jb25zdCBqd3RfZGVjb2RlID0gcmVxdWlyZSgnand0LWRlY29kZScpO1xyXG5jb25zdCBVc2VycyA9IHJlcXVpcmUoJy4uLy4uL21vZGVscy91c2VycycpO1xyXG5cclxudmFyIHVzZXJUb2tlbjtcclxudmFyIGFzc2lzdGFudFRva2VuO1xyXG52YXIgYWRtaW5Ub2tlbjtcclxudmFyIHBhc3N3b3JkQXNzaXN0YW50O1xyXG52YXIgcGFzc3dvcmRVc2VyO1xyXG5cclxuY29uc3QgYWRtaW4gPSB7XHJcbiAgICBcImZpcnN0bmFtZVwiOiBcIkFkbWluXCIsXHJcbiAgICBcImxhc3RuYW1lXCI6IFwiQWRtaW5cIixcclxuICAgIFwiZW1haWxcIjogXCJhZG1pbkBnbWFpbC5jb21cIixcclxuICAgIFwicGFzc3dvcmRcIjogXCJhZG1pbi1wYXNzd29yZFwiXHJcbn07XHJcbmNvbnN0IGFzc2lzdGFudCA9IHtcclxuICAgIFwiZmlyc3RuYW1lXCI6IFwiUGFzYW5cIixcclxuICAgIFwibGFzdG5hbWVcIjogXCJGZXJuYW1kb1wiLFxyXG4gICAgXCJlbWFpbFwiOiBcInBhc2FuRmVybmFtZG9AZ21haWwuY29tXCJcclxufTtcclxuY29uc3QgdG91cmlzdCA9IHtcclxuICAgIFwiZmlyc3RuYW1lXCI6IFwiU3VuaWxcIixcclxuICAgIFwibGFzdG5hbWVcIjogXCJGZXJuYW1kb1wiLFxyXG4gICAgXCJlbWFpbFwiOiBcInN1bmlsRmVybmFtZG9AZ21haWwuY29tXCJcclxufTtcclxuXHJcbmNvbnN0IHNpZ251cEFkbWluID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgYXdhaXQgVXNlcnMuZGVsZXRlTWFueSh7fSk7XHJcbiAgICBhd2FpdCBzZXJ2ZXJcclxuICAgICAgICAucG9zdChcIi91c2Vycy9zaWdudXAvYWRtaW5cIilcclxuICAgICAgICAuc2VuZChhZG1pbik7XHJcbn07XHJcblxyXG5jb25zdCBnZXRBZG1pblRva2VuID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgaWYgKGFkbWluVG9rZW4pIHtcclxuICAgICAgICByZXR1cm4gYWRtaW5Ub2tlbjtcclxuICAgIH1cclxuICAgIGF3YWl0IHNpZ251cEFkbWluKCk7XHJcbiAgICB2YXIgY3JlZHMgPSB7XHJcbiAgICAgICAgdXNlcm5hbWU6IGFkbWluLmVtYWlsLFxyXG4gICAgICAgIHBhc3N3b3JkOiBhZG1pbi5wYXNzd29yZCxcclxuICAgIH07XHJcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHNlcnZlclxyXG4gICAgICAgIC5wb3N0KFwiL3VzZXJzL2xvZ2luXCIpXHJcbiAgICAgICAgLnNlbmQoY3JlZHMpO1xyXG4gICAgYWRtaW5Ub2tlbiA9IHJlc3BvbnNlLmJvZHkudG9rZW47XHJcbiAgICByZXR1cm4gYWRtaW5Ub2tlbjtcclxufVxyXG5cclxuY29uc3QgYWRkQXNzaXN0YW50ID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgaWYgKCFhZG1pblRva2VuKSB7XHJcbiAgICAgICAgYXdhaXQgZ2V0QWRtaW5Ub2tlbigpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBzZXJ2ZXJcclxuICAgICAgICAucG9zdChcIi9lbXBsb3llZXNcIilcclxuICAgICAgICAuc2V0KFwiQXV0aG9yaXphdGlvblwiLCBgQmVhcmVyICR7YWRtaW5Ub2tlbn1gKVxyXG4gICAgICAgIC5zZW5kKGFzc2lzdGFudClcclxuICAgICAgICAuZXhwZWN0KDIwMCk7XHJcbiAgICAgICAgICAgXHJcbiAgICBwYXNzd29yZEFzc2lzdGFudCA9ICByZXNwb25zZS5ib2R5LnBhc3N3b3JkO1xyXG59O1xyXG5cclxuY29uc3QgZ2V0QXNzaXN0YW50VG9rZW4gPSBhc3luYyAoKSA9PiB7XHJcbiAgICBpZiAoYXNzaXN0YW50VG9rZW4pIHtcclxuICAgICAgICByZXR1cm4gYXNzaXN0YW50VG9rZW47XHJcbiAgICB9XHJcbiAgICBpZihwYXNzd29yZEFzc2lzdGFudD09bnVsbCl7YXdhaXQgYWRkQXNzaXN0YW50KCk7fVxyXG4gICAgdmFyIGNyZWRzID0ge1xyXG4gICAgICAgIHVzZXJuYW1lOiBhc3Npc3RhbnQuZW1haWwsXHJcbiAgICAgICAgcGFzc3dvcmQ6IHBhc3N3b3JkQXNzaXN0YW50LFxyXG4gICAgfTtcclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgc2VydmVyXHJcbiAgICAgICAgLnBvc3QoXCIvdXNlcnMvbG9naW5cIilcclxuICAgICAgICAuc2VuZChjcmVkcyk7XHJcbiAgICBhc3Npc3RhbnRUb2tlbiA9IHJlc3BvbnNlLmJvZHkudG9rZW47XHJcbiAgICByZXR1cm4gYXNzaXN0YW50VG9rZW47XHJcbn1cclxuXHJcbmNvbnN0IGFkZFRvdXJpc3QgPSBhc3luYyAoKSA9PiB7XHJcbiAgICBpZiAoIWFzc2lzdGFudFRva2VuKSB7XHJcbiAgICAgICAgYXdhaXQgZ2V0QXNzaXN0YW50VG9rZW4oKTtcclxuICAgIH1cclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgc2VydmVyXHJcbiAgICAgICAgLnBvc3QoXCIvdG91cmlzdHNcIilcclxuICAgICAgICAuc2V0KFwiQXV0aG9yaXphdGlvblwiLCBgQmVhcmVyICR7YXNzaXN0YW50VG9rZW59YClcclxuICAgICAgICAuc2VuZCh0b3VyaXN0KVxyXG4gICAgICAgIC5leHBlY3QoMjAwKTtcclxuICAgIHBhc3N3b3JkVXNlcj0gIHJlc3BvbnNlLmJvZHkucGFzc3dvcmQ7XHJcbn07XHJcbiBcclxuXHJcbmNvbnN0IGdldFRvdXJpc3RUb2tlbiA9IGFzeW5jICgpID0+IHtcclxuICAgIGlmICh1c2VyVG9rZW4pIHtcclxuICAgICAgICByZXR1cm4gdXNlclRva2VuO1xyXG4gICAgfVxyXG4gICAgaWYocGFzc3dvcmRVc2VyID09IG51bGwpIHsgYXdhaXQgYWRkVG91cmlzdCgpO31cclxuICAgIHZhciBjcmVkcyA9IHtcclxuICAgICAgICB1c2VybmFtZTogdG91cmlzdC5lbWFpbCxcclxuICAgICAgICBwYXNzd29yZDogcGFzc3dvcmRVc2VyLFxyXG4gICAgfTtcclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgc2VydmVyXHJcbiAgICAgICAgLnBvc3QoXCIvdXNlcnMvbG9naW5cIilcclxuICAgICAgICAuc2VuZChjcmVkcyk7XHJcbiAgICB1c2VyVG9rZW4gPSByZXNwb25zZS5ib2R5LnRva2VuO1xyXG4gICAgcmV0dXJuIHVzZXJUb2tlbjtcclxufVxyXG5cclxuY29uc3QgZ2V0RXhpc3RpbmdJZCA9IGFzeW5jICgpID0+IHtcclxuICAgIGNvbnN0IG5ld1RvdXJpc3QgPSB7XHJcbiAgICAgICAgXCJmaXJzdG5hbWVcIjogXCJOYW1hbFwiLFxyXG4gICAgICAgIFwibGFzdG5hbWVcIjogXCJGZXJuYW1kb1wiLFxyXG4gICAgICAgIFwiZW1haWxcIjogXCJuYW1hbGZlcm5hbWRvQGdtYWlsLmNvbVwiLFxyXG4gICAgICAgIFwibW9iaWxlXCI6IFwiOTgxMTE0ODQ0XCIsXHJcbiAgICAgICAgXCJyb21tbnVtYmVyXCIgOiBcIjQxXCIsXHJcblxyXG4gICAgfVxyXG4gICAgY29uc3QgdG91cmlzdCA9IG5ldyBVc2VycyhuZXdUb3VyaXN0KTtcclxuICAgIGF3YWl0IHRvdXJpc3Quc2F2ZSgpO1xyXG5cclxuICAgIHJldHVybiB0b3VyaXN0Ll9pZC50b1N0cmluZygpO1xyXG5cclxuICAgIFxyXG59XHJcblxyXG5jb25zdCBnZXROb25FeGlzdGluZ0lkID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgY29uc3QgbmV3VG91cmlzdCA9IHtcclxuICAgICAgICBcImZpcnN0bmFtZVwiOiBcIkthbWFsXCIsXHJcbiAgICAgICAgXCJsYXN0bmFtZVwiOiBcIkZlcm5hbWRvXCIsXHJcbiAgICAgICAgXCJlbWFpbFwiOiBcImthbWFsZmVybmFtZG9AZ21haWwuY29tXCIsXHJcbiAgICAgICAgXCJ1c2VybmFtZVwiOiBcImthbWFsZmVybmFtZG9AZ21haWwuY29tXCJcclxuICAgIH1cclxuICAgIGNvbnN0IHRvdXJpc3QgPSBuZXcgVXNlcnMobmV3VG91cmlzdCk7XHJcbiAgICBhd2FpdCB0b3VyaXN0LnNhdmUoKTtcclxuICAgIGF3YWl0IHRvdXJpc3QucmVtb3ZlKCk7XHJcblxyXG4gICAgcmV0dXJuIHRvdXJpc3QuX2lkLnRvU3RyaW5nKCk7XHJcbn1cclxuXHJcbmNvbnN0IGdldEV4aXN0aW5nSWRBc3Npc3RhbmN0ID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgY29uc3QgbmV3QXNzaXN0YW50ID0ge1xyXG4gICAgICAgIFwiZmlyc3RuYW1lXCI6IFwiS2FzdW5cIixcclxuICAgICAgICBcImxhc3RuYW1lXCI6IFwiUGVyZXJhXCIsXHJcbiAgICAgICAgXCJlbWFpbFwiOiBcImthc3VuQGdtYWlsLmNvbVwiLFxyXG4gICAgfVxyXG4gICAgY29uc3QgYXNzaXN0YW50ID0gbmV3IFVzZXJzKG5ld0Fzc2lzdGFudCk7XHJcbiAgICBhd2FpdCBhc3Npc3RhbnQuc2F2ZSgpO1xyXG5cclxuICAgIHJldHVybiBhc3Npc3RhbnQuX2lkLnRvU3RyaW5nKCk7XHJcblxyXG4gICAgXHJcbn1cclxuXHJcbmNvbnN0IGdldE5vbkV4aXN0aW5nSWRBc3Npc3RhbnQgPSBhc3luYyAoKSA9PiB7XHJcbiAgICBjb25zdCBuZXdBc3Npc3RhbnQgPSB7XHJcbiAgICAgICAgXCJmaXJzdG5hbWVcIjogXCJLYW1hbFwiLFxyXG4gICAgICAgIFwibGFzdG5hbWVcIjogXCJGZXJuYW1kb1wiLFxyXG4gICAgICAgIFwiZW1haWxcIjogXCJrYW1hbGZlcm5hbWRvQGdtYWlsLmNvbVwiXHJcbiAgICB9XHJcbiAgICBjb25zdCBhc3Npc3RhbnQgPSBuZXcgVXNlcnMobmV3QXNzaXN0YW50KTtcclxuICAgIGF3YWl0IGFzc2lzdGFudC5zYXZlKCk7XHJcbiAgICBhd2FpdCBhc3Npc3RhbnQucmVtb3ZlKCk7XHJcblxyXG4gICAgcmV0dXJuIGFzc2lzdGFudC5faWQudG9TdHJpbmcoKTtcclxufVxyXG5cclxuY29uc3QgZGVjb2RlVG9rZW4gPSAodG9rZW4pID0+IHtcclxuICAgIHZhciBkZWNvZGVkID0gand0X2RlY29kZSh0b2tlbik7XHJcbiAgICByZXR1cm4gZGVjb2RlZDtcclxufVxyXG5cclxubW9kdWxlLmV4cG9ydHMgPSB7XHJcbiAgICBnZXRBZG1pblRva2VuLCBnZXRBc3Npc3RhbnRUb2tlbiwgZ2V0VG91cmlzdFRva2VuLCBkZWNvZGVUb2tlbiwgYWRkVG91cmlzdCwgZ2V0VG91cmlzdFRva2VuICxnZXRFeGlzdGluZ0lkICxnZXROb25FeGlzdGluZ0lkLCBnZXRFeGlzdGluZ0lkQXNzaXN0YW5jdCwgZ2V0Tm9uRXhpc3RpbmdJZEFzc2lzdGFudCwgYWRkQXNzaXN0YW50XHJcbn1cclxuIl19\",\"originalCode\":\"const app = require('../../app');\\r\\nconst server = require(\\\"supertest\\\")(app);\\r\\nconst jwt_decode = require('jwt-decode');\\r\\nconst Users = require('../../models/users');\\r\\n\\r\\nvar userToken;\\r\\nvar assistantToken;\\r\\nvar adminToken;\\r\\nvar passwordAssistant;\\r\\nvar passwordUser;\\r\\n\\r\\nconst admin = {\\r\\n \\\"firstname\\\": \\\"Admin\\\",\\r\\n \\\"lastname\\\": \\\"Admin\\\",\\r\\n \\\"email\\\": \\\"admin@gmail.com\\\",\\r\\n \\\"password\\\": \\\"admin-password\\\"\\r\\n};\\r\\nconst assistant = {\\r\\n \\\"firstname\\\": \\\"Pasan\\\",\\r\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\r\\n \\\"email\\\": \\\"pasanFernamdo@gmail.com\\\"\\r\\n};\\r\\nconst tourist = {\\r\\n \\\"firstname\\\": \\\"Sunil\\\",\\r\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\r\\n \\\"email\\\": \\\"sunilFernamdo@gmail.com\\\"\\r\\n};\\r\\n\\r\\nconst signupAdmin = async () => {\\r\\n await Users.deleteMany({});\\r\\n await server\\r\\n .post(\\\"/users/signup/admin\\\")\\r\\n .send(admin);\\r\\n};\\r\\n\\r\\nconst getAdminToken = async () => {\\r\\n if (adminToken) {\\r\\n return adminToken;\\r\\n }\\r\\n await signupAdmin();\\r\\n var creds = {\\r\\n username: admin.email,\\r\\n password: admin.password,\\r\\n };\\r\\n const response = await server\\r\\n .post(\\\"/users/login\\\")\\r\\n .send(creds);\\r\\n adminToken = response.body.token;\\r\\n return adminToken;\\r\\n}\\r\\n\\r\\nconst addAssistant = async () => {\\r\\n if (!adminToken) {\\r\\n await getAdminToken();\\r\\n }\\r\\n const response = await server\\r\\n .post(\\\"/employees\\\")\\r\\n .set(\\\"Authorization\\\", `Bearer ${adminToken}`)\\r\\n .send(assistant)\\r\\n .expect(200);\\r\\n \\r\\n passwordAssistant = response.body.password;\\r\\n};\\r\\n\\r\\nconst getAssistantToken = async () => {\\r\\n if (assistantToken) {\\r\\n return assistantToken;\\r\\n }\\r\\n if(passwordAssistant==null){await addAssistant();}\\r\\n var creds = {\\r\\n username: assistant.email,\\r\\n password: passwordAssistant,\\r\\n };\\r\\n const response = await server\\r\\n .post(\\\"/users/login\\\")\\r\\n .send(creds);\\r\\n assistantToken = response.body.token;\\r\\n return assistantToken;\\r\\n}\\r\\n\\r\\nconst addTourist = async () => {\\r\\n if (!assistantToken) {\\r\\n await getAssistantToken();\\r\\n }\\r\\n const response = await server\\r\\n .post(\\\"/tourists\\\")\\r\\n .set(\\\"Authorization\\\", `Bearer ${assistantToken}`)\\r\\n .send(tourist)\\r\\n .expect(200);\\r\\n passwordUser= response.body.password;\\r\\n};\\r\\n \\r\\n\\r\\nconst getTouristToken = async () => {\\r\\n if (userToken) {\\r\\n return userToken;\\r\\n }\\r\\n if(passwordUser == null) { await addTourist();}\\r\\n var creds = {\\r\\n username: tourist.email,\\r\\n password: passwordUser,\\r\\n };\\r\\n const response = await server\\r\\n .post(\\\"/users/login\\\")\\r\\n .send(creds);\\r\\n userToken = response.body.token;\\r\\n return userToken;\\r\\n}\\r\\n\\r\\nconst getExistingId = async () => {\\r\\n const newTourist = {\\r\\n \\\"firstname\\\": \\\"Namal\\\",\\r\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\r\\n \\\"email\\\": \\\"namalfernamdo@gmail.com\\\",\\r\\n \\\"mobile\\\": \\\"981114844\\\",\\r\\n \\\"rommnumber\\\" : \\\"41\\\",\\r\\n\\r\\n }\\r\\n const tourist = new Users(newTourist);\\r\\n await tourist.save();\\r\\n\\r\\n return tourist._id.toString();\\r\\n\\r\\n \\r\\n}\\r\\n\\r\\nconst getNonExistingId = async () => {\\r\\n const newTourist = {\\r\\n \\\"firstname\\\": \\\"Kamal\\\",\\r\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\r\\n \\\"email\\\": \\\"kamalfernamdo@gmail.com\\\",\\r\\n \\\"username\\\": \\\"kamalfernamdo@gmail.com\\\"\\r\\n }\\r\\n const tourist = new Users(newTourist);\\r\\n await tourist.save();\\r\\n await tourist.remove();\\r\\n\\r\\n return tourist._id.toString();\\r\\n}\\r\\n\\r\\nconst getExistingIdAssistanct = async () => {\\r\\n const newAssistant = {\\r\\n \\\"firstname\\\": \\\"Kasun\\\",\\r\\n \\\"lastname\\\": \\\"Perera\\\",\\r\\n \\\"email\\\": \\\"kasun@gmail.com\\\",\\r\\n }\\r\\n const assistant = new Users(newAssistant);\\r\\n await assistant.save();\\r\\n\\r\\n return assistant._id.toString();\\r\\n\\r\\n \\r\\n}\\r\\n\\r\\nconst getNonExistingIdAssistant = async () => {\\r\\n const newAssistant = {\\r\\n \\\"firstname\\\": \\\"Kamal\\\",\\r\\n \\\"lastname\\\": \\\"Fernamdo\\\",\\r\\n \\\"email\\\": \\\"kamalfernamdo@gmail.com\\\"\\r\\n }\\r\\n const assistant = new Users(newAssistant);\\r\\n await assistant.save();\\r\\n await assistant.remove();\\r\\n\\r\\n return assistant._id.toString();\\r\\n}\\r\\n\\r\\nconst decodeToken = (token) => {\\r\\n var decoded = jwt_decode(token);\\r\\n return decoded;\\r\\n}\\r\\n\\r\\nmodule.exports = {\\r\\n getAdminToken, getAssistantToken, getTouristToken, decodeToken, addTourist, getTouristToken ,getExistingId ,getNonExistingId, getExistingIdAssistanct, getNonExistingIdAssistant, addAssistant\\r\\n}\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/79/user_helper_79166e334a8b342d542dc0574b645dc7.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2692\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\tests\\\\helpers\\\\user_helper.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":16466,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":16463,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"signupAdmin\",\"ranges\":[{\"startOffset\":714,\"endOffset\":815,\"count\":3}],\"isBlockCoverage\":false},{\"functionName\":\"getAdminToken\",\"ranges\":[{\"startOffset\":840,\"endOffset\":1126,\"count\":3}],\"isBlockCoverage\":false},{\"functionName\":\"addAssistant\",\"ranges\":[{\"startOffset\":1150,\"endOffset\":1389,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getAssistantToken\",\"ranges\":[{\"startOffset\":1418,\"endOffset\":1770,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"addTourist\",\"ranges\":[{\"startOffset\":1792,\"endOffset\":2035,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getTouristToken\",\"ranges\":[{\"startOffset\":2062,\"endOffset\":2380,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getExistingId\",\"ranges\":[{\"startOffset\":2405,\"endOffset\":2690,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getNonExistingId\",\"ranges\":[{\"startOffset\":2718,\"endOffset\":3021,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getExistingIdAssistanct\",\"ranges\":[{\"startOffset\":3056,\"endOffset\":3290,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"getNonExistingIdAssistant\",\"ranges\":[{\"startOffset\":3327,\"endOffset\":3599,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"decodeToken\",\"ranges\":[{\"startOffset\":3622,\"endOffset\":3687,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const Schedule = require('../../models/schedules');\\n\\nconst mockSchedule = require('../mockData/schedule.data');\\n\\nconst mongoose = require('mongoose');\\n\\nconst addSchedulesToDb = async id => {\\n const schedules = await mockSchedule(id);\\n const scheduleObjects = schedules.map(schedule => new Schedule(schedule));\\n const promiseArray = scheduleObjects.map(schedule => schedule.save());\\n await Promise.all(promiseArray);\\n};\\n\\nconst getExistingId = async () => {\\n const newSchedule = {\\n \\\"user\\\": mongoose.Types.ObjectId(),\\n \\\"place\\\": mongoose.Types.ObjectId(),\\n \\\"date\\\": Date(),\\n \\\"travellingMethod\\\": 'Car'\\n };\\n const schedule = new Schedule(newSchedule);\\n await schedule.save();\\n return schedule._id.toString();\\n};\\n\\nconst getNonExistingId = async () => {\\n const newSchedule = {\\n \\\"user\\\": mongoose.Types.ObjectId(),\\n \\\"place\\\": mongoose.Types.ObjectId(),\\n \\\"date\\\": Date(),\\n \\\"travellingMethod\\\": 'Car'\\n };\\n const schedule = new Schedule(newSchedule);\\n await schedule.save();\\n await schedule.remove();\\n return schedule._id.toString();\\n};\\n\\nconst schedulesInDb = async () => {\\n const places = await Note.find({});\\n return places;\\n};\\n\\nmodule.exports = {\\n addSchedulesToDb,\\n getExistingId,\\n getNonExistingId,\\n schedulesInDb\\n};\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNjaGVkdWxlX2hlbHBlci5qcyJdLCJuYW1lcyI6WyJTY2hlZHVsZSIsInJlcXVpcmUiLCJtb2NrU2NoZWR1bGUiLCJtb25nb29zZSIsImFkZFNjaGVkdWxlc1RvRGIiLCJpZCIsInNjaGVkdWxlcyIsInNjaGVkdWxlT2JqZWN0cyIsIm1hcCIsInNjaGVkdWxlIiwicHJvbWlzZUFycmF5Iiwic2F2ZSIsIlByb21pc2UiLCJhbGwiLCJnZXRFeGlzdGluZ0lkIiwibmV3U2NoZWR1bGUiLCJUeXBlcyIsIk9iamVjdElkIiwiRGF0ZSIsIl9pZCIsInRvU3RyaW5nIiwiZ2V0Tm9uRXhpc3RpbmdJZCIsInJlbW92ZSIsInNjaGVkdWxlc0luRGIiLCJwbGFjZXMiLCJOb3RlIiwiZmluZCIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLFFBQVEsR0FBR0MsT0FBTyxDQUFDLHdCQUFELENBQXhCOztBQUNBLE1BQU1DLFlBQVksR0FBR0QsT0FBTyxDQUFDLDJCQUFELENBQTVCOztBQUNBLE1BQU1FLFFBQVEsR0FBR0YsT0FBTyxDQUFDLFVBQUQsQ0FBeEI7O0FBR0EsTUFBTUcsZ0JBQWdCLEdBQUcsTUFBT0MsRUFBUCxJQUFjO0FBQ25DLFFBQU1DLFNBQVMsR0FBRSxNQUFNSixZQUFZLENBQUNHLEVBQUQsQ0FBbkM7QUFDQSxRQUFNRSxlQUFlLEdBQUdELFNBQVMsQ0FDNUJFLEdBRG1CLENBQ2ZDLFFBQVEsSUFBSSxJQUFJVCxRQUFKLENBQWFTLFFBQWIsQ0FERyxDQUF4QjtBQUVBLFFBQU1DLFlBQVksR0FBR0gsZUFBZSxDQUFDQyxHQUFoQixDQUFvQkMsUUFBUSxJQUFJQSxRQUFRLENBQUNFLElBQVQsRUFBaEMsQ0FBckI7QUFDQSxRQUFNQyxPQUFPLENBQUNDLEdBQVIsQ0FBWUgsWUFBWixDQUFOO0FBQ0gsQ0FORDs7QUFRQSxNQUFNSSxhQUFhLEdBQUcsWUFBWTtBQUM5QixRQUFNQyxXQUFXLEdBQUc7QUFDaEIsWUFBUVosUUFBUSxDQUFDYSxLQUFULENBQWVDLFFBQWYsRUFEUTtBQUVoQixhQUFTZCxRQUFRLENBQUNhLEtBQVQsQ0FBZUMsUUFBZixFQUZPO0FBR2hCLFlBQVFDLElBQUksRUFISTtBQUloQix3QkFBb0I7QUFKSixHQUFwQjtBQU9BLFFBQU1ULFFBQVEsR0FBRyxJQUFJVCxRQUFKLENBQWFlLFdBQWIsQ0FBakI7QUFDQSxRQUFNTixRQUFRLENBQUNFLElBQVQsRUFBTjtBQUVBLFNBQU9GLFFBQVEsQ0FBQ1UsR0FBVCxDQUFhQyxRQUFiLEVBQVA7QUFDSCxDQVpEOztBQWNBLE1BQU1DLGdCQUFnQixHQUFHLFlBQVk7QUFDakMsUUFBTU4sV0FBVyxHQUFHO0FBQ2hCLFlBQVFaLFFBQVEsQ0FBQ2EsS0FBVCxDQUFlQyxRQUFmLEVBRFE7QUFFaEIsYUFBU2QsUUFBUSxDQUFDYSxLQUFULENBQWVDLFFBQWYsRUFGTztBQUdoQixZQUFRQyxJQUFJLEVBSEk7QUFJaEIsd0JBQW9CO0FBSkosR0FBcEI7QUFPQSxRQUFNVCxRQUFRLEdBQUcsSUFBSVQsUUFBSixDQUFhZSxXQUFiLENBQWpCO0FBQ0EsUUFBTU4sUUFBUSxDQUFDRSxJQUFULEVBQU47QUFDQSxRQUFNRixRQUFRLENBQUNhLE1BQVQsRUFBTjtBQUVBLFNBQU9iLFFBQVEsQ0FBQ1UsR0FBVCxDQUFhQyxRQUFiLEVBQVA7QUFDSCxDQWJEOztBQWVBLE1BQU1HLGFBQWEsR0FBRyxZQUFZO0FBQzlCLFFBQU1DLE1BQU0sR0FBRyxNQUFNQyxJQUFJLENBQUNDLElBQUwsQ0FBVSxFQUFWLENBQXJCO0FBQ0EsU0FBT0YsTUFBUDtBQUNILENBSEQ7O0FBS0FHLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQjtBQUNaeEIsRUFBQUEsZ0JBRFk7QUFDTVUsRUFBQUEsYUFETjtBQUNxQk8sRUFBQUEsZ0JBRHJCO0FBQ3NDRSxFQUFBQTtBQUR0QyxDQUFqQiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IFNjaGVkdWxlID0gcmVxdWlyZSgnLi4vLi4vbW9kZWxzL3NjaGVkdWxlcycpO1xyXG5jb25zdCBtb2NrU2NoZWR1bGUgPSByZXF1aXJlKCcuLi9tb2NrRGF0YS9zY2hlZHVsZS5kYXRhJyk7XHJcbmNvbnN0IG1vbmdvb3NlID0gcmVxdWlyZSgnbW9uZ29vc2UnKTtcclxuXHJcblxyXG5jb25zdCBhZGRTY2hlZHVsZXNUb0RiID0gYXN5bmMgKGlkKSA9PiB7XHJcbiAgICBjb25zdCBzY2hlZHVsZXM9IGF3YWl0IG1vY2tTY2hlZHVsZShpZCk7XHJcbiAgICBjb25zdCBzY2hlZHVsZU9iamVjdHMgPSBzY2hlZHVsZXNcclxuICAgICAgICAubWFwKHNjaGVkdWxlID0+IG5ldyBTY2hlZHVsZShzY2hlZHVsZSkpO1xyXG4gICAgY29uc3QgcHJvbWlzZUFycmF5ID0gc2NoZWR1bGVPYmplY3RzLm1hcChzY2hlZHVsZSA9PiBzY2hlZHVsZS5zYXZlKCkpO1xyXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZUFycmF5KTtcclxufVxyXG5cclxuY29uc3QgZ2V0RXhpc3RpbmdJZCA9IGFzeW5jICgpID0+IHtcclxuICAgIGNvbnN0IG5ld1NjaGVkdWxlID0ge1xyXG4gICAgICAgIFwidXNlclwiOiBtb25nb29zZS5UeXBlcy5PYmplY3RJZCgpLFxyXG4gICAgICAgIFwicGxhY2VcIjogbW9uZ29vc2UuVHlwZXMuT2JqZWN0SWQoKSxcclxuICAgICAgICBcImRhdGVcIjogRGF0ZSgpLFxyXG4gICAgICAgIFwidHJhdmVsbGluZ01ldGhvZFwiOiAnQ2FyJ1xyXG4gICAgXHJcbiAgICB9O1xyXG4gICAgY29uc3Qgc2NoZWR1bGUgPSBuZXcgU2NoZWR1bGUobmV3U2NoZWR1bGUpO1xyXG4gICAgYXdhaXQgc2NoZWR1bGUuc2F2ZSgpO1xyXG5cclxuICAgIHJldHVybiBzY2hlZHVsZS5faWQudG9TdHJpbmcoKTtcclxufVxyXG5cclxuY29uc3QgZ2V0Tm9uRXhpc3RpbmdJZCA9IGFzeW5jICgpID0+IHtcclxuICAgIGNvbnN0IG5ld1NjaGVkdWxlID0ge1xyXG4gICAgICAgIFwidXNlclwiOiBtb25nb29zZS5UeXBlcy5PYmplY3RJZCgpLFxyXG4gICAgICAgIFwicGxhY2VcIjogbW9uZ29vc2UuVHlwZXMuT2JqZWN0SWQoKSxcclxuICAgICAgICBcImRhdGVcIjogRGF0ZSgpLFxyXG4gICAgICAgIFwidHJhdmVsbGluZ01ldGhvZFwiOiAnQ2FyJ1xyXG4gICAgXHJcbiAgICB9O1xyXG4gICAgY29uc3Qgc2NoZWR1bGUgPSBuZXcgU2NoZWR1bGUobmV3U2NoZWR1bGUpO1xyXG4gICAgYXdhaXQgc2NoZWR1bGUuc2F2ZSgpO1xyXG4gICAgYXdhaXQgc2NoZWR1bGUucmVtb3ZlKCk7XHJcblxyXG4gICAgcmV0dXJuIHNjaGVkdWxlLl9pZC50b1N0cmluZygpO1xyXG59XHJcblxyXG5jb25zdCBzY2hlZHVsZXNJbkRiID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgY29uc3QgcGxhY2VzID0gYXdhaXQgTm90ZS5maW5kKHt9KTtcclxuICAgIHJldHVybiBwbGFjZXM7XHJcbn1cclxuXHJcbm1vZHVsZS5leHBvcnRzID0ge1xyXG4gICAgIGFkZFNjaGVkdWxlc1RvRGIsIGdldEV4aXN0aW5nSWQsIGdldE5vbkV4aXN0aW5nSWQsc2NoZWR1bGVzSW5EYlxyXG59Il19\",\"originalCode\":\"const Schedule = require('../../models/schedules');\\r\\nconst mockSchedule = require('../mockData/schedule.data');\\r\\nconst mongoose = require('mongoose');\\r\\n\\r\\n\\r\\nconst addSchedulesToDb = async (id) => {\\r\\n const schedules= await mockSchedule(id);\\r\\n const scheduleObjects = schedules\\r\\n .map(schedule => new Schedule(schedule));\\r\\n const promiseArray = scheduleObjects.map(schedule => schedule.save());\\r\\n await Promise.all(promiseArray);\\r\\n}\\r\\n\\r\\nconst getExistingId = async () => {\\r\\n const newSchedule = {\\r\\n \\\"user\\\": mongoose.Types.ObjectId(),\\r\\n \\\"place\\\": mongoose.Types.ObjectId(),\\r\\n \\\"date\\\": Date(),\\r\\n \\\"travellingMethod\\\": 'Car'\\r\\n \\r\\n };\\r\\n const schedule = new Schedule(newSchedule);\\r\\n await schedule.save();\\r\\n\\r\\n return schedule._id.toString();\\r\\n}\\r\\n\\r\\nconst getNonExistingId = async () => {\\r\\n const newSchedule = {\\r\\n \\\"user\\\": mongoose.Types.ObjectId(),\\r\\n \\\"place\\\": mongoose.Types.ObjectId(),\\r\\n \\\"date\\\": Date(),\\r\\n \\\"travellingMethod\\\": 'Car'\\r\\n \\r\\n };\\r\\n const schedule = new Schedule(newSchedule);\\r\\n await schedule.save();\\r\\n await schedule.remove();\\r\\n\\r\\n return schedule._id.toString();\\r\\n}\\r\\n\\r\\nconst schedulesInDb = async () => {\\r\\n const places = await Note.find({});\\r\\n return places;\\r\\n}\\r\\n\\r\\nmodule.exports = {\\r\\n addSchedulesToDb, getExistingId, getNonExistingId,schedulesInDb\\r\\n}\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/fd/schedule_helper_fdff53486ff035193f245be6b39c41e9.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"3704\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\tests\\\\helpers\\\\schedule_helper.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":5724,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":5721,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"addSchedulesToDb\",\"ranges\":[{\"startOffset\":266,\"endOffset\":510,\"count\":3}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":364,\"endOffset\":398,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":444,\"endOffset\":471,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"getExistingId\",\"ranges\":[{\"startOffset\":535,\"endOffset\":813,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"getNonExistingId\",\"ranges\":[{\"startOffset\":841,\"endOffset\":1146,\"count\":1}],\"isBlockCoverage\":true},{\"functionName\":\"schedulesInDb\",\"ranges\":[{\"startOffset\":1171,\"endOffset\":1241,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const mongoose = require('mongoose');\\n\\nconst {\\n getExistingId\\n} = require('../helpers/user_helper');\\n\\nconst schedule = async (id = null) => {\\n return [{\\n \\\"user\\\": mongoose.Types.ObjectId(id),\\n \\\"place\\\": mongoose.Types.ObjectId(),\\n \\\"date\\\": new Date(),\\n \\\"travellingMethod\\\": 'Bus'\\n }];\\n};\\n\\nmodule.exports = schedule;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNjaGVkdWxlLmRhdGEuanMiXSwibmFtZXMiOlsibW9uZ29vc2UiLCJyZXF1aXJlIiwiZ2V0RXhpc3RpbmdJZCIsInNjaGVkdWxlIiwiaWQiLCJUeXBlcyIsIk9iamVjdElkIiwiRGF0ZSIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLFFBQVEsR0FBR0MsT0FBTyxDQUFDLFVBQUQsQ0FBeEI7O0FBQ0EsTUFBTTtBQUFDQyxFQUFBQTtBQUFELElBQWtCRCxPQUFPLENBQUMsd0JBQUQsQ0FBL0I7O0FBRUEsTUFBTUUsUUFBUSxHQUFHLE9BQU1DLEVBQUUsR0FBRyxJQUFYLEtBQWtCO0FBQy9CLFNBQU8sQ0FBQztBQUNKLFlBQVFKLFFBQVEsQ0FBQ0ssS0FBVCxDQUFlQyxRQUFmLENBQXdCRixFQUF4QixDQURKO0FBRUosYUFBU0osUUFBUSxDQUFDSyxLQUFULENBQWVDLFFBQWYsRUFGTDtBQUdKLFlBQVEsSUFBSUMsSUFBSixFQUhKO0FBSUosd0JBQW9CO0FBSmhCLEdBQUQsQ0FBUDtBQU9ILENBUkQ7O0FBV0FDLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQk4sUUFBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBtb25nb29zZSA9IHJlcXVpcmUoJ21vbmdvb3NlJyk7XHJcbmNvbnN0IHtnZXRFeGlzdGluZ0lkfSA9IHJlcXVpcmUoJy4uL2hlbHBlcnMvdXNlcl9oZWxwZXInKTtcclxuXHJcbmNvbnN0IHNjaGVkdWxlID0gYXN5bmMoaWQgPSBudWxsKT0+e1xyXG4gICAgcmV0dXJuIFt7XHJcbiAgICAgICAgXCJ1c2VyXCI6IG1vbmdvb3NlLlR5cGVzLk9iamVjdElkKGlkKSxcclxuICAgICAgICBcInBsYWNlXCI6IG1vbmdvb3NlLlR5cGVzLk9iamVjdElkKCksXHJcbiAgICAgICAgXCJkYXRlXCI6IG5ldyBEYXRlKCksXHJcbiAgICAgICAgXCJ0cmF2ZWxsaW5nTWV0aG9kXCI6ICdCdXMnXHJcbiAgICBcclxuICAgIH1dO1xyXG59XHJcblxyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBzY2hlZHVsZTsiXX0=\",\"originalCode\":\"const mongoose = require('mongoose');\\r\\nconst {getExistingId} = require('../helpers/user_helper');\\r\\n\\r\\nconst schedule = async(id = null)=>{\\r\\n return [{\\r\\n \\\"user\\\": mongoose.Types.ObjectId(id),\\r\\n \\\"place\\\": mongoose.Types.ObjectId(),\\r\\n \\\"date\\\": new Date(),\\r\\n \\\"travellingMethod\\\": 'Bus'\\r\\n \\r\\n }];\\r\\n}\\r\\n\\r\\n\\r\\nmodule.exports = schedule;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/ac/scheduledata_ac56f896a1cf3b724acb9bae429c45f0.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"3705\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\tests\\\\mockData\\\\schedule.data.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":1745,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":1742,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"schedule\",\"ranges\":[{\"startOffset\":209,\"endOffset\":386,\"count\":1}],\"isBlockCoverage\":false}]}}]},{\"leaks\":false,\"numFailingTests\":0,\"numPassingTests\":3,\"numPendingTests\":0,\"numTodoTests\":0,\"openHandles\":[],\"perfStats\":{\"end\":1615204326769,\"runtime\":1509,\"slow\":false,\"start\":1615204325260},\"skipped\":false,\"snapshot\":{\"added\":0,\"fileDeleted\":false,\"matched\":0,\"unchecked\":0,\"unmatched\":0,\"updated\":0,\"uncheckedKeys\":[]},\"testFilePath\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\tests\\\\schedule-userId.test.js\",\"testResults\":[{\"ancestorTitles\":[\"GET /schedule/:visitingPlaceId\"],\"duration\":9,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"GET /schedule/:visitingPlaceId requires Authorization - 401\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"requires Authorization - 401\"},{\"ancestorTitles\":[\"GET /schedule/:visitingPlaceId\"],\"duration\":23,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"GET /schedule/:visitingPlaceId with Authorization - 200\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"with Authorization - 200\"},{\"ancestorTitles\":[\"GET /schedule/:visitingPlaceId\"],\"duration\":15,\"failureDetails\":[],\"failureMessages\":[],\"fullName\":\"GET /schedule/:visitingPlaceId invalid user id - 404\",\"location\":null,\"numPassingAsserts\":0,\"status\":\"passed\",\"title\":\"invalid user id - 404\"}],\"failureMessage\":null,\"v8Coverage\":[{\"codeTransformResult\":{\"code\":\"var createError = require('http-errors');\\n\\nvar express = require('express');\\n\\nconst cors = require('cors');\\n\\nvar path = require('path');\\n\\nconst bodyParser = require('body-parser');\\n\\nconst expressValidator = require('express-validator');\\n\\nvar session = require('express-session');\\n\\nvar FileStore = require('session-file-store')(session);\\n\\nvar cookieParser = require('cookie-parser');\\n\\nvar logger = require('morgan');\\n\\nvar passport = require('passport');\\n\\nconst mongoose = require('mongoose');\\n\\nrequire('dotenv').config();\\n\\nvar userRouter = require('./routes/userRouter');\\n\\nvar employeeRouter = require('./routes/employeeRouter');\\n\\nvar placeRouter = require('./routes/placeRouter');\\n\\nvar scheduleRouter = require('./routes/scheduleRouter');\\n\\nvar touristRouter = require('./routes/touristRouter');\\n\\nvar dashboardRouter = require('./routes/dashboardRouter');\\n\\nvar app = express(); // view engine setup\\n\\napp.set('views', path.join(__dirname, 'views'));\\napp.set('view engine', 'jade');\\napp.use(cors());\\napp.use(passport.initialize());\\napp.use(bodyParser.json());\\napp.use(cookieParser('the-immortal-coils')); // app.use(logger('dev'));\\n\\napp.use(express.json());\\napp.use(express.urlencoded({\\n extended: false\\n}));\\napp.use(cookieParser()); // app.use(express.static('build'));\\n\\napp.use(express.static(path.join(__dirname, 'build')));\\nvar url = process.env.mongoUrl;\\n\\nif (process.env.NODE_ENV === 'test') {\\n url = process.env.testMongoUrl;\\n}\\n\\nmongoose.connect(url, {\\n useNewUrlParser: true,\\n useCreateIndex: true,\\n useUnifiedTopology: true\\n}).then(db => {}, err => {\\n if (err) {\\n console.log('👺 Error connecting to MongoDB');\\n } else {\\n console.log('✅ Connected to MongoDB');\\n }\\n});\\napp.use('/users', userRouter);\\napp.use('/employees', employeeRouter);\\napp.use('/places', placeRouter);\\napp.use('/schedules', scheduleRouter);\\napp.use('/tourists', touristRouter);\\napp.use('/dashboard', dashboardRouter); // catch 404 and forward to error handler\\n\\napp.use(function (req, res, next) {\\n next(createError(404));\\n}); // error handler\\n\\napp.use(function (err, req, res, next) {\\n // set locals, only providing error in development\\n res.locals.message = err.message;\\n res.locals.error = req.app.get('env') === 'development' ? err : {}; // render the error page\\n\\n res.status(err.status || 500);\\n res.render('error');\\n});\\nmodule.exports = app;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC5qcyJdLCJuYW1lcyI6WyJjcmVhdGVFcnJvciIsInJlcXVpcmUiLCJleHByZXNzIiwiY29ycyIsInBhdGgiLCJib2R5UGFyc2VyIiwiZXhwcmVzc1ZhbGlkYXRvciIsInNlc3Npb24iLCJGaWxlU3RvcmUiLCJjb29raWVQYXJzZXIiLCJsb2dnZXIiLCJwYXNzcG9ydCIsIm1vbmdvb3NlIiwiY29uZmlnIiwidXNlclJvdXRlciIsImVtcGxveWVlUm91dGVyIiwicGxhY2VSb3V0ZXIiLCJzY2hlZHVsZVJvdXRlciIsInRvdXJpc3RSb3V0ZXIiLCJkYXNoYm9hcmRSb3V0ZXIiLCJhcHAiLCJzZXQiLCJqb2luIiwiX19kaXJuYW1lIiwidXNlIiwiaW5pdGlhbGl6ZSIsImpzb24iLCJ1cmxlbmNvZGVkIiwiZXh0ZW5kZWQiLCJzdGF0aWMiLCJ1cmwiLCJwcm9jZXNzIiwiZW52IiwibW9uZ29VcmwiLCJOT0RFX0VOViIsInRlc3RNb25nb1VybCIsImNvbm5lY3QiLCJ1c2VOZXdVcmxQYXJzZXIiLCJ1c2VDcmVhdGVJbmRleCIsInVzZVVuaWZpZWRUb3BvbG9neSIsInRoZW4iLCJkYiIsImVyciIsImNvbnNvbGUiLCJsb2ciLCJyZXEiLCJyZXMiLCJuZXh0IiwibG9jYWxzIiwibWVzc2FnZSIsImVycm9yIiwiZ2V0Iiwic3RhdHVzIiwicmVuZGVyIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsSUFBSUEsV0FBVyxHQUFHQyxPQUFPLENBQUMsYUFBRCxDQUF6Qjs7QUFDQSxJQUFJQyxPQUFPLEdBQUdELE9BQU8sQ0FBQyxTQUFELENBQXJCOztBQUNBLE1BQU1FLElBQUksR0FBR0YsT0FBTyxDQUFDLE1BQUQsQ0FBcEI7O0FBQ0EsSUFBSUcsSUFBSSxHQUFHSCxPQUFPLENBQUMsTUFBRCxDQUFsQjs7QUFDQSxNQUFNSSxVQUFVLEdBQUdKLE9BQU8sQ0FBQyxhQUFELENBQTFCOztBQUNBLE1BQU1LLGdCQUFnQixHQUFHTCxPQUFPLENBQUMsbUJBQUQsQ0FBaEM7O0FBQ0EsSUFBSU0sT0FBTyxHQUFHTixPQUFPLENBQUMsaUJBQUQsQ0FBckI7O0FBQ0EsSUFBSU8sU0FBUyxHQUFHUCxPQUFPLENBQUMsb0JBQUQsQ0FBUCxDQUE4Qk0sT0FBOUIsQ0FBaEI7O0FBQ0EsSUFBSUUsWUFBWSxHQUFHUixPQUFPLENBQUMsZUFBRCxDQUExQjs7QUFDQSxJQUFJUyxNQUFNLEdBQUdULE9BQU8sQ0FBQyxRQUFELENBQXBCOztBQUNBLElBQUlVLFFBQVEsR0FBR1YsT0FBTyxDQUFDLFVBQUQsQ0FBdEI7O0FBQ0EsTUFBTVcsUUFBUSxHQUFHWCxPQUFPLENBQUMsVUFBRCxDQUF4Qjs7QUFDQUEsT0FBTyxDQUFDLFFBQUQsQ0FBUCxDQUFrQlksTUFBbEI7O0FBRUEsSUFBSUMsVUFBVSxHQUFHYixPQUFPLENBQUMscUJBQUQsQ0FBeEI7O0FBQ0EsSUFBSWMsY0FBYyxHQUFHZCxPQUFPLENBQUMseUJBQUQsQ0FBNUI7O0FBQ0EsSUFBSWUsV0FBVyxHQUFHZixPQUFPLENBQUMsc0JBQUQsQ0FBekI7O0FBQ0EsSUFBSWdCLGNBQWMsR0FBR2hCLE9BQU8sQ0FBQyx5QkFBRCxDQUE1Qjs7QUFDQSxJQUFJaUIsYUFBYSxHQUFHakIsT0FBTyxDQUFDLHdCQUFELENBQTNCOztBQUNBLElBQUlrQixlQUFlLEdBQUdsQixPQUFPLENBQUMsMEJBQUQsQ0FBN0I7O0FBRUEsSUFBSW1CLEdBQUcsR0FBR2xCLE9BQU8sRUFBakIsQyxDQUVBOztBQUNBa0IsR0FBRyxDQUFDQyxHQUFKLENBQVEsT0FBUixFQUFpQmpCLElBQUksQ0FBQ2tCLElBQUwsQ0FBVUMsU0FBVixFQUFxQixPQUFyQixDQUFqQjtBQUNBSCxHQUFHLENBQUNDLEdBQUosQ0FBUSxhQUFSLEVBQXVCLE1BQXZCO0FBQ0FELEdBQUcsQ0FBQ0ksR0FBSixDQUFRckIsSUFBSSxFQUFaO0FBQ0FpQixHQUFHLENBQUNJLEdBQUosQ0FBUWIsUUFBUSxDQUFDYyxVQUFULEVBQVI7QUFFQUwsR0FBRyxDQUFDSSxHQUFKLENBQVFuQixVQUFVLENBQUNxQixJQUFYLEVBQVI7QUFFQU4sR0FBRyxDQUFDSSxHQUFKLENBQVFmLFlBQVksQ0FBQyxvQkFBRCxDQUFwQixFLENBQ0E7O0FBQ0FXLEdBQUcsQ0FBQ0ksR0FBSixDQUFRdEIsT0FBTyxDQUFDd0IsSUFBUixFQUFSO0FBQ0FOLEdBQUcsQ0FBQ0ksR0FBSixDQUFRdEIsT0FBTyxDQUFDeUIsVUFBUixDQUFtQjtBQUFFQyxFQUFBQSxRQUFRLEVBQUU7QUFBWixDQUFuQixDQUFSO0FBQ0FSLEdBQUcsQ0FBQ0ksR0FBSixDQUFRZixZQUFZLEVBQXBCLEUsQ0FDQTs7QUFDQVcsR0FBRyxDQUFDSSxHQUFKLENBQVF0QixPQUFPLENBQUMyQixNQUFSLENBQWV6QixJQUFJLENBQUNrQixJQUFMLENBQVVDLFNBQVYsRUFBcUIsT0FBckIsQ0FBZixDQUFSO0FBRUEsSUFBSU8sR0FBRyxHQUFHQyxPQUFPLENBQUNDLEdBQVIsQ0FBWUMsUUFBdEI7O0FBQ0EsSUFBSUYsT0FBTyxDQUFDQyxHQUFSLENBQVlFLFFBQVosS0FBeUIsTUFBN0IsRUFBcUM7QUFDbkNKLEVBQUFBLEdBQUcsR0FBR0MsT0FBTyxDQUFDQyxHQUFSLENBQVlHLFlBQWxCO0FBQ0Q7O0FBQ0R2QixRQUFRLENBQUN3QixPQUFULENBQWlCTixHQUFqQixFQUFzQjtBQUFFTyxFQUFBQSxlQUFlLEVBQUUsSUFBbkI7QUFBeUJDLEVBQUFBLGNBQWMsRUFBRSxJQUF6QztBQUErQ0MsRUFBQUEsa0JBQWtCLEVBQUU7QUFBbkUsQ0FBdEIsRUFBaUdDLElBQWpHLENBQXVHQyxFQUFELElBQVEsQ0FDN0csQ0FERCxFQUNJQyxHQUFELElBQVM7QUFDVixNQUFJQSxHQUFKLEVBQVM7QUFDUEMsSUFBQUEsT0FBTyxDQUFDQyxHQUFSLENBQVksaUNBQVo7QUFDRCxHQUZELE1BRU87QUFDTEQsSUFBQUEsT0FBTyxDQUFDQyxHQUFSLENBQVkseUJBQVo7QUFDRDtBQUNGLENBUEQ7QUFTQXhCLEdBQUcsQ0FBQ0ksR0FBSixDQUFRLFFBQVIsRUFBa0JWLFVBQWxCO0FBQ0FNLEdBQUcsQ0FBQ0ksR0FBSixDQUFRLFlBQVIsRUFBc0JULGNBQXRCO0FBQ0FLLEdBQUcsQ0FBQ0ksR0FBSixDQUFRLFNBQVIsRUFBbUJSLFdBQW5CO0FBQ0FJLEdBQUcsQ0FBQ0ksR0FBSixDQUFRLFlBQVIsRUFBc0JQLGNBQXRCO0FBQ0FHLEdBQUcsQ0FBQ0ksR0FBSixDQUFRLFdBQVIsRUFBcUJOLGFBQXJCO0FBQ0FFLEdBQUcsQ0FBQ0ksR0FBSixDQUFRLFlBQVIsRUFBc0JMLGVBQXRCLEUsQ0FFQTs7QUFDQUMsR0FBRyxDQUFDSSxHQUFKLENBQVEsVUFBVXFCLEdBQVYsRUFBZUMsR0FBZixFQUFvQkMsSUFBcEIsRUFBMEI7QUFDaENBLEVBQUFBLElBQUksQ0FBQy9DLFdBQVcsQ0FBQyxHQUFELENBQVosQ0FBSjtBQUNELENBRkQsRSxDQUlBOztBQUNBb0IsR0FBRyxDQUFDSSxHQUFKLENBQVEsVUFBVWtCLEdBQVYsRUFBZUcsR0FBZixFQUFvQkMsR0FBcEIsRUFBeUJDLElBQXpCLEVBQStCO0FBQ3JDO0FBQ0FELEVBQUFBLEdBQUcsQ0FBQ0UsTUFBSixDQUFXQyxPQUFYLEdBQXFCUCxHQUFHLENBQUNPLE9BQXpCO0FBQ0FILEVBQUFBLEdBQUcsQ0FBQ0UsTUFBSixDQUFXRSxLQUFYLEdBQW1CTCxHQUFHLENBQUN6QixHQUFKLENBQVErQixHQUFSLENBQVksS0FBWixNQUF1QixhQUF2QixHQUF1Q1QsR0FBdkMsR0FBNkMsRUFBaEUsQ0FIcUMsQ0FLckM7O0FBQ0FJLEVBQUFBLEdBQUcsQ0FBQ00sTUFBSixDQUFXVixHQUFHLENBQUNVLE1BQUosSUFBYyxHQUF6QjtBQUNBTixFQUFBQSxHQUFHLENBQUNPLE1BQUosQ0FBVyxPQUFYO0FBQ0QsQ0FSRDtBQVVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUJuQyxHQUFqQiIsInNvdXJjZXNDb250ZW50IjpbInZhciBjcmVhdGVFcnJvciA9IHJlcXVpcmUoJ2h0dHAtZXJyb3JzJyk7XHJcbnZhciBleHByZXNzID0gcmVxdWlyZSgnZXhwcmVzcycpO1xyXG5jb25zdCBjb3JzID0gcmVxdWlyZSgnY29ycycpO1xyXG52YXIgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcclxuY29uc3QgYm9keVBhcnNlciA9IHJlcXVpcmUoJ2JvZHktcGFyc2VyJylcclxuY29uc3QgZXhwcmVzc1ZhbGlkYXRvciA9IHJlcXVpcmUoJ2V4cHJlc3MtdmFsaWRhdG9yJylcclxudmFyIHNlc3Npb24gPSByZXF1aXJlKCdleHByZXNzLXNlc3Npb24nKTtcclxudmFyIEZpbGVTdG9yZSA9IHJlcXVpcmUoJ3Nlc3Npb24tZmlsZS1zdG9yZScpKHNlc3Npb24pO1xyXG52YXIgY29va2llUGFyc2VyID0gcmVxdWlyZSgnY29va2llLXBhcnNlcicpO1xyXG52YXIgbG9nZ2VyID0gcmVxdWlyZSgnbW9yZ2FuJyk7XHJcbnZhciBwYXNzcG9ydCA9IHJlcXVpcmUoJ3Bhc3Nwb3J0Jyk7XHJcbmNvbnN0IG1vbmdvb3NlID0gcmVxdWlyZSgnbW9uZ29vc2UnKTtcclxucmVxdWlyZSgnZG90ZW52JykuY29uZmlnKClcclxuXHJcbnZhciB1c2VyUm91dGVyID0gcmVxdWlyZSgnLi9yb3V0ZXMvdXNlclJvdXRlcicpO1xyXG52YXIgZW1wbG95ZWVSb3V0ZXIgPSByZXF1aXJlKCcuL3JvdXRlcy9lbXBsb3llZVJvdXRlcicpO1xyXG52YXIgcGxhY2VSb3V0ZXIgPSByZXF1aXJlKCcuL3JvdXRlcy9wbGFjZVJvdXRlcicpO1xyXG52YXIgc2NoZWR1bGVSb3V0ZXIgPSByZXF1aXJlKCcuL3JvdXRlcy9zY2hlZHVsZVJvdXRlcicpO1xyXG52YXIgdG91cmlzdFJvdXRlciA9IHJlcXVpcmUoJy4vcm91dGVzL3RvdXJpc3RSb3V0ZXInKTtcclxudmFyIGRhc2hib2FyZFJvdXRlciA9IHJlcXVpcmUoJy4vcm91dGVzL2Rhc2hib2FyZFJvdXRlcicpO1xyXG5cclxudmFyIGFwcCA9IGV4cHJlc3MoKTtcclxuXHJcbi8vIHZpZXcgZW5naW5lIHNldHVwXHJcbmFwcC5zZXQoJ3ZpZXdzJywgcGF0aC5qb2luKF9fZGlybmFtZSwgJ3ZpZXdzJykpO1xyXG5hcHAuc2V0KCd2aWV3IGVuZ2luZScsICdqYWRlJyk7XHJcbmFwcC51c2UoY29ycygpKTtcclxuYXBwLnVzZShwYXNzcG9ydC5pbml0aWFsaXplKCkpO1xyXG5cclxuYXBwLnVzZShib2R5UGFyc2VyLmpzb24oKSk7XHJcblxyXG5hcHAudXNlKGNvb2tpZVBhcnNlcigndGhlLWltbW9ydGFsLWNvaWxzJykpO1xyXG4vLyBhcHAudXNlKGxvZ2dlcignZGV2JykpO1xyXG5hcHAudXNlKGV4cHJlc3MuanNvbigpKTtcclxuYXBwLnVzZShleHByZXNzLnVybGVuY29kZWQoeyBleHRlbmRlZDogZmFsc2UgfSkpO1xyXG5hcHAudXNlKGNvb2tpZVBhcnNlcigpKTtcclxuLy8gYXBwLnVzZShleHByZXNzLnN0YXRpYygnYnVpbGQnKSk7XHJcbmFwcC51c2UoZXhwcmVzcy5zdGF0aWMocGF0aC5qb2luKF9fZGlybmFtZSwgJ2J1aWxkJykpKTtcclxuXHJcbnZhciB1cmwgPSBwcm9jZXNzLmVudi5tb25nb1VybDtcclxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAndGVzdCcpIHtcclxuICB1cmwgPSBwcm9jZXNzLmVudi50ZXN0TW9uZ29Vcmw7XHJcbn1cclxubW9uZ29vc2UuY29ubmVjdCh1cmwsIHsgdXNlTmV3VXJsUGFyc2VyOiB0cnVlLCB1c2VDcmVhdGVJbmRleDogdHJ1ZSwgdXNlVW5pZmllZFRvcG9sb2d5OiB0cnVlIH0pLnRoZW4oKGRiKSA9PiB7XHJcbn0sIChlcnIpID0+IHtcclxuICBpZiAoZXJyKSB7XHJcbiAgICBjb25zb2xlLmxvZygn8J+RuiAgRXJyb3IgY29ubmVjdGluZyB0byBNb25nb0RCJyk7XHJcbiAgfSBlbHNlIHtcclxuICAgIGNvbnNvbGUubG9nKCfinIUgIENvbm5lY3RlZCB0byBNb25nb0RCJyk7XHJcbiAgfVxyXG59KTtcclxuXHJcbmFwcC51c2UoJy91c2VycycsIHVzZXJSb3V0ZXIpO1xyXG5hcHAudXNlKCcvZW1wbG95ZWVzJywgZW1wbG95ZWVSb3V0ZXIpO1xyXG5hcHAudXNlKCcvcGxhY2VzJywgcGxhY2VSb3V0ZXIpO1xyXG5hcHAudXNlKCcvc2NoZWR1bGVzJywgc2NoZWR1bGVSb3V0ZXIpO1xyXG5hcHAudXNlKCcvdG91cmlzdHMnLCB0b3VyaXN0Um91dGVyKTtcclxuYXBwLnVzZSgnL2Rhc2hib2FyZCcsIGRhc2hib2FyZFJvdXRlcik7XHJcblxyXG4vLyBjYXRjaCA0MDQgYW5kIGZvcndhcmQgdG8gZXJyb3IgaGFuZGxlclxyXG5hcHAudXNlKGZ1bmN0aW9uIChyZXEsIHJlcywgbmV4dCkge1xyXG4gIG5leHQoY3JlYXRlRXJyb3IoNDA0KSk7XHJcbn0pO1xyXG5cclxuLy8gZXJyb3IgaGFuZGxlclxyXG5hcHAudXNlKGZ1bmN0aW9uIChlcnIsIHJlcSwgcmVzLCBuZXh0KSB7XHJcbiAgLy8gc2V0IGxvY2Fscywgb25seSBwcm92aWRpbmcgZXJyb3IgaW4gZGV2ZWxvcG1lbnRcclxuICByZXMubG9jYWxzLm1lc3NhZ2UgPSBlcnIubWVzc2FnZTtcclxuICByZXMubG9jYWxzLmVycm9yID0gcmVxLmFwcC5nZXQoJ2VudicpID09PSAnZGV2ZWxvcG1lbnQnID8gZXJyIDoge307XHJcblxyXG4gIC8vIHJlbmRlciB0aGUgZXJyb3IgcGFnZVxyXG4gIHJlcy5zdGF0dXMoZXJyLnN0YXR1cyB8fCA1MDApO1xyXG4gIHJlcy5yZW5kZXIoJ2Vycm9yJyk7XHJcbn0pO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBhcHA7XHJcbiJdfQ==\",\"originalCode\":\"var createError = require('http-errors');\\r\\nvar express = require('express');\\r\\nconst cors = require('cors');\\r\\nvar path = require('path');\\r\\nconst bodyParser = require('body-parser')\\r\\nconst expressValidator = require('express-validator')\\r\\nvar session = require('express-session');\\r\\nvar FileStore = require('session-file-store')(session);\\r\\nvar cookieParser = require('cookie-parser');\\r\\nvar logger = require('morgan');\\r\\nvar passport = require('passport');\\r\\nconst mongoose = require('mongoose');\\r\\nrequire('dotenv').config()\\r\\n\\r\\nvar userRouter = require('./routes/userRouter');\\r\\nvar employeeRouter = require('./routes/employeeRouter');\\r\\nvar placeRouter = require('./routes/placeRouter');\\r\\nvar scheduleRouter = require('./routes/scheduleRouter');\\r\\nvar touristRouter = require('./routes/touristRouter');\\r\\nvar dashboardRouter = require('./routes/dashboardRouter');\\r\\n\\r\\nvar app = express();\\r\\n\\r\\n// view engine setup\\r\\napp.set('views', path.join(__dirname, 'views'));\\r\\napp.set('view engine', 'jade');\\r\\napp.use(cors());\\r\\napp.use(passport.initialize());\\r\\n\\r\\napp.use(bodyParser.json());\\r\\n\\r\\napp.use(cookieParser('the-immortal-coils'));\\r\\n// app.use(logger('dev'));\\r\\napp.use(express.json());\\r\\napp.use(express.urlencoded({ extended: false }));\\r\\napp.use(cookieParser());\\r\\n// app.use(express.static('build'));\\r\\napp.use(express.static(path.join(__dirname, 'build')));\\r\\n\\r\\nvar url = process.env.mongoUrl;\\r\\nif (process.env.NODE_ENV === 'test') {\\r\\n url = process.env.testMongoUrl;\\r\\n}\\r\\nmongoose.connect(url, { useNewUrlParser: true, useCreateIndex: true, useUnifiedTopology: true }).then((db) => {\\r\\n}, (err) => {\\r\\n if (err) {\\r\\n console.log('👺 Error connecting to MongoDB');\\r\\n } else {\\r\\n console.log('✅ Connected to MongoDB');\\r\\n }\\r\\n});\\r\\n\\r\\napp.use('/users', userRouter);\\r\\napp.use('/employees', employeeRouter);\\r\\napp.use('/places', placeRouter);\\r\\napp.use('/schedules', scheduleRouter);\\r\\napp.use('/tourists', touristRouter);\\r\\napp.use('/dashboard', dashboardRouter);\\r\\n\\r\\n// catch 404 and forward to error handler\\r\\napp.use(function (req, res, next) {\\r\\n next(createError(404));\\r\\n});\\r\\n\\r\\n// error handler\\r\\napp.use(function (err, req, res, next) {\\r\\n // set locals, only providing error in development\\r\\n res.locals.message = err.message;\\r\\n res.locals.error = req.app.get('env') === 'development' ? err : {};\\r\\n\\r\\n // render the error page\\r\\n res.status(err.status || 500);\\r\\n res.render('error');\\r\\n});\\r\\n\\r\\nmodule.exports = app;\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/01/app_010e21b7416079df77678cc6cb70a530.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"1596\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\app.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":10626,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":10623,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1632,\"endOffset\":1640,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1642,\"endOffset\":1776,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":2049,\"endOffset\":2104,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":2133,\"endOffset\":2408,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"var express = require('express');\\n\\nvar userRouter = express.Router();\\n\\nconst bodyParser = require('body-parser');\\n\\nvar upload = require('../controllers/upload');\\n\\nconst {\\n checkSchema\\n} = require('express-validator');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nvar validationRules = require('../middleware/validation');\\n\\nvar userController = require('../controllers/userController');\\n\\nconst cors = require('./cors');\\n\\nuserRouter.use(bodyParser.json());\\nuserRouter.options('*', cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n});\\nuserRouter.post('/signup/admin', cors.corsWithOptions, userController.signupAdmin);\\nuserRouter.post('/login', cors.corsWithOptions, userController.login);\\nuserRouter.post('/changepassoword/:id', authenticate.verifyUser, userController.changePassoword);\\nuserRouter.post(\\\"/updateprofilepicture/:id\\\", authenticate.verifyUser, upload.UploadUserImage);\\nuserRouter.get('/logout', authenticate.verifyUser, userController.logout);\\nmodule.exports = userRouter;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVzZXJSb3V0ZXIuanMiXSwibmFtZXMiOlsiZXhwcmVzcyIsInJlcXVpcmUiLCJ1c2VyUm91dGVyIiwiUm91dGVyIiwiYm9keVBhcnNlciIsInVwbG9hZCIsImNoZWNrU2NoZW1hIiwiYXV0aGVudGljYXRlIiwidmFsaWRhdGlvblJ1bGVzIiwidXNlckNvbnRyb2xsZXIiLCJjb3JzIiwidXNlIiwianNvbiIsIm9wdGlvbnMiLCJjb3JzV2l0aE9wdGlvbnMiLCJyZXEiLCJyZXMiLCJzZW5kU3RhdHVzIiwicG9zdCIsInNpZ251cEFkbWluIiwibG9naW4iLCJ2ZXJpZnlVc2VyIiwiY2hhbmdlUGFzc293b3JkIiwiVXBsb2FkVXNlckltYWdlIiwiZ2V0IiwibG9nb3V0IiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsSUFBSUEsT0FBTyxHQUFHQyxPQUFPLENBQUMsU0FBRCxDQUFyQjs7QUFDQSxJQUFJQyxVQUFVLEdBQUdGLE9BQU8sQ0FBQ0csTUFBUixFQUFqQjs7QUFFQSxNQUFNQyxVQUFVLEdBQUdILE9BQU8sQ0FBQyxhQUFELENBQTFCOztBQUNBLElBQUlJLE1BQU0sR0FBR0osT0FBTyxDQUFDLHVCQUFELENBQXBCOztBQUNBLE1BQU07QUFBRUssRUFBQUE7QUFBRixJQUFrQkwsT0FBTyxDQUFDLG1CQUFELENBQS9COztBQUNBLElBQUlNLFlBQVksR0FBR04sT0FBTyxDQUFDLDRCQUFELENBQTFCOztBQUNBLElBQUlPLGVBQWUsR0FBR1AsT0FBTyxDQUFDLDBCQUFELENBQTdCOztBQUNBLElBQUlRLGNBQWMsR0FBR1IsT0FBTyxDQUFDLCtCQUFELENBQTVCOztBQUNBLE1BQU1TLElBQUksR0FBR1QsT0FBTyxDQUFDLFFBQUQsQ0FBcEI7O0FBRUFDLFVBQVUsQ0FBQ1MsR0FBWCxDQUFlUCxVQUFVLENBQUNRLElBQVgsRUFBZjtBQUVBVixVQUFVLENBQUNXLE9BQVgsQ0FBbUIsR0FBbkIsRUFBd0JILElBQUksQ0FBQ0ksZUFBN0IsRUFBOEMsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEtBQWM7QUFBRUEsRUFBQUEsR0FBRyxDQUFDQyxVQUFKLENBQWUsR0FBZjtBQUFzQixDQUFwRjtBQUVBZixVQUFVLENBQUNnQixJQUFYLENBQWdCLGVBQWhCLEVBQWlDUixJQUFJLENBQUNJLGVBQXRDLEVBQXVETCxjQUFjLENBQUNVLFdBQXRFO0FBRUFqQixVQUFVLENBQUNnQixJQUFYLENBQWdCLFFBQWhCLEVBQTBCUixJQUFJLENBQUNJLGVBQS9CLEVBQWdETCxjQUFjLENBQUNXLEtBQS9EO0FBRUFsQixVQUFVLENBQUNnQixJQUFYLENBQWdCLHNCQUFoQixFQUF1Q1gsWUFBWSxDQUFDYyxVQUFwRCxFQUFnRVosY0FBYyxDQUFDYSxlQUEvRTtBQUVBcEIsVUFBVSxDQUFDZ0IsSUFBWCxDQUFnQiwyQkFBaEIsRUFBNENYLFlBQVksQ0FBQ2MsVUFBekQsRUFBcUVoQixNQUFNLENBQUNrQixlQUE1RTtBQUVBckIsVUFBVSxDQUFDc0IsR0FBWCxDQUFlLFNBQWYsRUFBeUJqQixZQUFZLENBQUNjLFVBQXRDLEVBQWtEWixjQUFjLENBQUNnQixNQUFqRTtBQUVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUJ6QixVQUFqQiIsInNvdXJjZXNDb250ZW50IjpbInZhciBleHByZXNzID0gcmVxdWlyZSgnZXhwcmVzcycpO1xyXG52YXIgdXNlclJvdXRlciA9IGV4cHJlc3MuUm91dGVyKCk7XHJcblxyXG5jb25zdCBib2R5UGFyc2VyID0gcmVxdWlyZSgnYm9keS1wYXJzZXInKTtcclxudmFyIHVwbG9hZCA9IHJlcXVpcmUoJy4uL2NvbnRyb2xsZXJzL3VwbG9hZCcpO1xyXG5jb25zdCB7IGNoZWNrU2NoZW1hIH0gPSByZXF1aXJlKCdleHByZXNzLXZhbGlkYXRvcicpO1xyXG52YXIgYXV0aGVudGljYXRlID0gcmVxdWlyZSgnLi4vbWlkZGxld2FyZS9hdXRoZW50aWNhdGUnKTtcclxudmFyIHZhbGlkYXRpb25SdWxlcyA9IHJlcXVpcmUoJy4uL21pZGRsZXdhcmUvdmFsaWRhdGlvbicpO1xyXG52YXIgdXNlckNvbnRyb2xsZXIgPSByZXF1aXJlKCcuLi9jb250cm9sbGVycy91c2VyQ29udHJvbGxlcicpO1xyXG5jb25zdCBjb3JzID0gcmVxdWlyZSgnLi9jb3JzJyk7XHJcblxyXG51c2VyUm91dGVyLnVzZShib2R5UGFyc2VyLmpzb24oKSk7XHJcblxyXG51c2VyUm91dGVyLm9wdGlvbnMoJyonLCBjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzKSA9PiB7IHJlcy5zZW5kU3RhdHVzKDIwMCk7IH0pXHJcblxyXG51c2VyUm91dGVyLnBvc3QoJy9zaWdudXAvYWRtaW4nLCBjb3JzLmNvcnNXaXRoT3B0aW9ucywgdXNlckNvbnRyb2xsZXIuc2lnbnVwQWRtaW4pO1xyXG5cclxudXNlclJvdXRlci5wb3N0KCcvbG9naW4nLCBjb3JzLmNvcnNXaXRoT3B0aW9ucywgdXNlckNvbnRyb2xsZXIubG9naW4pO1xyXG5cclxudXNlclJvdXRlci5wb3N0KCcvY2hhbmdlcGFzc293b3JkLzppZCcsYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIHVzZXJDb250cm9sbGVyLmNoYW5nZVBhc3Nvd29yZCk7XHJcblxyXG51c2VyUm91dGVyLnBvc3QoXCIvdXBkYXRlcHJvZmlsZXBpY3R1cmUvOmlkXCIsYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIHVwbG9hZC5VcGxvYWRVc2VySW1hZ2UpO1xyXG5cclxudXNlclJvdXRlci5nZXQoJy9sb2dvdXQnLGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCB1c2VyQ29udHJvbGxlci5sb2dvdXQpO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSB1c2VyUm91dGVyO1xyXG4iXX0=\",\"originalCode\":\"var express = require('express');\\r\\nvar userRouter = express.Router();\\r\\n\\r\\nconst bodyParser = require('body-parser');\\r\\nvar upload = require('../controllers/upload');\\r\\nconst { checkSchema } = require('express-validator');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\nvar validationRules = require('../middleware/validation');\\r\\nvar userController = require('../controllers/userController');\\r\\nconst cors = require('./cors');\\r\\n\\r\\nuserRouter.use(bodyParser.json());\\r\\n\\r\\nuserRouter.options('*', cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n\\r\\nuserRouter.post('/signup/admin', cors.corsWithOptions, userController.signupAdmin);\\r\\n\\r\\nuserRouter.post('/login', cors.corsWithOptions, userController.login);\\r\\n\\r\\nuserRouter.post('/changepassoword/:id',authenticate.verifyUser, userController.changePassoword);\\r\\n\\r\\nuserRouter.post(\\\"/updateprofilepicture/:id\\\",authenticate.verifyUser, upload.UploadUserImage);\\r\\n\\r\\nuserRouter.get('/logout',authenticate.verifyUser, userController.logout);\\r\\n\\r\\nmodule.exports = userRouter;\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/a6/userRouter_a6221ff3be20743fe1c0fd1dc9fd8435.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2377\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\userRouter.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":4566,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":4563,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":606,\"endOffset\":646,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const sharp = require('sharp');\\n\\nconst uid = require('uid');\\n\\nconst fs = require('fs');\\n\\nconst Users = require('../models/users');\\n\\nconst Places = require('../models/visitingPlaces');\\n\\nconst uploadFile = async (req, res) => {\\n try {\\n await upload(req, res);\\n\\n if (req.file == undefined) {\\n return res.send(`You must select a file.`);\\n }\\n\\n return res.send(`File has been uploaded.`);\\n } catch (error) {\\n return res.send(`Error when trying upload image: ${error}`);\\n }\\n};\\n\\nconst UploadUserImage = async (req, res, next) => {\\n try {\\n const user_id = req.params._id;\\n const user = await Users.findById(user_id);\\n console.log(req);\\n let imageUrl;\\n\\n if (req.file) {\\n imageUrl = `${uid()}__${req.file.originalname}`;\\n let filename = `images/userImages/${imageUrl}`;\\n let previousImagePath = `images/userImages/${user.image}`;\\n const imageExist = fs.existsSync(previousImagePath);\\n\\n if (imageExist) {\\n deleteImage(previousImagePath);\\n }\\n\\n await sharp(req.file.path).rotate().resize(500, 500).toFile(filename);\\n fs.unlink(req.file.path, err => {\\n if (err) {}\\n });\\n } else {\\n imageUrl = 'profile.png';\\n }\\n\\n user.image = imageUrl;\\n await user.save();\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n message: 'Successfully updated profile picture'\\n });\\n } catch (err) {\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Error while updating profile picture'\\n });\\n }\\n};\\n\\nconst uploadPlaceImage = async (req, res, next) => {\\n try {\\n const place_id = req.params._id;\\n const place = await Places.findById(place_id);\\n let imageUrl;\\n\\n if (req.file) {\\n imageUrl = `${uid()}__${req.file.originalname}`;\\n let filename = `images/placeImages/${imageUrl}`;\\n let previousImagePath = `images/placeImages/${place.image}`;\\n const imageExist = fs.existsSync(previousImagePath);\\n\\n if (imageExist) {\\n deleteImage(previousImagePath);\\n }\\n\\n await sharp(req.file.path).rotate().resize(500, 500).toFile(filename);\\n fs.unlink(req.file.path, err => {\\n if (err) {}\\n });\\n } else {\\n imageUrl = 'image.png';\\n }\\n\\n place.image = imageUrl;\\n await place.save();\\n res.statusCode = 500;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n message: 'Successfully updated profile picture'\\n });\\n } catch (err) {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'Error while updating profile picture'\\n });\\n }\\n};\\n\\nexports.UploadUserImage = UploadUserImage;\\nexports.uploadFile = uploadFile;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVwbG9hZC5qcyJdLCJuYW1lcyI6WyJzaGFycCIsInJlcXVpcmUiLCJ1aWQiLCJmcyIsIlVzZXJzIiwiUGxhY2VzIiwidXBsb2FkRmlsZSIsInJlcSIsInJlcyIsInVwbG9hZCIsImZpbGUiLCJ1bmRlZmluZWQiLCJzZW5kIiwiZXJyb3IiLCJVcGxvYWRVc2VySW1hZ2UiLCJuZXh0IiwidXNlcl9pZCIsInBhcmFtcyIsIl9pZCIsInVzZXIiLCJmaW5kQnlJZCIsImNvbnNvbGUiLCJsb2ciLCJpbWFnZVVybCIsIm9yaWdpbmFsbmFtZSIsImZpbGVuYW1lIiwicHJldmlvdXNJbWFnZVBhdGgiLCJpbWFnZSIsImltYWdlRXhpc3QiLCJleGlzdHNTeW5jIiwiZGVsZXRlSW1hZ2UiLCJwYXRoIiwicm90YXRlIiwicmVzaXplIiwidG9GaWxlIiwidW5saW5rIiwiZXJyIiwic2F2ZSIsInN0YXR1c0NvZGUiLCJzZXRIZWFkZXIiLCJqc29uIiwic3VjY2VzcyIsIm1lc3NhZ2UiLCJ1cGxvYWRQbGFjZUltYWdlIiwicGxhY2VfaWQiLCJwbGFjZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLEtBQUssR0FBR0MsT0FBTyxDQUFDLE9BQUQsQ0FBckI7O0FBQ0EsTUFBTUMsR0FBRyxHQUFHRCxPQUFPLENBQUMsS0FBRCxDQUFuQjs7QUFDQSxNQUFNRSxFQUFFLEdBQUdGLE9BQU8sQ0FBQyxJQUFELENBQWxCOztBQUNBLE1BQU1HLEtBQUssR0FBR0gsT0FBTyxDQUFDLGlCQUFELENBQXJCOztBQUNBLE1BQU1JLE1BQU0sR0FBR0osT0FBTyxDQUFDLDBCQUFELENBQXRCOztBQUVBLE1BQU1LLFVBQVUsR0FBRyxPQUFPQyxHQUFQLEVBQVlDLEdBQVosS0FBb0I7QUFDbkMsTUFBSTtBQUNBLFVBQU1DLE1BQU0sQ0FBQ0YsR0FBRCxFQUFNQyxHQUFOLENBQVo7O0FBRUEsUUFBSUQsR0FBRyxDQUFDRyxJQUFKLElBQVlDLFNBQWhCLEVBQTJCO0FBQ3ZCLGFBQU9I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Q0FBQzhCLFVBQUosR0FBaUIsR0FBakI7QUFDQTlCLElBQUFBLEdBQUcsQ0FBQytCLFNBQUosQ0FBYyxjQUFkLEVBQThCLGtCQUE5QjtBQUNBL0IsSUFBQUEsR0FBRyxDQUFDZ0MsSUFBSixDQUFTO0FBQUVDLE1BQUFBLE9BQU8sRUFBRSxLQUFYO0FBQWtCQyxNQUFBQSxPQUFPLEVBQUU7QUFBM0IsS0FBVDtBQUNIO0FBQ0osQ0F6Q0Q7O0FBMkNBSSxPQUFPLENBQUNoQyxlQUFSLEdBQTBCQSxlQUExQjtBQUNBZ0MsT0FBTyxDQUFDeEMsVUFBUixHQUFxQkEsVUFBckIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBzaGFycCA9IHJlcXVpcmUoJ3NoYXJwJyk7XHJcbmNvbnN0IHVpZCA9IHJlcXVpcmUoJ3VpZCcpO1xyXG5jb25zdCBmcyA9IHJlcXVpcmUoJ2ZzJyk7XHJcbmNvbnN0IFVzZXJzID0gcmVxdWlyZSgnLi4vbW9kZWxzL3VzZXJzJyk7XHJcbmNvbnN0IFBsYWNlcyA9IHJlcXVpcmUoJy4uL21vZGVscy92aXNpdGluZ1BsYWNlcycpXHJcblxyXG5jb25zdCB1cGxvYWRGaWxlID0gYXN5bmMgKHJlcSwgcmVzKSA9PiB7XHJcbiAgICB0cnkge1xyXG4gICAgICAgIGF3YWl0IHVwbG9hZChyZXEsIHJlcyk7XHJcblxyXG4gICAgICAgIGlmIChyZXEuZmlsZSA9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlcy5zZW5kKGBZb3UgbXVzdCBzZWxlY3QgYSBmaWxlLmApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHJlcy5zZW5kKGBGaWxlIGhhcyBiZWVuIHVwbG9hZGVkLmApO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICByZXR1cm4gcmVzLnNlbmQoYEVycm9yIHdoZW4gdHJ5aW5nIHVwbG9hZCBpbWFnZTogJHtlcnJvcn1gKTtcclxuICAgIH1cclxufTtcclxuXHJcbmNvbnN0IFVwbG9hZFVzZXJJbWFnZSA9IGFzeW5jIChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgICBjb25zdCB1c2VyX2lkID0gcmVxLnBhcmFtcy5faWQ7XHJcbiAgICAgICAgY29uc3QgdXNlciA9IGF3YWl0IFVzZXJzLmZpbmRCeUlkKHVzZXJfaWQpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKHJlcSk7XHJcblxyXG4gICAgICAgIGxldCBpbWFnZVVybDtcclxuICAgICAgICBpZiAocmVxLmZpbGUpIHtcclxuICAgICAgICAgICAgaW1hZ2VVcmwgPSBgJHt1aWQoKX1fXyR7cmVxLmZpbGUub3JpZ2luYWxuYW1lfWA7XHJcbiAgICAgICAgICAgIGxldCBmaWxlbmFtZSA9IGBpbWFnZXMvdXNlckltYWdlcy8ke2ltYWdlVXJsfWA7XHJcbiAgICAgICAgICAgIGxldCBwcmV2aW91c0ltYWdlUGF0aCA9IGBpbWFnZXMvdXNlckltYWdlcy8ke3VzZXIuaW1hZ2V9YDtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IGltYWdlRXhpc3QgPSBmcy5leGlzdHNTeW5jKHByZXZpb3VzSW1hZ2VQYXRoKTtcclxuICAgICAgICAgICAgaWYgKGltYWdlRXhpc3QpIHtcclxuICAgICAgICAgICAgICAgIGRlbGV0ZUltYWdlKHByZXZpb3VzSW1hZ2VQYXRoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBhd2FpdCBzaGFycChyZXEuZmlsZS5wYXRoKVxyXG4gICAgICAgICAgICAgICAgLnJvdGF0ZSgpXHJcbiAgICAgICAgICAgICAgICAucmVzaXplKDUwMCwgNTAwKVxyXG4gICAgICAgICAgICAgICAgLnRvRmlsZShmaWxlbmFtZSk7XHJcblxyXG4gICAgICAgICAgICBmcy51bmxpbmsocmVxLmZpbGUucGF0aCwgKGVycikgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGltYWdlVXJsID0gJ3Byb2ZpbGUucG5nJztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHVzZXIuaW1hZ2UgPSBpbWFnZVVybDtcclxuICAgICAgICBhd2FpdCB1c2VyLnNhdmUoKTtcclxuXHJcblxyXG4gICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCBtZXNzYWdlOiAnU3VjY2Vzc2Z1bGx5IHVwZGF0ZWQgcHJvZmlsZSBwaWN0dXJlJyB9KTtcclxuXHJcbiAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDUwMDtcclxuICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogZmFsc2UsIG1lc3NhZ2U6ICdFcnJvciB3aGlsZSB1cGRhdGluZyBwcm9maWxlIHBpY3R1cmUnIH0pO1xyXG4gICAgfVxyXG59O1xyXG5cclxuY29uc3QgdXBsb2FkUGxhY2VJbWFnZSA9IGFzeW5jIChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgICBjb25zdCBwbGFjZV9pZCA9IHJlcS5wYXJhbXMuX2lkO1xyXG4gICAgICAgIGNvbnN0IHBsYWNlID0gYXdhaXQgUGxhY2VzLmZpbmRCeUlkKHBsYWNlX2lkKTtcclxuXHJcbiAgICAgICAgbGV0IGltYWdlVXJsO1xyXG4gICAgICAgIGlmIChyZXEuZmlsZSkge1xyXG4gICAgICAgICAgICBpbWFnZVVybCA9IGAke3VpZCgpfV9fJHtyZXEuZmlsZS5vcmlnaW5hbG5hbWV9YDtcclxuICAgICAgICAgICAgbGV0IGZpbGVuYW1lID0gYGltYWdlcy9wbGFjZUltYWdlcy8ke2ltYWdlVXJsfWA7XHJcbiAgICAgICAgICAgIGxldCBwcmV2aW91c0ltYWdlUGF0aCA9IGBpbWFnZXMvcGxhY2VJbWFnZXMvJHtwbGFjZS5pbWFnZX1gO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgaW1hZ2VFeGlzdCA9IGZzLmV4aXN0c1N5bmMocHJldmlvdXNJbWFnZVBhdGgpO1xyXG4gICAgICAgICAgICBpZiAoaW1hZ2VFeGlzdCkge1xyXG4gICAgICAgICAgICAgICAgZGVsZXRlSW1hZ2UocHJldmlvdXNJbWFnZVBhdGgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGF3YWl0IHNoYXJwKHJlcS5maWxlLnBhdGgpXHJcbiAgICAgICAgICAgICAgICAucm90YXRlKClcclxuICAgICAgICAgICAgICAgIC5yZXNpemUoNTAwLCA1MDApXHJcbiAgICAgICAgICAgICAgICAudG9GaWxlKGZpbGVuYW1lKTtcclxuXHJcbiAgICAgICAgICAgIGZzLnVubGluayhyZXEuZmlsZS5wYXRoLCAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaW1hZ2VVcmwgPSAnaW1hZ2UucG5nJztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHBsYWNlLmltYWdlID0gaW1hZ2VVcmw7XHJcbiAgICAgICAgYXdhaXQgcGxhY2Uuc2F2ZSgpO1xyXG5cclxuXHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA1MDA7XHJcbiAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICByZXMuanNvbih7IHN1Y2Nlc3M6IHRydWUsIG1lc3NhZ2U6ICdTdWNjZXNzZnVsbHkgdXBkYXRlZCBwcm9maWxlIHBpY3R1cmUnIH0pO1xyXG5cclxuICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogJ0Vycm9yIHdoaWxlIHVwZGF0aW5nIHByb2ZpbGUgcGljdHVyZScgfSk7XHJcbiAgICB9XHJcbn07XHJcblxyXG5leHBvcnRzLlVwbG9hZFVzZXJJbWFnZSA9IFVwbG9hZFVzZXJJbWFnZTtcclxuZXhwb3J0cy51cGxvYWRGaWxlID0gdXBsb2FkRmlsZTsiXX0=\",\"originalCode\":\"const sharp = require('sharp');\\r\\nconst uid = require('uid');\\r\\nconst fs = require('fs');\\r\\nconst Users = require('../models/users');\\r\\nconst Places = require('../models/visitingPlaces')\\r\\n\\r\\nconst uploadFile = async (req, res) => {\\r\\n try {\\r\\n await upload(req, res);\\r\\n\\r\\n if (req.file == undefined) {\\r\\n return res.send(`You must select a file.`);\\r\\n }\\r\\n\\r\\n return res.send(`File has been uploaded.`);\\r\\n } catch (error) {\\r\\n return res.send(`Error when trying upload image: ${error}`);\\r\\n }\\r\\n};\\r\\n\\r\\nconst UploadUserImage = async (req, res, next) => {\\r\\n try {\\r\\n const user_id = req.params._id;\\r\\n const user = await Users.findById(user_id);\\r\\n console.log(req);\\r\\n\\r\\n let imageUrl;\\r\\n if (req.file) {\\r\\n imageUrl = `${uid()}__${req.file.originalname}`;\\r\\n let filename = `images/userImages/${imageUrl}`;\\r\\n let previousImagePath = `images/userImages/${user.image}`;\\r\\n\\r\\n const imageExist = fs.existsSync(previousImagePath);\\r\\n if (imageExist) {\\r\\n deleteImage(previousImagePath);\\r\\n }\\r\\n await sharp(req.file.path)\\r\\n .rotate()\\r\\n .resize(500, 500)\\r\\n .toFile(filename);\\r\\n\\r\\n fs.unlink(req.file.path, (err) => {\\r\\n if (err) {\\r\\n }\\r\\n })\\r\\n } else {\\r\\n imageUrl = 'profile.png';\\r\\n }\\r\\n\\r\\n user.image = imageUrl;\\r\\n await user.save();\\r\\n\\r\\n\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, message: 'Successfully updated profile picture' });\\r\\n\\r\\n } catch (err) {\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Error while updating profile picture' });\\r\\n }\\r\\n};\\r\\n\\r\\nconst uploadPlaceImage = async (req, res, next) => {\\r\\n try {\\r\\n const place_id = req.params._id;\\r\\n const place = await Places.findById(place_id);\\r\\n\\r\\n let imageUrl;\\r\\n if (req.file) {\\r\\n imageUrl = `${uid()}__${req.file.originalname}`;\\r\\n let filename = `images/placeImages/${imageUrl}`;\\r\\n let previousImagePath = `images/placeImages/${place.image}`;\\r\\n\\r\\n const imageExist = fs.existsSync(previousImagePath);\\r\\n if (imageExist) {\\r\\n deleteImage(previousImagePath);\\r\\n }\\r\\n await sharp(req.file.path)\\r\\n .rotate()\\r\\n .resize(500, 500)\\r\\n .toFile(filename);\\r\\n\\r\\n fs.unlink(req.file.path, (err) => {\\r\\n if (err) {\\r\\n }\\r\\n })\\r\\n } else {\\r\\n imageUrl = 'image.png';\\r\\n }\\r\\n\\r\\n place.image = imageUrl;\\r\\n await place.save();\\r\\n\\r\\n\\r\\n res.statusCode = 500;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, message: 'Successfully updated profile picture' });\\r\\n\\r\\n } catch (err) {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'Error while updating profile picture' });\\r\\n }\\r\\n};\\r\\n\\r\\nexports.UploadUserImage = UploadUserImage;\\r\\nexports.uploadFile = uploadFile;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/7c/upload_7c4638f764653e4bdd79a0ce3f99ff41.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2378\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\upload.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":12934,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":12931,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"uploadFile\",\"ranges\":[{\"startOffset\":293,\"endOffset\":580,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"UploadUserImage\",\"ranges\":[{\"startOffset\":607,\"endOffset\":1726,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"uploadPlaceImage\",\"ranges\":[{\"startOffset\":1754,\"endOffset\":2858,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"var mongoose = require('mongoose');\\n\\nvar Schema = mongoose.Schema;\\n\\nvar passportLocalMongoose = require('passport-local-mongoose');\\n\\nvar User = new Schema({\\n firstname: {\\n type: String,\\n required: true\\n },\\n lastname: {\\n type: String,\\n required: true\\n },\\n email: {\\n type: String,\\n required: true,\\n unique: true\\n },\\n mobile: {\\n type: String\\n },\\n role: {\\n type: String,\\n default: \\\"user\\\",\\n enum: ['user', 'moderater', 'admin']\\n },\\n image: {\\n type: String\\n },\\n suite: {\\n type: String,\\n enum: ['gold', 'luxury', 'platinum']\\n },\\n rommnumber: {\\n type: String\\n },\\n userstate: {\\n type: String,\\n default: \\\"in\\\",\\n enum: ['in', 'out']\\n }\\n}, {\\n timestamps: true\\n});\\nUser.plugin(passportLocalMongoose);\\nUser.index({\\n '$**': 'text'\\n});\\nvar Users = mongoose.model('User', User);\\nmodule.exports = Users;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVzZXJzLmpzIl0sIm5hbWVzIjpbIm1vbmdvb3NlIiwicmVxdWlyZSIsIlNjaGVtYSIsInBhc3Nwb3J0TG9jYWxNb25nb29zZSIsIlVzZXIiLCJmaXJzdG5hbWUiLCJ0eXBlIiwiU3RyaW5nIiwicmVxdWlyZWQiLCJsYXN0bmFtZSIsImVtYWlsIiwidW5pcXVlIiwibW9iaWxlIiwicm9sZSIsImRlZmF1bHQiLCJlbnVtIiwiaW1hZ2UiLCJzdWl0ZSIsInJvbW1udW1iZXIiLCJ1c2Vyc3RhdGUiLCJ0aW1lc3RhbXBzIiwicGx1Z2luIiwiaW5kZXgiLCJVc2VycyIsIm1vZGVsIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsSUFBSUEsUUFBUSxHQUFHQyxPQUFPLENBQUMsVUFBRCxDQUF0Qjs7QUFDQSxJQUFJQyxNQUFNLEdBQUdGLFFBQVEsQ0FBQ0UsTUFBdEI7O0FBRUEsSUFBSUMscUJBQXFCLEdBQUdGLE9BQU8sQ0FBQyx5QkFBRCxDQUFuQzs7QUFFQSxJQUFJRyxJQUFJLEdBQUcsSUFBSUYsTUFBSixDQUFXO0FBQ2xCRyxFQUFBQSxTQUFTLEVBQUU7QUFDUEMsSUFBQUEsSUFBSSxFQUFFQyxNQURDO0FBRVBDLElBQUFBLFFBQVEsRUFBRTtBQUZILEdBRE87QUFLbEJDLEVBQUFBLFFBQVEsRUFBRTtBQUNOSCxJQUFBQSxJQUFJLEVBQUVDLE1BREE7QUFFTkMsSUFBQUEsUUFBUSxFQUFFO0FBRkosR0FMUTtBQVNsQkUsRUFBQUEsS0FBSyxFQUFFO0FBQ0hKLElBQUFBLElBQUksRUFBRUMsTUFESDtBQUVIQyxJQUFBQSxRQUFRLEVBQUUsSUFGUDtBQUdIRyxJQUFBQSxNQUFNLEVBQUU7QUFITCxHQVRXO0FBY2xCQyxFQUFBQSxNQUFNLEVBQUM7QUFDSE4sSUFBQUEsSUFBSSxFQUFFQztBQURILEdBZFc7QUFpQmxCTSxFQUFBQSxJQUFJLEVBQ0o7QUFDSVAsSUFBQUEsSUFBSSxFQUFFQyxNQURWO0FBRUlPLElBQUFBLE9BQU8sRUFBRSxNQUZiO0FBR0lDLElBQUFBLElBQUksRUFBQyxDQUFDLE1BQUQsRUFBUSxXQUFSLEVBQW9CLE9BQXBCO0FBSFQsR0FsQmtCO0FBdUJsQkMsRUFBQUEsS0FBSyxFQUFFO0FBQ0hWLElBQUFBLElBQUksRUFBRUM7QUFESCxHQXZCVztBQTBCbEJVLEVBQUFBLEtBQUssRUFBQztBQUNGWCxJQUFBQSxJQUFJLEVBQUVDLE1BREo7QUFFRlEsSUFBQUEsSUFBSSxFQUFDLENBQUMsTUFBRCxFQUFRLFFBQVIsRUFBaUIsVUFBakI7QUFGSCxHQTFCWTtBQThCbEJHLEVBQUFBLFVBQVUsRUFBQztBQUNQWixJQUFBQSxJQUFJLEVBQUVDO0FBREMsR0E5Qk87QUFpQ2xCWSxFQUFBQSxTQUFTLEVBQUM7QUFDTmIsSUFBQUEsSUFBSSxFQUFFQyxNQURBO0FBRU5PLElBQUFBLE9BQU8sRUFBRSxJQUZIO0FBR05DLElBQUFBLElBQUksRUFBQyxDQUFDLElBQUQsRUFBTSxLQUFOO0FBSEM7QUFqQ1EsQ0FBWCxFQXNDUjtBQUNDSyxFQUFBQSxVQUFVLEVBQUU7QUFEYixDQXRDUSxDQUFYO0FBMENBaEIsSUFBSSxDQUFDaUIsTUFBTCxDQUFZbEIscUJBQVo7QUFDQUMsSUFBSSxDQUFDa0IsS0FBTCxDQUFXO0FBQUMsU0FBTTtBQUFQLENBQVg7QUFDQSxJQUFJQyxLQUFLLEdBQUd2QixRQUFRLENBQUN3QixLQUFULENBQWUsTUFBZixFQUF1QnBCLElBQXZCLENBQVo7QUFFQXFCLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQkgsS0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgbW9uZ29vc2UgPSByZXF1aXJlKCdtb25nb29zZScpO1xyXG52YXIgU2NoZW1hID0gbW9uZ29vc2UuU2NoZW1hO1xyXG5cclxudmFyIHBhc3Nwb3J0TG9jYWxNb25nb29zZSA9IHJlcXVpcmUoJ3Bhc3Nwb3J0LWxvY2FsLW1vbmdvb3NlJyk7XHJcblxyXG52YXIgVXNlciA9IG5ldyBTY2hlbWEoe1xyXG4gICAgZmlyc3RuYW1lOiB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlXHJcbiAgICB9LFxyXG4gICAgbGFzdG5hbWU6IHtcclxuICAgICAgICB0eXBlOiBTdHJpbmcsXHJcbiAgICAgICAgcmVxdWlyZWQ6IHRydWVcclxuICAgIH0sXHJcbiAgICBlbWFpbDoge1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgICB1bmlxdWU6IHRydWVcclxuICAgIH0sXHJcbiAgICBtb2JpbGU6e1xyXG4gICAgICAgIHR5cGU6IFN0cmluZ1xyXG4gICAgfSxcclxuICAgIHJvbGU6XHJcbiAgICB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICAgIGRlZmF1bHQ6IFwidXNlclwiLFxyXG4gICAgICAgIGVudW06Wyd1c2VyJywnbW9kZXJhdGVyJywnYWRtaW4nXVxyXG4gICAgfSxcclxuICAgIGltYWdlOiB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nXHJcbiAgICB9LFxyXG4gICAgc3VpdGU6e1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICBlbnVtOlsnZ29sZCcsJ2x1eHVyeScsJ3BsYXRpbnVtJ11cclxuICAgIH0sXHJcbiAgICByb21tbnVtYmVyOntcclxuICAgICAgICB0eXBlOiBTdHJpbmdcclxuICAgIH0sXHJcbiAgICB1c2Vyc3RhdGU6e1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICBkZWZhdWx0OiBcImluXCIsXHJcbiAgICAgICAgZW51bTpbJ2luJywnb3V0J11cclxuICAgIH1cclxufSwge1xyXG4gICAgdGltZXN0YW1wczogdHJ1ZVxyXG59KTtcclxuXHJcblVzZXIucGx1Z2luKHBhc3Nwb3J0TG9jYWxNb25nb29zZSk7XHJcblVzZXIuaW5kZXgoeyckKionOid0ZXh0J30pO1xyXG52YXIgVXNlcnMgPSBtb25nb29zZS5tb2RlbCgnVXNlcicsIFVzZXIpO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBVc2VyczsiXX0=\",\"originalCode\":\"var mongoose = require('mongoose');\\r\\nvar Schema = mongoose.Schema;\\r\\n\\r\\nvar passportLocalMongoose = require('passport-local-mongoose');\\r\\n\\r\\nvar User = new Schema({\\r\\n firstname: {\\r\\n type: String,\\r\\n required: true\\r\\n },\\r\\n lastname: {\\r\\n type: String,\\r\\n required: true\\r\\n },\\r\\n email: {\\r\\n type: String,\\r\\n required: true,\\r\\n unique: true\\r\\n },\\r\\n mobile:{\\r\\n type: String\\r\\n },\\r\\n role:\\r\\n {\\r\\n type: String,\\r\\n default: \\\"user\\\",\\r\\n enum:['user','moderater','admin']\\r\\n },\\r\\n image: {\\r\\n type: String\\r\\n },\\r\\n suite:{\\r\\n type: String,\\r\\n enum:['gold','luxury','platinum']\\r\\n },\\r\\n rommnumber:{\\r\\n type: String\\r\\n },\\r\\n userstate:{\\r\\n type: String,\\r\\n default: \\\"in\\\",\\r\\n enum:['in','out']\\r\\n }\\r\\n}, {\\r\\n timestamps: true\\r\\n});\\r\\n\\r\\nUser.plugin(passportLocalMongoose);\\r\\nUser.index({'$**':'text'});\\r\\nvar Users = mongoose.model('User', User);\\r\\n\\r\\nmodule.exports = Users;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/fa/users_fa250a82bd410ffb1909f920e93eed19.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2448\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\models\\\\users.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":4633,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":4630,\"count\":1}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const mongoose = require('mongoose');\\n\\nconst Schema = mongoose.Schema;\\nconst pointSchema = new Schema({\\n type: {\\n type: String,\\n enum: ['Point'],\\n required: true,\\n default: 'Point'\\n },\\n coordinates: {\\n type: [Number],\\n required: true\\n }\\n});\\nconst placeSchema = new Schema({\\n name: {\\n type: String,\\n required: true,\\n unique: true\\n },\\n description: {\\n type: String,\\n required: true\\n },\\n location: {\\n type: pointSchema,\\n index: '2dsphere',\\n required: true\\n },\\n distance: {\\n type: String,\\n required: true\\n },\\n timeToReach: {\\n type: String,\\n required: true\\n },\\n image: {\\n type: String\\n },\\n travellingMethods: [{\\n type: String,\\n enum: ['Bus', 'Car', 'Train', 'Threewheeler', 'Foot']\\n }]\\n}, {\\n timestamps: true\\n});\\nplaceSchema.index({\\n '$**': 'text'\\n});\\nvar Places = mongoose.model('Place', placeSchema);\\nmodule.exports = Places;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInZpc2l0aW5nUGxhY2VzLmpzIl0sIm5hbWVzIjpbIm1vbmdvb3NlIiwicmVxdWlyZSIsIlNjaGVtYSIsInBvaW50U2NoZW1hIiwidHlwZSIsIlN0cmluZyIsImVudW0iLCJyZXF1aXJlZCIsImRlZmF1bHQiLCJjb29yZGluYXRlcyIsIk51bWJlciIsInBsYWNlU2NoZW1hIiwibmFtZSIsInVuaXF1ZSIsImRlc2NyaXB0aW9uIiwibG9jYXRpb24iLCJpbmRleCIsImRpc3RhbmNlIiwidGltZVRvUmVhY2giLCJpbWFnZSIsInRyYXZlbGxpbmdNZXRob2RzIiwidGltZXN0YW1wcyIsIlBsYWNlcyIsIm1vZGVsIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsUUFBUSxHQUFHQyxPQUFPLENBQUMsVUFBRCxDQUF4Qjs7QUFDQSxNQUFNQyxNQUFNLEdBQUdGLFFBQVEsQ0FBQ0UsTUFBeEI7QUFFQSxNQUFNQyxXQUFXLEdBQUcsSUFBSUQsTUFBSixDQUFXO0FBQzNCRSxFQUFBQSxJQUFJLEVBQUU7QUFDRkEsSUFBQUEsSUFBSSxFQUFFQyxNQURKO0FBRUZDLElBQUFBLElBQUksRUFBRSxDQUFDLE9BQUQsQ0FGSjtBQUdGQyxJQUFBQSxRQUFRLEVBQUUsSUFIUjtBQUlGQyxJQUFBQSxPQUFPLEVBQUU7QUFKUCxHQURxQjtBQU8zQkMsRUFBQUEsV0FBVyxFQUFFO0FBQ1RMLElBQUFBLElBQUksRUFBRSxDQUFDTSxNQUFELENBREc7QUFFVEgsSUFBQUEsUUFBUSxFQUFFO0FBRkQ7QUFQYyxDQUFYLENBQXBCO0FBYUEsTUFBTUksV0FBVyxHQUFHLElBQUlULE1BQUosQ0FBVztBQUMzQlUsRUFBQUEsSUFBSSxFQUFFO0FBQ0ZSLElBQUFBLElBQUksRUFBRUMsTUFESjtBQUVGRSxJQUFBQSxRQUFRLEVBQUUsSUFGUjtBQUdGTSxJQUFBQSxNQUFNLEVBQUU7QUFITixHQURxQjtBQU0zQkMsRUFBQUEsV0FBVyxFQUFFO0FBQ1RWLElBQUFBLElBQUksRUFBRUMsTUFERztBQUVURSxJQUFBQSxRQUFRLEVBQUU7QUFGRCxHQU5jO0FBVTNCUSxFQUFBQSxRQUFRLEVBQUU7QUFDTlgsSUFBQUEsSUFBSSxFQUFFRCxXQURBO0FBRU5hLElBQUFBLEtBQUssRUFBRSxVQUZEO0FBR05ULElBQUFBLFFBQVEsRUFBRTtBQUhKLEdBVmlCO0FBZTNCVSxFQUFBQSxRQUFRLEVBQUU7QUFDTmIsSUFBQUEsSUFBSSxFQUFFQyxNQURBO0FBRU5FLElBQUFBLFFBQVEsRUFBRTtBQUZKLEdBZmlCO0FBbUIzQlcsRUFBQUEsV0FBVyxFQUFFO0FBQ1RkLElBQUFBLElBQUksRUFBRUMsTUFERztBQUVURSxJQUFBQSxRQUFRLEVBQUU7QUFGRCxHQW5CYztBQXVCM0JZLEVBQUFBLEtBQUssRUFDTDtBQUNJZixJQUFBQSxJQUFJLEVBQUVDO0FBRFYsR0F4QjJCO0FBMkIzQmUsRUFBQUEsaUJBQWlCLEVBQUUsQ0FDZjtBQUNJaEIsSUFBQUEsSUFBSSxFQUFFQyxNQURWO0FBRUlDLElBQUFBLElBQUksRUFBRSxDQUFDLEtBQUQsRUFBUSxLQUFSLEVBQWUsT0FBZixFQUF3QixjQUF4QixFQUF3QyxNQUF4QztBQUZWLEdBRGU7QUEzQlEsQ0FBWCxFQWlDakI7QUFDQ2UsRUFBQUEsVUFBVSxFQUFFO0FBRGIsQ0FqQ2lCLENBQXBCO0FBcUNBVixXQUFXLENBQUNLLEtBQVosQ0FBa0I7QUFBRSxTQUFPO0FBQVQsQ0FBbEI7QUFDQSxJQUFJTSxNQUFNLEdBQUd0QixRQUFRLENBQUN1QixLQUFULENBQWUsT0FBZixFQUF3QlosV0FBeEIsQ0FBYjtBQUVBYSxNQUFNLENBQUNDLE9BQVAsR0FBaUJILE1BQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgbW9uZ29vc2UgPSByZXF1aXJlKCdtb25nb29zZScpO1xyXG5jb25zdCBTY2hlbWEgPSBtb25nb29zZS5TY2hlbWE7XHJcblxyXG5jb25zdCBwb2ludFNjaGVtYSA9IG5ldyBTY2hlbWEoe1xyXG4gICAgdHlwZToge1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICBlbnVtOiBbJ1BvaW50J10sXHJcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXHJcbiAgICAgICAgZGVmYXVsdDogJ1BvaW50J1xyXG4gICAgfSxcclxuICAgIGNvb3JkaW5hdGVzOiB7XHJcbiAgICAgICAgdHlwZTogW051bWJlcl0sXHJcbiAgICAgICAgcmVxdWlyZWQ6IHRydWVcclxuICAgIH1cclxufSk7XHJcblxyXG5jb25zdCBwbGFjZVNjaGVtYSA9IG5ldyBTY2hlbWEoe1xyXG4gICAgbmFtZToge1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgICB1bmlxdWU6IHRydWVcclxuICAgIH0sXHJcbiAgICBkZXNjcmlwdGlvbjoge1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICByZXF1aXJlZDogdHJ1ZVxyXG4gICAgfSxcclxuICAgIGxvY2F0aW9uOiB7XHJcbiAgICAgICAgdHlwZTogcG9pbnRTY2hlbWEsXHJcbiAgICAgICAgaW5kZXg6ICcyZHNwaGVyZScsXHJcbiAgICAgICAgcmVxdWlyZWQ6IHRydWVcclxuICAgIH0sXHJcbiAgICBkaXN0YW5jZToge1xyXG4gICAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgICByZXF1aXJlZDogdHJ1ZVxyXG4gICAgfSxcclxuICAgIHRpbWVUb1JlYWNoOiB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlXHJcbiAgICB9LFxyXG4gICAgaW1hZ2U6XHJcbiAgICB7XHJcbiAgICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgfSxcclxuICAgIHRyYXZlbGxpbmdNZXRob2RzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0eXBlOiBTdHJpbmcsXHJcbiAgICAgICAgICAgIGVudW06IFsnQnVzJywgJ0NhcicsICdUcmFpbicsICdUaHJlZXdoZWVsZXInLCAnRm9vdCddXHJcbiAgICAgICAgfVxyXG4gICAgXVxyXG59LCB7XHJcbiAgICB0aW1lc3RhbXBzOiB0cnVlXHJcbn0pO1xyXG5cclxucGxhY2VTY2hlbWEuaW5kZXgoeyAnJCoqJzogJ3RleHQnIH0pO1xyXG52YXIgUGxhY2VzID0gbW9uZ29vc2UubW9kZWwoJ1BsYWNlJywgcGxhY2VTY2hlbWEpO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBQbGFjZXM7Il19\",\"originalCode\":\"const mongoose = require('mongoose');\\r\\nconst Schema = mongoose.Schema;\\r\\n\\r\\nconst pointSchema = new Schema({\\r\\n type: {\\r\\n type: String,\\r\\n enum: ['Point'],\\r\\n required: true,\\r\\n default: 'Point'\\r\\n },\\r\\n coordinates: {\\r\\n type: [Number],\\r\\n required: true\\r\\n }\\r\\n});\\r\\n\\r\\nconst placeSchema = new Schema({\\r\\n name: {\\r\\n type: String,\\r\\n required: true,\\r\\n unique: true\\r\\n },\\r\\n description: {\\r\\n type: String,\\r\\n required: true\\r\\n },\\r\\n location: {\\r\\n type: pointSchema,\\r\\n index: '2dsphere',\\r\\n required: true\\r\\n },\\r\\n distance: {\\r\\n type: String,\\r\\n required: true\\r\\n },\\r\\n timeToReach: {\\r\\n type: String,\\r\\n required: true\\r\\n },\\r\\n image:\\r\\n {\\r\\n type: String,\\r\\n },\\r\\n travellingMethods: [\\r\\n {\\r\\n type: String,\\r\\n enum: ['Bus', 'Car', 'Train', 'Threewheeler', 'Foot']\\r\\n }\\r\\n ]\\r\\n}, {\\r\\n timestamps: true\\r\\n});\\r\\n\\r\\nplaceSchema.index({ '$**': 'text' });\\r\\nvar Places = mongoose.model('Place', placeSchema);\\r\\n\\r\\nmodule.exports = Places;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/c4/visitingPlaces_c4ccc91c117df8c4aeada72a82534688.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2459\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\models\\\\visitingPlaces.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":4920,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":4917,\"count\":1}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"var passport = require('passport');\\n\\nvar LocalStrategy = require('passport-local').Strategy;\\n\\nvar User = require('../models/users');\\n\\nvar JwtStrategy = require('passport-jwt').Strategy;\\n\\nvar ExtractJwt = require('passport-jwt').ExtractJwt;\\n\\nvar jwt = require('jsonwebtoken');\\n\\npassport.use(new LocalStrategy(User.authenticate()));\\npassport.serializeUser(User.serializeUser());\\npassport.deserializeUser(User.deserializeUser());\\n\\nexports.getToken = user => {\\n return jwt.sign(user, process.env.secretKey, {\\n expiresIn: 3600\\n });\\n};\\n\\nvar opts = {};\\nopts.jwtFromRequest = ExtractJwt.fromAuthHeaderAsBearerToken();\\nopts.secretOrKey = process.env.secretKey;\\nexports.jwtPassport = passport.use(new JwtStrategy(opts, (jwt_payload, done) => {\\n User.findOne({\\n _id: jwt_payload._id\\n }, (err, user) => {\\n if (err) {\\n return done(err, false);\\n } else if (user) {\\n return done(null, user);\\n } else {\\n return done(null, false);\\n }\\n });\\n}));\\nexports.verifyUser = passport.authenticate('jwt', {\\n session: false\\n});\\n\\nexports.verifyAdmin = (req, res, next) => {\\n if (req.user.role == 'admin') {\\n return next();\\n } else if (req.user.role != 'admin') {\\n err = new Error('You are not authorized to perform this operation!');\\n err.status = 403;\\n return next(err);\\n } else {\\n err = new Error('Admin Verification Failed!');\\n err.status = 500;\\n return next(err);\\n }\\n};\\n\\nexports.verifyModerater = (req, res, next) => {\\n if (req.user.role != 'user') {\\n return next();\\n } else if (req.user.role == 'user') {\\n err = new Error('You are not authorized to perform this operation!');\\n err.status = 403;\\n return next(err);\\n }\\n};\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF1dGhlbnRpY2F0ZS5qcyJdLCJuYW1lcyI6WyJwYXNzcG9ydCIsInJlcXVpcmUiLCJMb2NhbFN0cmF0ZWd5IiwiU3RyYXRlZ3kiLCJVc2VyIiwiSnd0U3RyYXRlZ3kiLCJFeHRyYWN0Snd0Iiwiand0IiwidXNlIiwiYXV0aGVudGljYXRlIiwic2VyaWFsaXplVXNlciIsImRlc2VyaWFsaXplVXNlciIsImV4cG9ydHMiLCJnZXRUb2tlbiIsInVzZXIiLCJzaWduIiwicHJvY2VzcyIsImVudiIsInNlY3JldEtleSIsImV4cGlyZXNJbiIsIm9wdHMiLCJqd3RGcm9tUmVxdWVzdCIsImZyb21BdXRoSGVhZGVyQXNCZWFyZXJUb2tlbiIsInNlY3JldE9yS2V5Iiwiand0UGFzc3BvcnQiLCJqd3RfcGF5bG9hZCIsImRvbmUiLCJmaW5kT25lIiwiX2lkIiwiZXJyIiwidmVyaWZ5VXNlciIsInNlc3Npb24iLCJ2ZXJpZnlBZG1pbiIsInJlcSIsInJlcyIsIm5leHQiLCJyb2xlIiwiRXJyb3IiLCJzdGF0dXMiLCJ2ZXJpZnlNb2RlcmF0ZXIiXSwibWFwcGluZ3MiOiJBQUFBLElBQUlBLFFBQVEsR0FBR0MsT0FBTyxDQUFDLFVBQUQsQ0FBdEI7O0FBQ0EsSUFBSUMsYUFBYSxHQUFHRCxPQUFPLENBQUMsZ0JBQUQsQ0FBUCxDQUEwQkUsUUFBOUM7O0FBQ0EsSUFBSUMsSUFBSSxHQUFHSCxPQUFPLENBQUMsaUJBQUQsQ0FBbEI7O0FBRUEsSUFBSUksV0FBVyxHQUFHSixPQUFPLENBQUMsY0FBRCxDQUFQLENBQXdCRSxRQUExQzs7QUFDQSxJQUFJRyxVQUFVLEdBQUdMLE9BQU8sQ0FBQyxjQUFELENBQVAsQ0FBd0JLLFVBQXpDOztBQUNBLElBQUlDLEdBQUcsR0FBR04sT0FBTyxDQUFDLGNBQUQsQ0FBakI7O0FBR0FELFFBQVEsQ0FBQ1EsR0FBVCxDQUFhLElBQUlOLGFBQUosQ0FBa0JFLElBQUksQ0FBQ0ssWUFBTCxFQUFsQixDQUFiO0FBQ0FULFFBQVEsQ0FBQ1UsYUFB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dCI6WyJ2YXIgcGFzc3BvcnQgPSByZXF1aXJlKCdwYXNzcG9ydCcpO1xyXG52YXIgTG9jYWxTdHJhdGVneSA9IHJlcXVpcmUoJ3Bhc3Nwb3J0LWxvY2FsJykuU3RyYXRlZ3k7XHJcbnZhciBVc2VyID0gcmVxdWlyZSgnLi4vbW9kZWxzL3VzZXJzJyk7XHJcblxyXG52YXIgSnd0U3RyYXRlZ3kgPSByZXF1aXJlKCdwYXNzcG9ydC1qd3QnKS5TdHJhdGVneTtcclxudmFyIEV4dHJhY3RKd3QgPSByZXF1aXJlKCdwYXNzcG9ydC1qd3QnKS5FeHRyYWN0Snd0O1xyXG52YXIgand0ID0gcmVxdWlyZSgnanNvbndlYnRva2VuJyk7XHJcblxyXG5cclxucGFzc3BvcnQudXNlKG5ldyBMb2NhbFN0cmF0ZWd5KFVzZXIuYXV0aGVudGljYXRlKCkpKTtcclxucGFzc3BvcnQuc2VyaWFsaXplVXNlcihVc2VyLnNlcmlhbGl6ZVVzZXIoKSk7XHJcbnBhc3Nwb3J0LmRlc2VyaWFsaXplVXNlcihVc2VyLmRlc2VyaWFsaXplVXNlcigpKTtcclxuXHJcbmV4cG9ydHMuZ2V0VG9rZW4gPSAodXNlcikgPT4ge1xyXG4gICAgcmV0dXJuIGp3dC5zaWduKHVzZXIsIHByb2Nlc3MuZW52LnNlY3JldEtleSxcclxuICAgICAgICB7IGV4cGlyZXNJbjogMzYwMCB9KTtcclxufTtcclxuXHJcbnZhciBvcHRzID0ge307XHJcbm9wdHMuand0RnJvbVJlcXVlc3QgPSBFeHRyYWN0Snd0LmZyb21BdXRoSGVhZGVyQXNCZWFyZXJUb2tlbigpO1xyXG5vcHRzLnNlY3JldE9yS2V5ID0gcHJvY2Vzcy5lbnYuc2VjcmV0S2V5O1xyXG5cclxuZXhwb3J0cy5qd3RQYXNzcG9ydCA9IHBhc3Nwb3J0LnVzZShuZXcgSnd0U3RyYXRlZ3kob3B0cyxcclxuICAgIChqd3RfcGF5bG9hZCwgZG9uZSkgPT4ge1xyXG4gICAgICAgIFVzZXIuZmluZE9uZSh7IF9pZDogand0X3BheWxvYWQuX2lkIH0sIChlcnIsIHVzZXIpID0+IHtcclxuICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRvbmUoZXJyLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAodXNlcikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRvbmUobnVsbCwgdXNlcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZG9uZShudWxsLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH0pKTtcclxuXHJcbmV4cG9ydHMudmVyaWZ5VXNlciA9IHBhc3Nwb3J0LmF1dGhlbnRpY2F0ZSgnand0JywgeyBzZXNzaW9uOiBmYWxzZSB9KTtcclxuXHJcbmV4cG9ydHMudmVyaWZ5QWRtaW4gPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIGlmIChyZXEudXNlci5yb2xlID09ICdhZG1pbicpIHtcclxuICAgICAgICByZXR1cm4gbmV4dCgpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAocmVxLnVzZXIucm9sZSAhPSAnYWRtaW4nKSB7XHJcbiAgICAgICAgZXJyID0gbmV3IEVycm9yKCdZb3UgYXJlIG5vdCBhdXRob3JpemVkIHRvIHBlcmZvcm0gdGhpcyBvcGVyYXRpb24hJyk7XHJcbiAgICAgICAgZXJyLnN0YXR1cyA9IDQwMztcclxuICAgICAgICByZXR1cm4gbmV4dChlcnIpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgZXJyID0gbmV3IEVycm9yKCdBZG1pbiBWZXJpZmljYXRpb24gRmFpbGVkIScpO1xyXG4gICAgICAgIGVyci5zdGF0dXMgPSA1MDA7XHJcbiAgICAgICAgcmV0dXJuIG5leHQoZXJyKTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0cy52ZXJpZnlNb2RlcmF0ZXIgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIGlmIChyZXEudXNlci5yb2xlICE9ICd1c2VyJykge1xyXG4gICAgICAgIHJldHVybiBuZXh0KCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChyZXEudXNlci5yb2xlID09ICd1c2VyJykge1xyXG4gICAgICAgIGVyciA9IG5ldyBFcnJvcignWW91IGFyZSBub3QgYXV0aG9yaXplZCB0byBwZXJmb3JtIHRoaXMgb3BlcmF0aW9uIScpO1xyXG4gICAgICAgIGVyci5zdGF0dXMgPSA0MDM7XHJcbiAgICAgICAgcmV0dXJuIG5leHQoZXJyKTtcclxuICAgIH1cclxufVxyXG4iXX0=\",\"originalCode\":\"var passport = require('passport');\\r\\nvar LocalStrategy = require('passport-local').Strategy;\\r\\nvar User = require('../models/users');\\r\\n\\r\\nvar JwtStrategy = require('passport-jwt').Strategy;\\r\\nvar ExtractJwt = require('passport-jwt').ExtractJwt;\\r\\nvar jwt = require('jsonwebtoken');\\r\\n\\r\\n\\r\\npassport.use(new LocalStrategy(User.authenticate()));\\r\\npassport.serializeUser(User.serializeUser());\\r\\npassport.deserializeUser(User.deserializeUser());\\r\\n\\r\\nexports.getToken = (user) => {\\r\\n return jwt.sign(user, process.env.secretKey,\\r\\n { expiresIn: 3600 });\\r\\n};\\r\\n\\r\\nvar opts = {};\\r\\nopts.jwtFromRequest = ExtractJwt.fromAuthHeaderAsBearerToken();\\r\\nopts.secretOrKey = process.env.secretKey;\\r\\n\\r\\nexports.jwtPassport = passport.use(new JwtStrategy(opts,\\r\\n (jwt_payload, done) => {\\r\\n User.findOne({ _id: jwt_payload._id }, (err, user) => {\\r\\n if (err) {\\r\\n return done(err, false);\\r\\n }\\r\\n else if (user) {\\r\\n return done(null, user);\\r\\n }\\r\\n else {\\r\\n return done(null, false);\\r\\n }\\r\\n });\\r\\n }));\\r\\n\\r\\nexports.verifyUser = passport.authenticate('jwt', { session: false });\\r\\n\\r\\nexports.verifyAdmin = (req, res, next) => {\\r\\n if (req.user.role == 'admin') {\\r\\n return next();\\r\\n }\\r\\n else if (req.user.role != 'admin') {\\r\\n err = new Error('You are not authorized to perform this operation!');\\r\\n err.status = 403;\\r\\n return next(err);\\r\\n }\\r\\n else {\\r\\n err = new Error('Admin Verification Failed!');\\r\\n err.status = 500;\\r\\n return next(err);\\r\\n }\\r\\n}\\r\\n\\r\\nexports.verifyModerater = (req, res, next) => {\\r\\n if (req.user.role != 'user') {\\r\\n return next();\\r\\n }\\r\\n else if (req.user.role == 'user') {\\r\\n err = new Error('You are not authorized to perform this operation!');\\r\\n err.status = 403;\\r\\n return next(err);\\r\\n }\\r\\n}\\r\\n\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/17/authenticate_1749ed24acd3b9174e3e8d9c003de68d.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2460\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\middleware\\\\authenticate.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":8164,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":8161,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
.exports.getToken\",\"ranges\":[{\"startOffset\":536,\"endOffset\":622,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":803,\"endOffset\":1050,\"count\":2}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":875,\"endOffset\":1046,\"count\":2}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
.exports.verifyAdmin\",\"ranges\":[{\"startOffset\":1150,\"endOffset\":1495,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
.exports.verifyModerater\",\"ranges\":[{\"startOffset\":1524,\"endOffset\":1761,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"var validationRules = {\\n id: {\\n in: ['params', 'query'],\\n errorMessage: 'ID is wrong',\\n isInt: true,\\n toInt: true\\n },\\n name: {\\n errorMessage: 'Name should be at least 2 chars long and maximum of 50 chars',\\n isLength: {\\n options: {\\n min: 2,\\n max: 50\\n }\\n },\\n trim: true\\n },\\n description: {\\n errorMessage: 'Description should be at least 2 chars long and maximum of 200 chars',\\n isLength: {\\n options: {\\n min: 2,\\n max: 200\\n }\\n },\\n trim: true\\n },\\n distance: {\\n errorMessage: 'Distance should be at least 1 chars long and maximum of 200 chars',\\n isLength: {\\n options: {\\n min: 1,\\n max: 200\\n }\\n },\\n trim: true\\n },\\n timeToReach: {\\n errorMessage: 'Time To Reach should be at least 2 chars long and maximum of 200 chars',\\n isLength: {\\n options: {\\n min: 2,\\n max: 200\\n }\\n },\\n trim: true\\n },\\n firstname: {\\n errorMessage: 'First Name should be at least 3 chars long and maximum of 50 chars',\\n isLength: {\\n options: {\\n min: 3,\\n max: 50\\n }\\n },\\n trim: true\\n },\\n lastname: {\\n errorMessage: 'Last Name should be at least 3 chars long and maximum of 50 chars',\\n isLength: {\\n options: {\\n min: 3,\\n max: 50\\n }\\n },\\n trim: true\\n },\\n email: {\\n errorMessage: 'Please enter a valid email address',\\n isEmail: true,\\n trim: true\\n },\\n mobile: {\\n errorMessage: 'Please enter Phone Number in 10 digits',\\n isLength: {\\n options: {\\n min: 10,\\n max: 10\\n }\\n },\\n matches: {\\n options: [/^\\\\d{10}$/],\\n errorMessage: \\\"Please enter digits\\\"\\n },\\n trim: true\\n },\\n password: {\\n isLength: {\\n errorMessage: 'Password should be at least 6 chars long',\\n options: {\\n min: 6\\n }\\n }\\n },\\n confirm_password: {\\n errorMessage: 'Must have the same value as the password field',\\n custom: {\\n options: (value, {\\n req\\n }) => value === req.body.password\\n }\\n },\\n suite: {\\n errorMessage: 'Please select suite type',\\n isIn: {\\n options: [['gold', 'luxury', 'platinum']]\\n }\\n },\\n roomnumber: {\\n errorMessage: 'Room Number should be at least 3 chars long and maximum of 50 chars',\\n isLength: {\\n options: {\\n min: 3,\\n max: 50\\n }\\n },\\n trim: true\\n },\\n state: {\\n errorMessage: 'Please select correct state',\\n isIn: {\\n options: [[\\\"new\\\", \\\"not-completed\\\", \\\"canceled\\\", \\\"completed\\\"]]\\n }\\n },\\n method: {\\n errorMessage: 'Please select correct travelling method',\\n isIn: {\\n options: [['Bus', 'Car', 'Train', 'Threewheeler', 'Foot']]\\n }\\n }\\n};\\nexports.validationRules = validationRules;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInZhbGlkYXRpb24uanMiXSwibmFtZXMiOlsidmFsaWRhdGlvblJ1bGVzIiwiaWQiLCJpbiIsImVycm9yTWVzc2FnZSIsImlzSW50IiwidG9JbnQiLCJuYW1lIiwiaXNMZW5ndGgiLCJvcHRpb25zIiwibWluIiwibWF4IiwidHJpbSIsImRlc2NyaXB0aW9uIiwiZGlzdGFuY2UiLCJ0aW1lVG9SZWFjaCIsImZpcnN0bmFtZSIsImxhc3RuYW1lIiwiZW1haWwiLCJpc0VtYWlsIiwibW9iaWxlIiwibWF0Y2hlcyIsInBhc3N3b3JkIiwiY29uZmlybV9wYXNzd29yZCIsImN1c3RvbSIsInZhbHVlIiwicmVxIiwiYm9keSIsInN1aXRlIiwiaXNJbiIsInJvb21udW1iZXIiLCJzdGF0ZSIsIm1ldGhvZCIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLElBQUlBLGVBQWUsR0FBRztBQUNsQkMsRUFBQUEsRUFBRSxFQUFFO0FBQ0FDLElBQUFBLEVBQUUsRUFBRSxDQUFDLFFBQUQsRUFBVyxPQUFYLENBREo7QUFFQUMsSUFBQUEsWUFBWSxFQUFFLGFBRmQ7QUFHQUMsSUFBQUEsS0FBSyxFQUFFLElBSFA7QUFJQUMsSUFBQUEsS0FBSyxFQUFFO0FBSlAsR0FEYztBQU9sQkMsRUFBQUEsSUFBSSxFQUFFO0FBQ0ZILElBQUFBLFlBQVksRUFBRSw4REFEWjtBQUVGSSxJQUFBQSxRQUFRLEVBQUU7QUFDTkMsTUFBQUEsT0FBTyxFQUFFO0FBQUVDLFFBQUFBLEdBQUcsRUFBRSxDQUFQO0FBQVVDLFFBQUFBLEdBQUcsRUFBRTtBQUFmO0FBREgsS0FGUjtBQUtGQyxJQUFBQSxJQUFJLEVBQUU7QUFMSixHQVBZO0FBY2xCQyxFQUFBQSxXQUFXLEVBQUU7QUFDVFQsSUFBQUEsWUFBWSxFQUFFLHNFQURMO0FBRVRJLElBQUFBLFFBQVEsRUFBRTtBQUNOQyxNQUFBQSxPQUFPLEVBQUU7QUFBRUMsUUFBQUEsR0FBRyxFQUFFLENBQVA7QUFBVUMsUUFBQUEsR0FBRyxFQUFFO0FBQWY7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RTtBQUFFQyxRQUFBQSxHQUFHLEVBQUUsQ0FBUDtBQUFVQyxRQUFBQSxHQUFHLEVBQUU7QUFBZjtBQURILEtBRkY7QUFLUkMsSUFBQUEsSUFBSSxFQUFFO0FBTEUsR0FuRk07QUEwRmxCbUIsRUFBQUEsS0FBSyxFQUFFO0FBQ0gzQixJQUFBQSxZQUFZLEVBQUUsNkJBRFg7QUFFSHlCLElBQUFBLElBQUksRUFBRTtBQUNGcEIsTUFBQUEsT0FBTyxFQUFFLENBQUMsQ0FBQyxLQUFELEVBQVEsZUFBUixFQUF5QixVQUF6QixFQUFxQyxXQUFyQyxDQUFEO0FBRFA7QUFGSCxHQTFGVztBQWdHbEJ1QixFQUFBQSxNQUFNLEVBQUU7QUFDSjVCLElBQUFBLFlBQVksRUFBRSx5Q0FEVjtBQUVKeUIsSUFBQUEsSUFBSSxFQUFFO0FBQ0ZwQixNQUFBQSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEtBQUQsRUFBUSxLQUFSLEVBQWUsT0FBZixFQUF3QixjQUF4QixFQUF3QyxNQUF4QyxDQUFEO0FBRFA7QUFGRjtBQWhHVSxDQUF0QjtBQXdHQXdCLE9BQU8sQ0FBQ2hDLGVBQVIsR0FBMEJBLGVBQTFCIiwic291cmNlc0NvbnRlbnQiOlsidmFyIHZhbGlkYXRpb25SdWxlcyA9IHtcclxuICAgIGlkOiB7XHJcbiAgICAgICAgaW46IFsncGFyYW1zJywgJ3F1ZXJ5J10sXHJcbiAgICAgICAgZXJyb3JNZXNzYWdlOiAnSUQgaXMgd3JvbmcnLFxyXG4gICAgICAgIGlzSW50OiB0cnVlLFxyXG4gICAgICAgIHRvSW50OiB0cnVlLFxyXG4gICAgfSxcclxuICAgIG5hbWU6IHtcclxuICAgICAgICBlcnJvck1lc3NhZ2U6ICdOYW1lIHNob3VsZCBiZSBhdCBsZWFzdCAyIGNoYXJzIGxvbmcgYW5kIG1heGltdW0gb2YgNTAgY2hhcnMnLFxyXG4gICAgICAgIGlzTGVuZ3RoOiB7XHJcbiAgICAgICAgICAgIG9wdGlvbnM6IHsgbWluOiAyLCBtYXg6IDUwIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHRyaW06IHRydWVcclxuICAgIH0sXHJcbiAgICBkZXNjcmlwdGlvbjoge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ0Rlc2NyaXB0aW9uIHNob3VsZCBiZSBhdCBsZWFzdCAyIGNoYXJzIGxvbmcgYW5kIG1heGltdW0gb2YgMjAwIGNoYXJzJyxcclxuICAgICAgICBpc0xlbmd0aDoge1xyXG4gICAgICAgICAgICBvcHRpb25zOiB7IG1pbjogMiwgbWF4OiAyMDAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHJpbTogdHJ1ZVxyXG4gICAgfSxcclxuICAgIGRpc3RhbmNlOiB7XHJcbiAgICAgICAgZXJyb3JNZXNzYWdlOiAnRGlzdGFuY2Ugc2hvdWxkIGJlIGF0IGxlYXN0IDEgY2hhcnMgbG9uZyBhbmQgbWF4aW11bSBvZiAyMDAgY2hhcnMnLFxyXG4gICAgICAgIGlzTGVuZ3RoOiB7XHJcbiAgICAgICAgICAgIG9wdGlvbnM6IHsgbWluOiAxLCBtYXg6IDIwMCB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICB0cmltOiB0cnVlXHJcbiAgICB9LFxyXG4gICAgdGltZVRvUmVhY2g6IHtcclxuICAgICAgICBlcnJvck1lc3NhZ2U6ICdUaW1lIFRvIFJlYWNoIHNob3VsZCBiZSBhdCBsZWFzdCAyIGNoYXJzIGxvbmcgYW5kIG1heGltdW0gb2YgMjAwIGNoYXJzJyxcclxuICAgICAgICBpc0xlbmd0aDoge1xyXG4gICAgICAgICAgICBvcHRpb25zOiB7IG1pbjogMiwgbWF4OiAyMDAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHJpbTogdHJ1ZVxyXG4gICAgfSxcclxuICAgIGZpcnN0bmFtZToge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ0ZpcnN0IE5hbWUgc2hvdWxkIGJlIGF0IGxlYXN0IDMgY2hhcnMgbG9uZyBhbmQgbWF4aW11bSBvZiA1MCBjaGFycycsXHJcbiAgICAgICAgaXNMZW5ndGg6IHtcclxuICAgICAgICAgICAgb3B0aW9uczogeyBtaW46IDMsIG1heDogNTAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHJpbTogdHJ1ZVxyXG4gICAgfSxcclxuICAgIGxhc3RuYW1lOiB7XHJcbiAgICAgICAgZXJyb3JNZXNzYWdlOiAnTGFzdCBOYW1lIHNob3VsZCBiZSBhdCBsZWFzdCAzIGNoYXJzIGxvbmcgYW5kIG1heGltdW0gb2YgNTAgY2hhcnMnLFxyXG4gICAgICAgIGlzTGVuZ3RoOiB7XHJcbiAgICAgICAgICAgIG9wdGlvbnM6IHsgbWluOiAzLCBtYXg6IDUwIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHRyaW06IHRydWVcclxuICAgIH0sXHJcbiAgICBlbWFpbDoge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ1BsZWFzZSBlbnRlciBhIHZhbGlkIGVtYWlsIGFkZHJlc3MnLFxyXG4gICAgICAgIGlzRW1haWw6IHRydWUsXHJcbiAgICAgICAgdHJpbTogdHJ1ZSxcclxuICAgIH0sXHJcbiAgICBtb2JpbGU6IHtcclxuICAgICAgICBlcnJvck1lc3NhZ2U6ICdQbGVhc2UgZW50ZXIgUGhvbmUgTnVtYmVyIGluIDEwIGRpZ2l0cycsXHJcbiAgICAgICAgaXNMZW5ndGg6IHtcclxuICAgICAgICAgICAgb3B0aW9uczogeyBtaW46IDEwLCBtYXg6IDEwIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIG1hdGNoZXM6IHtcclxuICAgICAgICAgICAgb3B0aW9uczogWy9eXFxkezEwfSQvXSxcclxuICAgICAgICAgICAgZXJyb3JNZXNzYWdlOiBcIlBsZWFzZSBlbnRlciBkaWdpdHNcIlxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHJpbTogdHJ1ZVxyXG4gICAgfSxcclxuICAgIHBhc3N3b3JkOiB7XHJcbiAgICAgICAgaXNMZW5ndGg6IHtcclxuICAgICAgICAgICAgZXJyb3JNZXNzYWdlOiAnUGFzc3dvcmQgc2hvdWxkIGJlIGF0IGxlYXN0IDYgY2hhcnMgbG9uZycsXHJcbiAgICAgICAgICAgIG9wdGlvbnM6IHsgbWluOiA2IH1cclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgY29uZmlybV9wYXNzd29yZDoge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ011c3QgaGF2ZSB0aGUgc2FtZSB2YWx1ZSBhcyB0aGUgcGFzc3dvcmQgZmllbGQnLFxyXG4gICAgICAgIGN1c3RvbToge1xyXG4gICAgICAgICAgICBvcHRpb25zOiAodmFsdWUsIHsgcmVxIH0pID0+IHZhbHVlID09PSByZXEuYm9keS5wYXNzd29yZFxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICBzdWl0ZToge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ1BsZWFzZSBzZWxlY3Qgc3VpdGUgdHlwZScsXHJcbiAgICAgICAgaXNJbjoge1xyXG4gICAgICAgICAgICBvcHRpb25zOiBbWydnb2xkJywgJ2x1eHVyeScsICdwbGF0aW51bSddXSxcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgcm9vbW51bWJlcjoge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ1Jvb20gTnVtYmVyIHNob3VsZCBiZSBhdCBsZWFzdCAzIGNoYXJzIGxvbmcgYW5kIG1heGltdW0gb2YgNTAgY2hhcnMnLFxyXG4gICAgICAgIGlzTGVuZ3RoOiB7XHJcbiAgICAgICAgICAgIG9wdGlvbnM6IHsgbWluOiAzLCBtYXg6IDUwIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIHRyaW06IHRydWVcclxuICAgIH0sXHJcbiAgICBzdGF0ZToge1xyXG4gICAgICAgIGVycm9yTWVzc2FnZTogJ1BsZWFzZSBzZWxlY3QgY29ycmVjdCBzdGF0ZScsXHJcbiAgICAgICAgaXNJbjoge1xyXG4gICAgICAgICAgICBvcHRpb25zOiBbW1wibmV3XCIsIFwibm90LWNvbXBsZXRlZFwiLCBcImNhbmNlbGVkXCIsIFwiY29tcGxldGVkXCJdXSxcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgbWV0aG9kOiB7XHJcbiAgICAgICAgZXJyb3JNZXNzYWdlOiAnUGxlYXNlIHNlbGVjdCBjb3JyZWN0IHRyYXZlbGxpbmcgbWV0aG9kJyxcclxuICAgICAgICBpc0luOiB7XHJcbiAgICAgICAgICAgIG9wdGlvbnM6IFtbJ0J1cycsICdDYXInLCAnVHJhaW4nLCAnVGhyZWV3aGVlbGVyJywgJ0Zvb3QnXV0sXHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxufVxyXG5cclxuZXhwb3J0cy52YWxpZGF0aW9uUnVsZXMgPSB2YWxpZGF0aW9uUnVsZXM7Il19\",\"originalCode\":\"var validationRules = {\\r\\n id: {\\r\\n in: ['params', 'query'],\\r\\n errorMessage: 'ID is wrong',\\r\\n isInt: true,\\r\\n toInt: true,\\r\\n },\\r\\n name: {\\r\\n errorMessage: 'Name should be at least 2 chars long and maximum of 50 chars',\\r\\n isLength: {\\r\\n options: { min: 2, max: 50 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n description: {\\r\\n errorMessage: 'Description should be at least 2 chars long and maximum of 200 chars',\\r\\n isLength: {\\r\\n options: { min: 2, max: 200 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n distance: {\\r\\n errorMessage: 'Distance should be at least 1 chars long and maximum of 200 chars',\\r\\n isLength: {\\r\\n options: { min: 1, max: 200 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n timeToReach: {\\r\\n errorMessage: 'Time To Reach should be at least 2 chars long and maximum of 200 chars',\\r\\n isLength: {\\r\\n options: { min: 2, max: 200 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n firstname: {\\r\\n errorMessage: 'First Name should be at least 3 chars long and maximum of 50 chars',\\r\\n isLength: {\\r\\n options: { min: 3, max: 50 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n lastname: {\\r\\n errorMessage: 'Last Name should be at least 3 chars long and maximum of 50 chars',\\r\\n isLength: {\\r\\n options: { min: 3, max: 50 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n email: {\\r\\n errorMessage: 'Please enter a valid email address',\\r\\n isEmail: true,\\r\\n trim: true,\\r\\n },\\r\\n mobile: {\\r\\n errorMessage: 'Please enter Phone Number in 10 digits',\\r\\n isLength: {\\r\\n options: { min: 10, max: 10 }\\r\\n },\\r\\n matches: {\\r\\n options: [/^\\\\d{10}$/],\\r\\n errorMessage: \\\"Please enter digits\\\"\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n password: {\\r\\n isLength: {\\r\\n errorMessage: 'Password should be at least 6 chars long',\\r\\n options: { min: 6 }\\r\\n }\\r\\n },\\r\\n confirm_password: {\\r\\n errorMessage: 'Must have the same value as the password field',\\r\\n custom: {\\r\\n options: (value, { req }) => value === req.body.password\\r\\n }\\r\\n },\\r\\n suite: {\\r\\n errorMessage: 'Please select suite type',\\r\\n isIn: {\\r\\n options: [['gold', 'luxury', 'platinum']],\\r\\n }\\r\\n },\\r\\n roomnumber: {\\r\\n errorMessage: 'Room Number should be at least 3 chars long and maximum of 50 chars',\\r\\n isLength: {\\r\\n options: { min: 3, max: 50 }\\r\\n },\\r\\n trim: true\\r\\n },\\r\\n state: {\\r\\n errorMessage: 'Please select correct state',\\r\\n isIn: {\\r\\n options: [[\\\"new\\\", \\\"not-completed\\\", \\\"canceled\\\", \\\"completed\\\"]],\\r\\n }\\r\\n },\\r\\n method: {\\r\\n errorMessage: 'Please select correct travelling method',\\r\\n isIn: {\\r\\n options: [['Bus', 'Car', 'Train', 'Threewheeler', 'Foot']],\\r\\n }\\r\\n },\\r\\n}\\r\\n\\r\\nexports.validationRules = validationRules;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/4b/validation_4b7a8ff68e044daa8c6daa8312a761dc.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2493\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\middleware\\\\validation.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":11520,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":11517,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"options\",\"ranges\":[{\"startOffset\":2073,\"endOffset\":2134,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"var express = require('express');\\n\\nvar router = express.Router();\\n\\nvar Users = require('../models/users');\\n\\nvar passport = require('passport');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nconst signupAdmin = (req, res, next) => {\\n var admin = {\\n username: req.body.email,\\n firstname: req.body.firstname,\\n lastname: req.body.lastname,\\n email: req.body.email,\\n role: 'admin'\\n };\\n Users.register(new Users(admin), req.body.password, (err, user) => {\\n if (err) {\\n res.statusCode = 403;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n status: 'Registration Unsuccessful!'\\n });\\n } else {\\n if (req.body.firstname) user.firstname = req.body.firstname;\\n if (req.body.lastname) user.lastname = req.body.lastname;\\n user.save((err, user) => {\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n status: 'Registration Successful!'\\n });\\n });\\n }\\n });\\n};\\n\\nconst login = (req, res, next) => {\\n passport.authenticate('local', (err, user, info) => {\\n if (!user) {\\n res.statusCode = 401;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n status: 'Login Unsuccessful!',\\n err: info\\n });\\n return next(err);\\n }\\n\\n req.logIn(user, err => {\\n var token = authenticate.getToken({\\n _id: req.user._id,\\n role: user.role\\n });\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n status: 'Login Successful!',\\n token: token\\n });\\n });\\n })(req, res, next);\\n};\\n\\nconst changePassoword = (req, res, next) => {\\n var userId = req.params.id;\\n var newPasswordString = req.body.password;\\n Users.findById(userId).then(function (sanitizedUser) {\\n if (sanitizedUser) {\\n sanitizedUser.setPassword(newPasswordString, function () {\\n sanitizedUser.save();\\n res.statusCode = 200;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: true,\\n message: 'password reset successful'\\n });\\n });\\n } else {\\n res.statusCode = 404;\\n res.setHeader('Content-Type', 'application/json');\\n res.json({\\n success: false,\\n message: 'This user does not exist'\\n });\\n }\\n }, function (err) {\\n next(err);\\n });\\n};\\n\\nconst logout = (req, res) => {\\n if (req.session) {\\n req.session.destroy();\\n res.clearCookie('session-id');\\n } else {\\n var err = new Error('You are not logged in!');\\n err.status = 403;\\n }\\n};\\n\\nexports.signupAdmin = signupAdmin;\\nexports.login = login;\\nexports.logout = logout;\\nexports.changePassoword = changePassoword;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVzZXJDb250cm9sbGVyLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwicm91dGVyIiwiUm91dGVyIiwiVXNlcnMiLCJwYXNzcG9ydCIsImF1dGhlbnRpY2F0ZSIsInNpZ251cEFkbWluIiwicmVxIiwicmVzIiwibmV4dCIsImFkbWluIiwidXNlcm5hbWUiLCJib2R5IiwiZW1haWwiLCJmaXJzdG5hbWUiLCJsYXN0bmFtZSIsInJvbGUiLCJyZWdpc3RlciIsInBhc3N3b3JkIiwiZXJyIiwidXNlciIsInN0YXR1c0NvZGUiLCJzZXRIZWFkZXIiLCJqc29uIiwic3VjY2VzcyIsInN0YXR1cyIsInNhdmUiLCJsb2dpbiIsImluZm8iLCJsb2dJbiIsInRva2VuIiwiZ2V0VG9rZW4iLCJfaWQiLCJjaGFuZ2VQYXNzb3dvcmQiLCJ1c2VySWQiLCJwYXJhbXMiLCJpZCIsIm5ld1Bhc3N3b3JkU3RyaW5nIiwiZmluZEJ5SWQiLCJ0aGVuIiwic2FuaXRpemVkVXNlciIsInNldFBhc3N3b3JkIiwibWVzc2FnZSIsImxvZ291dCIsInNlc3Npb24iLCJkZXN0cm95IiwiY2xlYXJDb29raWUiLCJFcnJvciIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLElBQUlBLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBckI7O0FBQ0EsSUFBSUMsTUFBTSxHQUFHRixPQUFPLENBQUNHLE1BQVIsRUFBYjs7QUFFQSxJQUFJQyxLQUFLLEdBQUdILE9BQU8sQ0FBQyxpQkFBRCxDQUFuQjs7QUFDQSxJQUFJSSxRQUFRLEdBQUdKLE9BQU8sQ0FBQyxVQUFELENBQXRCOztBQUNBLElBQUlLLFlBQVksR0FBR0wsT0FBTyxDQUFDLDRCQUFELENBQTFCOztBQUdBLE1BQU1NLFdBQVcsR0FBRyxDQUFDQyxHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUNwQyxNQUFJQyxLQUFLLEdBQUc7QUFDUkMsSUFBQUEsUUFBUSxFQUFFSixHQUFHLENBQUNLLElBQUos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YkQsRUFhRyxVQUFVdkIsR0FBVixFQUFlO0FBQ2RWLElBQUFBLElBQUksQ0FBQ1UsR0FBRCxDQUFKO0FBQ0gsR0FmRDtBQWdCSCxDQW5CRDs7QUFxQkEsTUFBTXdCLE1BQU0sR0FBRyxDQUFDcEMsR0FBRCxFQUFNQyxHQUFOLEtBQWM7QUFDekIsTUFBSUQsR0FBRyxDQUFDcUMsT0FBUixFQUFpQjtBQUNickMsSUFBQUEsR0FBRyxDQUFDcUMsT0FBSixDQUFZQyxPQUFaO0FBQ0FyQyxJQUFBQSxHQUFHLENBQUNzQyxXQUFKLENBQWdCLFlBQWhCO0FBQ0gsR0FIRCxNQUlLO0FBQ0QsUUFBSTNCLEdBQUcsR0FBRyxJQUFJNEIsS0FBSixDQUFVLHdCQUFWLENBQVY7QUFDQTVCLElBQUFBLEdBQUcsQ0FBQ00sTUFBSixHQUFhLEdBQWI7QUFDSDtBQUNKLENBVEQ7O0FBV0F1QixPQUFPLENBQUMxQyxXQUFSLEdBQXNCQSxXQUF0QjtBQUNBMEMsT0FBTyxDQUFDckIsS0FBUixHQUFnQkEsS0FBaEI7QUFDQXFCLE9BQU8sQ0FBQ0wsTUFBUixHQUFpQkEsTUFBakI7QUFDQUssT0FBTyxDQUFDZixlQUFSLEdBQTBCQSxlQUExQiIsInNvdXJjZXNDb250ZW50IjpbInZhciBleHByZXNzID0gcmVxdWlyZSgnZXhwcmVzcycpO1xyXG52YXIgcm91dGVyID0gZXhwcmVzcy5Sb3V0ZXIoKTtcclxuXHJcbnZhciBVc2VycyA9IHJlcXVpcmUoJy4uL21vZGVscy91c2VycycpO1xyXG52YXIgcGFzc3BvcnQgPSByZXF1aXJlKCdwYXNzcG9ydCcpO1xyXG52YXIgYXV0aGVudGljYXRlID0gcmVxdWlyZSgnLi4vbWlkZGxld2FyZS9hdXRoZW50aWNhdGUnKTtcclxuXHJcblxyXG5jb25zdCBzaWdudXBBZG1pbiA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xyXG4gICAgdmFyIGFkbWluID0ge1xyXG4gICAgICAgIHVzZXJuYW1lOiByZXEuYm9keS5lbWFpbCxcclxuICAgICAgICBmaXJzdG5hbWU6IHJlcS5ib2R5LmZpcnN0bmFtZSxcclxuICAgICAgICBsYXN0bmFtZTogcmVxLmJvZHkubGFzdG5hbWUsXHJcbiAgICAgICAgZW1haWw6IHJlcS5ib2R5LmVtYWlsLFxyXG4gICAgICAgIHJvbGU6ICdhZG1pbidcclxuICAgIH1cclxuICAgIFVzZXJzLnJlZ2lzdGVyKG5ldyBVc2VycyhhZG1pbiksXHJcbiAgICAgICAgcmVxLmJvZHkucGFzc3dvcmQsIChlcnIsIHVzZXIpID0+IHtcclxuICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LVR5cGUnLCAnYXBwbGljYXRpb24vanNvbicpO1xyXG4gICAgICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgc3RhdHVzOiAnUmVnaXN0cmF0aW9uIFVuc3VjY2Vzc2Z1bCEnIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlcS5ib2R5LmZpcnN0bmFtZSlcclxuICAgICAgICAgICAgICAgICAgICB1c2VyLmZpcnN0bmFtZSA9IHJlcS5ib2R5LmZpcnN0bmFtZTtcclxuICAgICAgICAgICAgICAgIGlmIChyZXEuYm9keS5sYXN0bmFtZSlcclxuICAgICAgICAgICAgICAgICAgICB1c2VyLmxhc3RuYW1lID0gcmVxLmJvZHkubGFzdG5hbWU7XHJcbiAgICAgICAgICAgICAgICB1c2VyLnNhdmUoKGVyciwgdXNlcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiB0cnVlLCBzdGF0dXM6ICdSZWdpc3RyYXRpb24gU3VjY2Vzc2Z1bCEnIH0pO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxufVxyXG5cclxuY29uc3QgbG9naW4gPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHBhc3Nwb3J0LmF1dGhlbnRpY2F0ZSgnbG9jYWwnLCAoZXJyLCB1c2VyLCBpbmZvKSA9PiB7XHJcblxyXG4gICAgICAgIGlmICghdXNlcikge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwMTtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgc3RhdHVzOiAnTG9naW4gVW5zdWNjZXNzZnVsIScsIGVycjogaW5mbyB9KTtcclxuICAgICAgICAgICAgcmV0dXJuIG5leHQoZXJyKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmVxLmxvZ0luKHVzZXIsIChlcnIpID0+IHtcclxuICAgICAgICAgICAgdmFyIHRva2VuID0gYXV0aGVudGljYXRlLmdldFRva2VuKHsgX2lkOiByZXEudXNlci5faWQsIHJvbGU6IHVzZXIucm9sZSB9KTtcclxuICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSAyMDA7XHJcbiAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XHJcbiAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgc3RhdHVzOiAnTG9naW4gU3VjY2Vzc2Z1bCEnLCB0b2tlbjogdG9rZW4sIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSkocmVxLCByZXMsIG5leHQpO1xyXG59XHJcblxyXG5jb25zdCBjaGFuZ2VQYXNzb3dvcmQgPSAocmVxLCByZXMsIG5leHQpID0+IHtcclxuICAgIHZhciB1c2VySWQgPSByZXEucGFyYW1zLmlkO1xyXG4gICAgdmFyIG5ld1Bhc3N3b3JkU3RyaW5nID0gcmVxLmJvZHkucGFzc3dvcmQ7XHJcbiAgICBVc2Vycy5maW5kQnlJZCh1c2VySWQpLnRoZW4oZnVuY3Rpb24gKHNhbml0aXplZFVzZXIpIHtcclxuICAgICAgICBpZiAoc2FuaXRpemVkVXNlcikge1xyXG4gICAgICAgICAgICBzYW5pdGl6ZWRVc2VyLnNldFBhc3N3b3JkKG5ld1Bhc3N3b3JkU3RyaW5nLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICBzYW5pdGl6ZWRVc2VyLnNhdmUoKTtcclxuICAgICAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xyXG4gICAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgICAgIHJlcy5qc29uKHsgc3VjY2VzczogdHJ1ZSwgbWVzc2FnZTogJ3Bhc3N3b3JkIHJlc2V0IHN1Y2Nlc3NmdWwnIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwNDtcclxuICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL2pzb24nKTtcclxuICAgICAgICAgICAgcmVzLmpzb24oeyBzdWNjZXNzOiBmYWxzZSwgbWVzc2FnZTogJ1RoaXMgdXNlciBkb2VzIG5vdCBleGlzdCcgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSwgZnVuY3Rpb24gKGVycikge1xyXG4gICAgICAgIG5leHQoZXJyKTtcclxuICAgIH0pO1xyXG59XHJcblxyXG5jb25zdCBsb2dvdXQgPSAocmVxLCByZXMpID0+IHtcclxuICAgIGlmIChyZXEuc2Vzc2lvbikge1xyXG4gICAgICAgIHJlcS5zZXNzaW9uLmRlc3Ryb3koKTtcclxuICAgICAgICByZXMuY2xlYXJDb29raWUoJ3Nlc3Npb24taWQnKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoJ1lvdSBhcmUgbm90IGxvZ2dlZCBpbiEnKTtcclxuICAgICAgICBlcnIuc3RhdHVzID0gNDAzO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnRzLnNpZ251cEFkbWluID0gc2lnbnVwQWRtaW47XHJcbmV4cG9ydHMubG9naW4gPSBsb2dpbjtcclxuZXhwb3J0cy5sb2dvdXQgPSBsb2dvdXQ7XHJcbmV4cG9ydHMuY2hhbmdlUGFzc293b3JkID0gY2hhbmdlUGFzc293b3JkOyJdfQ==\",\"originalCode\":\"var express = require('express');\\r\\nvar router = express.Router();\\r\\n\\r\\nvar Users = require('../models/users');\\r\\nvar passport = require('passport');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\n\\r\\n\\r\\nconst signupAdmin = (req, res, next) => {\\r\\n var admin = {\\r\\n username: req.body.email,\\r\\n firstname: req.body.firstname,\\r\\n lastname: req.body.lastname,\\r\\n email: req.body.email,\\r\\n role: 'admin'\\r\\n }\\r\\n Users.register(new Users(admin),\\r\\n req.body.password, (err, user) => {\\r\\n if (err) {\\r\\n res.statusCode = 403;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, status: 'Registration Unsuccessful!' });\\r\\n }\\r\\n else {\\r\\n if (req.body.firstname)\\r\\n user.firstname = req.body.firstname;\\r\\n if (req.body.lastname)\\r\\n user.lastname = req.body.lastname;\\r\\n user.save((err, user) => {\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, status: 'Registration Successful!' });\\r\\n });\\r\\n }\\r\\n });\\r\\n}\\r\\n\\r\\nconst login = (req, res, next) => {\\r\\n passport.authenticate('local', (err, user, info) => {\\r\\n\\r\\n if (!user) {\\r\\n res.statusCode = 401;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, status: 'Login Unsuccessful!', err: info });\\r\\n return next(err);\\r\\n }\\r\\n req.logIn(user, (err) => {\\r\\n var token = authenticate.getToken({ _id: req.user._id, role: user.role });\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, status: 'Login Successful!', token: token, });\\r\\n });\\r\\n })(req, res, next);\\r\\n}\\r\\n\\r\\nconst changePassoword = (req, res, next) => {\\r\\n var userId = req.params.id;\\r\\n var newPasswordString = req.body.password;\\r\\n Users.findById(userId).then(function (sanitizedUser) {\\r\\n if (sanitizedUser) {\\r\\n sanitizedUser.setPassword(newPasswordString, function () {\\r\\n sanitizedUser.save();\\r\\n res.statusCode = 200;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: true, message: 'password reset successful' });\\r\\n });\\r\\n } else {\\r\\n res.statusCode = 404;\\r\\n res.setHeader('Content-Type', 'application/json');\\r\\n res.json({ success: false, message: 'This user does not exist' });\\r\\n }\\r\\n }, function (err) {\\r\\n next(err);\\r\\n });\\r\\n}\\r\\n\\r\\nconst logout = (req, res) => {\\r\\n if (req.session) {\\r\\n req.session.destroy();\\r\\n res.clearCookie('session-id');\\r\\n }\\r\\n else {\\r\\n var err = new Error('You are not logged in!');\\r\\n err.status = 403;\\r\\n }\\r\\n}\\r\\n\\r\\nexports.signupAdmin = signupAdmin;\\r\\nexports.login = login;\\r\\nexports.logout = logout;\\r\\nexports.changePassoword = changePassoword;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/df/userController_dfcc3c245d97ff3aba4c4e3eb1674b0e.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2494\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\controllers\\\\userController.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":12954,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":12951,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"signupAdmin\",\"ranges\":[{\"startOffset\":313,\"endOffset\":1156,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":553,\"endOffset\":1152,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":926,\"endOffset\":1140,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"login\",\"ranges\":[{\"startOffset\":1173,\"endOffset\":1848,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1228,\"endOffset\":1828,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"\",\"ranges\":[{\"startOffset\":1512,\"endOffset\":1822,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"changePassoword\",\"ranges\":[{\"startOffset\":1875,\"endOffset\":2594,\"count\":0}],\"isBlockCoverage\":false},{\"functionName\":\"logout\",\"ranges\":[{\"startOffset\":2612,\"endOffset\":2800,\"count\":0}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const express = require('express');\\n\\nconst cors = require('cors');\\n\\nconst app = express();\\n\\nconst util = require('util');\\n\\nconst whitelist = ['http://localhost:3000', 'http://localhost:3001', 'https://localhost:5000'];\\n\\nvar corsOptionsDelegate = (req, callback) => {\\n var corsOptions;\\n\\n if (whitelist.indexOf(req.header('Origin')) !== -1) {\\n corsOptions = {\\n origin: true\\n };\\n } else {\\n corsOptions = {\\n origin: false\\n };\\n }\\n\\n callback(null, corsOptions);\\n}; // if we want to allow all origins\\n\\n\\nexports.cors = cors(); // if we want to allow only the whitelisted origins\\n\\nexports.corsWithOptions = cors(corsOptionsDelegate);\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvcnMuanMiXSwibmFtZXMiOlsiZXhwcmVzcyIsInJlcXVpcmUiLCJjb3JzIiwiYXBwIiwidXRpbCIsIndoaXRlbGlzdCIsImNvcnNPcHRpb25zRGVsZWdhdGUiLCJyZXEiLCJjYWxsYmFjayIsImNvcnNPcHRpb25zIiwiaW5kZXhPZiIsImhlYWRlciIsIm9yaWdpbiIsImV4cG9ydHMiLCJjb3JzV2l0aE9wdGlvbnMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBdkI7O0FBQ0EsTUFBTUMsSUFBSSxHQUFHRCxPQUFPLENBQUMsTUFBRCxDQUFwQjs7QUFDQSxNQUFNRSxHQUFHLEdBQUdILE9BQU8sRUFBbkI7O0FBQ0EsTUFBTUksSUFBSSxHQUFHSCxPQUFPLENBQUMsTUFBRCxDQUFwQjs7QUFFQSxNQUFNSSxTQUFTLEdBQUcsQ0FBQyx1QkFBRCxFQUEwQix1QkFBMUIsRUFBbUQsd0JBQW5ELENBQWxCOztBQUNBLElBQUlDLG1CQUFtQixHQUFHLENBQUNDLEdBQUQsRUFBTUMsUUFBTixLQUFtQjtBQUN6QyxNQUFJQyxXQUFKOztBQUNBLE1BQUdKLFNBQVMsQ0FBQ0ssT0FBVixDQUFrQkgsR0FBRyxDQUFDSSxNQUFKLENBQVcsUUFBWCxDQUFsQixNQUE0QyxDQUFDLENBQWhELEVBQW1EO0FBQy9DRixJQUFBQSxXQUFXLEdBQUc7QUFBRUcsTUFBQUEsTUFBTSxFQUFFO0FBQVYsS0FBZDtBQUNILEdBRkQsTUFHSztBQUNESCxJQUFBQSxXQUFXLEdBQUc7QUFBRUcsTUFBQUEsTUFBTSxFQUFFO0FBQVYsS0FBZDtBQUNIOztBQUNESixFQUFBQSxRQUFRLENBQUMsSUFBRCxFQUFPQyxXQUFQLENBQVI7QUFDSCxDQVRELEMsQ0FXQTs7O0FBQ0FJLE9BQU8sQ0FBQ1gsSUFBUixHQUFlQSxJQUFJLEVBQW5CLEMsQ0FFQTs7QUFDQVcsT0FBTyxDQUFDQyxlQUFSLEdBQTBCWixJQUFJLENBQUNJLG1CQUFELENBQTlCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZXhwcmVzcyA9IHJlcXVpcmUoJ2V4cHJlc3MnKTtcclxuY29uc3QgY29ycyA9IHJlcXVpcmUoJ2NvcnMnKTtcclxuY29uc3QgYXBwID0gZXhwcmVzcygpO1xyXG5jb25zdCB1dGlsID0gcmVxdWlyZSgndXRpbCcpO1xyXG5cclxuY29uc3Qgd2hpdGVsaXN0ID0gWydodHRwOi8vbG9jYWxob3N0OjMwMDAnLCAnaHR0cDovL2xvY2FsaG9zdDozMDAxJywgJ2h0dHBzOi8vbG9jYWxob3N0OjUwMDAnXTtcclxudmFyIGNvcnNPcHRpb25zRGVsZWdhdGUgPSAocmVxLCBjYWxsYmFjaykgPT4ge1xyXG4gICAgdmFyIGNvcnNPcHRpb25zO1xyXG4gICAgaWYod2hpdGVsaXN0LmluZGV4T2YocmVxLmhlYWRlcignT3JpZ2luJykpICE9PSAtMSkge1xyXG4gICAgICAgIGNvcnNPcHRpb25zID0geyBvcmlnaW46IHRydWUgfTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGNvcnNPcHRpb25zID0geyBvcmlnaW46IGZhbHNlIH07XHJcbiAgICB9XHJcbiAgICBjYWxsYmFjayhudWxsLCBjb3JzT3B0aW9ucyk7XHJcbn07XHJcblxyXG4vLyBpZiB3ZSB3YW50IHRvIGFsbG93IGFsbCBvcmlnaW5zXHJcbmV4cG9ydHMuY29ycyA9IGNvcnMoKTtcclxuXHJcbi8vIGlmIHdlIHdhbnQgdG8gYWxsb3cgb25seSB0aGUgd2hpdGVsaXN0ZWQgb3JpZ2luc1xyXG5leHBvcnRzLmNvcnNXaXRoT3B0aW9ucyA9IGNvcnMoY29yc09wdGlvbnNEZWxlZ2F0ZSk7Il19\",\"originalCode\":\"const express = require('express');\\r\\nconst cors = require('cors');\\r\\nconst app = express();\\r\\nconst util = require('util');\\r\\n\\r\\nconst whitelist = ['http://localhost:3000', 'http://localhost:3001', 'https://localhost:5000'];\\r\\nvar corsOptionsDelegate = (req, callback) => {\\r\\n var corsOptions;\\r\\n if(whitelist.indexOf(req.header('Origin')) !== -1) {\\r\\n corsOptions = { origin: true };\\r\\n }\\r\\n else {\\r\\n corsOptions = { origin: false };\\r\\n }\\r\\n callback(null, corsOptions);\\r\\n};\\r\\n\\r\\n// if we want to allow all origins\\r\\nexports.cors = cors();\\r\\n\\r\\n// if we want to allow only the whitelisted origins\\r\\nexports.corsWithOptions = cors(corsOptionsDelegate);\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/34/cors_34beef0e65d7cfb3f2bb7a05fb9de802.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2495\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\cors.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":2982,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.
\",\"ranges\":[{\"startOffset\":23,\"endOffset\":2979,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"corsOptionsDelegate\",\"ranges\":[{\"startOffset\":335,\"endOffset\":573,\"count\":2}],\"isBlockCoverage\":false}]}},{\"codeTransformResult\":{\"code\":\"const express = require('express');\\n\\nconst bodyParser = require('body-parser');\\n\\nconst {\\n checkSchema\\n} = require('express-validator');\\n\\nconst cors = require('./cors');\\n\\nvar authenticate = require('../middleware/authenticate');\\n\\nvar validationRules = require('../middleware/validation');\\n\\nconst employeeController = require('../controllers/employeeController');\\n\\nconst employeeRouter = express.Router();\\nemployeeRouter.use(bodyParser.json()); // **********************************************************************************\\n// \\n// Employee Routes\\n// \\n// **********************************************************************************\\n\\nemployeeRouter.route('/').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.getAllEmployees).post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.addEmployee).put(cors.corsWithOptions, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('PUT operation not supported on /employees');\\n}).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.deleteAllEmployees);\\nemployeeRouter.route('/search').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.getAllEmployeesByName); // **********************************************************************************\\n// \\n// Employee Routes Specified by ID\\n// \\n// **********************************************************************************\\n\\nemployeeRouter.route('/:employeeId').options(cors.corsWithOptions, (req, res) => {\\n res.sendStatus(200);\\n}).get(cors.cors, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.getEmployeeDetailsById).post(cors.corsWithOptions, (req, res, next) => {\\n res.statusCode = 403;\\n res.end('POST operation not supported on /employees/' + req.params.employeeId);\\n}).put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.updateEmployeeDetailsById).delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.deleteAEmployeeById);\\nmodule.exports = employeeRouter;\\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImVtcGxveWVlUm91dGVyLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwiYm9keVBhcnNlciIsImNoZWNrU2NoZW1hIiwiY29ycyIsImF1dGhlbnRpY2F0ZSIsInZhbGlkYXRpb25SdWxlcyIsImVtcGxveWVlQ29udHJvbGxlciIsImVtcGxveWVlUm91dGVyIiwiUm91dGVyIiwidXNlIiwianNvbiIsInJvdXRlIiwib3B0aW9ucyIsImNvcnNXaXRoT3B0aW9ucyIsInJlcSIsInJlcyIsInNlbmRTdGF0dXMiLCJnZXQiLCJ2ZXJpZnlVc2VyIiwidmVyaWZ5QWRtaW4iLCJnZXRBbGxFbXBsb3llZXMiLCJwb3N0IiwiYWRkRW1wbG95ZWUiLCJwdXQiLCJuZXh0Iiwic3RhdHVzQ29kZSIsImVuZCIsImRlbGV0ZSIsImRlbGV0ZUFsbEVtcGxveWVlcyIsImdldEFsbEVtcGxveWVlc0J5TmFtZSIsImdldEVtcGxveWVlRGV0YWlsc0J5SWQiLCJwYXJhbXMiLCJlbXBsb3llZUlkIiwidXBkYXRlRW1wbG95ZWVEZXRhaWxzQnlJZCIsImRlbGV0ZUFFbXBsb3llZUJ5SWQiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxPQUFPLEdBQUdDLE9BQU8sQ0FBQyxTQUFELENBQXZCOztBQUNBLE1BQU1DLFVBQVUsR0FBR0QsT0FBTyxDQUFDLGFBQUQsQ0FBMUI7O0FBQ0EsTUFBTTtBQUFFRSxFQUFBQTtBQUFGLElBQWtCRixPQUFPLENBQUMsbUJBQUQsQ0FBL0I7O0FBQ0EsTUFBTUcsSUFBSSxHQUFHSCxPQUFPLENBQUMsUUFBRCxDQUFwQjs7QUFDQSxJQUFJSSxZQUFZLEdBQUdKLE9BQU8sQ0FBQyw0QkFBRCxDQUExQjs7QUFDQSxJQUFJSyxlQUFlLEdBQUdMLE9BQU8sQ0FBQywwQkFBRCxDQUE3Qjs7QUFDQSxNQUFNTSxrQkFBa0IsR0FBR04sT0FBTyxDQUFDLG1DQUFELENBQWxDOztBQUVBLE1BQU1PLGNBQWMsR0FBR1IsT0FB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cHJlc3MnKTtcclxuY29uc3QgYm9keVBhcnNlciA9IHJlcXVpcmUoJ2JvZHktcGFyc2VyJyk7XHJcbmNvbnN0IHsgY2hlY2tTY2hlbWEgfSA9IHJlcXVpcmUoJ2V4cHJlc3MtdmFsaWRhdG9yJyk7XHJcbmNvbnN0IGNvcnMgPSByZXF1aXJlKCcuL2NvcnMnKTtcclxudmFyIGF1dGhlbnRpY2F0ZSA9IHJlcXVpcmUoJy4uL21pZGRsZXdhcmUvYXV0aGVudGljYXRlJyk7XHJcbnZhciB2YWxpZGF0aW9uUnVsZXMgPSByZXF1aXJlKCcuLi9taWRkbGV3YXJlL3ZhbGlkYXRpb24nKTtcclxuY29uc3QgZW1wbG95ZWVDb250cm9sbGVyID0gcmVxdWlyZSgnLi4vY29udHJvbGxlcnMvZW1wbG95ZWVDb250cm9sbGVyJyk7XHJcblxyXG5jb25zdCBlbXBsb3llZVJvdXRlciA9IGV4cHJlc3MuUm91dGVyKCk7XHJcblxyXG5lbXBsb3llZVJvdXRlci51c2UoYm9keVBhcnNlci5qc29uKCkpO1xyXG5cclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4vLyBcclxuLy8gICAgICAgICAgICAgIEVtcGxveWVlIFJvdXRlc1xyXG4vLyBcclxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuZW1wbG95ZWVSb3V0ZXIucm91dGUoJy8nKVxyXG4gICAgLm9wdGlvbnMoY29ycy5jb3JzV2l0aE9wdGlvbnMsIChyZXEsIHJlcykgPT4geyByZXMuc2VuZFN0YXR1cygyMDApOyB9KVxyXG4gICAgLmdldChjb3JzLmNvcnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCBhdXRoZW50aWNhdGUudmVyaWZ5QWRtaW4sICBlbXBsb3llZUNvbnRyb2xsZXIuZ2V0QWxsRW1wbG95ZWVzKVxyXG4gICAgLnBvc3QoY29ycy5jb3JzV2l0aE9wdGlvbnMsYXV0aGVudGljYXRlLnZlcmlmeVVzZXIsIGF1dGhlbnRpY2F0ZS52ZXJpZnlBZG1pbiwgZW1wbG95ZWVDb250cm9sbGVyLmFkZEVtcGxveWVlKVxyXG4gICAgLnB1dChjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgcmVzLmVuZCgnUFVUIG9wZXJhdGlvbiBub3Qgc3VwcG9ydGVkIG9uIC9lbXBsb3llZXMnKTtcclxuICAgIH0pXHJcbiAgICAuZGVsZXRlKGNvcnMuY29yc1dpdGhPcHRpb25zLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeUFkbWluLCAgZW1wbG95ZWVDb250cm9sbGVyLmRlbGV0ZUFsbEVtcGxveWVlcyk7XHJcbmVtcGxveWVlUm91dGVyLnJvdXRlKCcvc2VhcmNoJylcclxuICAgIC5vcHRpb25zKGNvcnMuY29yc1dpdGhPcHRpb25zLCAocmVxLCByZXMpID0+IHsgcmVzLnNlbmRTdGF0dXMoMjAwKTsgfSlcclxuICAgIC5wb3N0KGNvcnMuY29yc1dpdGhPcHRpb25zLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeUFkbWluLCBlbXBsb3llZUNvbnRyb2xsZXIuZ2V0QWxsRW1wbG95ZWVzQnlOYW1lKTtcclxuXHJcbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuLy8gXHJcbi8vICAgICAgICAgICAgICBFbXBsb3llZSBSb3V0ZXMgU3BlY2lmaWVkIGJ5IElEXHJcbi8vIFxyXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcblxyXG5lbXBsb3llZVJvdXRlci5yb3V0ZSgnLzplbXBsb3llZUlkJylcclxuICAgIC5vcHRpb25zKGNvcnMuY29yc1dpdGhPcHRpb25zLCAocmVxLCByZXMpID0+IHsgcmVzLnNlbmRTdGF0dXMoMjAwKTsgfSlcclxuICAgIC5nZXQoY29ycy5jb3JzLCBhdXRoZW50aWNhdGUudmVyaWZ5VXNlciwgYXV0aGVudGljYXRlLnZlcmlmeUFkbWluLCAgZW1wbG95ZWVDb250cm9sbGVyLmdldEVtcGxveWVlRGV0YWlsc0J5SWQpXHJcbiAgICAucG9zdChjb3JzLmNvcnNXaXRoT3B0aW9ucywgKHJlcSwgcmVzLCBuZXh0KSA9PiB7XHJcbiAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA0MDM7XHJcbiAgICAgICAgcmVzLmVuZCgnUE9TVCBvcGVyYXRpb24gbm90IHN1cHBvcnRlZCBvbiAvZW1wbG95ZWVzLycgKyByZXEucGFyYW1zLmVtcGxveWVlSWQpO1xyXG4gICAgfSlcclxuICAgIC5wdXQoY29ycy5jb3JzV2l0aE9wdGlvbnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCBhdXRoZW50aWNhdGUudmVyaWZ5QWRtaW4sICBlbXBsb3llZUNvbnRyb2xsZXIudXBkYXRlRW1wbG95ZWVEZXRhaWxzQnlJZClcclxuICAgIC5kZWxldGUoY29ycy5jb3JzV2l0aE9wdGlvbnMsIGF1dGhlbnRpY2F0ZS52ZXJpZnlVc2VyLCBhdXRoZW50aWNhdGUudmVyaWZ5QWRtaW4sICBlbXBsb3llZUNvbnRyb2xsZXIuZGVsZXRlQUVtcGxveWVlQnlJZCk7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IGVtcGxveWVlUm91dGVyOyJdfQ==\",\"originalCode\":\"const express = require('express');\\r\\nconst bodyParser = require('body-parser');\\r\\nconst { checkSchema } = require('express-validator');\\r\\nconst cors = require('./cors');\\r\\nvar authenticate = require('../middleware/authenticate');\\r\\nvar validationRules = require('../middleware/validation');\\r\\nconst employeeController = require('../controllers/employeeController');\\r\\n\\r\\nconst employeeRouter = express.Router();\\r\\n\\r\\nemployeeRouter.use(bodyParser.json());\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Employee Routes\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nemployeeRouter.route('/')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.getAllEmployees)\\r\\n .post(cors.corsWithOptions,authenticate.verifyUser, authenticate.verifyAdmin, employeeController.addEmployee)\\r\\n .put(cors.corsWithOptions, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('PUT operation not supported on /employees');\\r\\n })\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.deleteAllEmployees);\\r\\nemployeeRouter.route('/search')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .post(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.getAllEmployeesByName);\\r\\n\\r\\n// **********************************************************************************\\r\\n// \\r\\n// Employee Routes Specified by ID\\r\\n// \\r\\n// **********************************************************************************\\r\\n\\r\\nemployeeRouter.route('/:employeeId')\\r\\n .options(cors.corsWithOptions, (req, res) => { res.sendStatus(200); })\\r\\n .get(cors.cors, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.getEmployeeDetailsById)\\r\\n .post(cors.corsWithOptions, (req, res, next) => {\\r\\n res.statusCode = 403;\\r\\n res.end('POST operation not supported on /employees/' + req.params.employeeId);\\r\\n })\\r\\n .put(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.updateEmployeeDetailsById)\\r\\n .delete(cors.corsWithOptions, authenticate.verifyUser, authenticate.verifyAdmin, employeeController.deleteAEmployeeById);\\r\\n\\r\\nmodule.exports = employeeRouter;\",\"sourceMapPath\":\"C:/Users/Avishka/AppData/Local/Temp/jest/jest-transform-cache-009e07d50e1a80b30cc1211360f0dbe6-d1d5bfaad8659acd06069518d3e76e6c/3b/employeeRouter_3bb83cd3174a28ed34e0f44c133b9b42.map\",\"wrapperLength\":89},\"result\":{\"scriptId\":\"2496\",\"url\":\"D:\\\\ShiftedFromC\\\\hlmsServer\\\\routes\\\\employeeRouter.js\",\"functions\":[{\"functionName\":\"\",\"ranges\":[{\"startOffset\":0,\"endOffset\":9455,\"count\":1}],\"isBlockCoverage\":false},{\"functionName\":\"Object.